Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

1

16.04.2008, 20:26

Mehrere Millionen Daten abfragen (Visual Basic)

Hi,

erstmal sorry für den wahrscheinlich nicht wirklich aussagekräftigen Threadtitel, aber ich wusste nicht, wie ich mein "Problem" in einem kurzen Satz besser beschreiben könnte.

Nun zum "Problem":

Nehmen wir als Beispiel einmal den Hex-Code: "A73FB1"
Dieser soll aus allen Hexadezimal-Codes herausgefiltert werden.

Man müsste ja jetzt anfangen mit dem Hex-Code: "000000" und enden mit "FFFFFF".

Lösen könnte man das ja theoretisch mit 6 For-Schleifen ( :oops: ). Eine nicht wirklich gute Idee, wie ich erkannt habe.

Als Beispiel ein kurzer Pseudo-Code in VB 6.0:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
....

For a = 0 To 15

   For b = 0 To 15

      For c = 0 To 15

         For d = 0 To 15

            For e = 0 To 15

               For f = 0 To 15

                  HexCode = GibHexCode(a, b, c, d, e, f)

                  If HexCode = "A73FB1" Then

                     Exit Sub

                  End If

               Next f

            Next e

         Next d

      Next c

   Next b

Next a

...


GibHexCode wäre dann eine Funktion, die die übergebenen Werte in einen Hex-Code-String umwandelt und diesen zurückgibt.

Diese "Lösung", wenn man sie so nennen kann, nimmt ja viel zu viel Rechenzeit in Anspruch und dauert wohl ewig lang...

Wie könnte man das schneller lösen?

... Ich hoffe ihr konntet mein Anliegen verstehen ... ich habs versucht so gut wie möglich zu erklären ...

wär klasse, wenn ihr mir einen guten Lösungs-Ansatz nennen könntet :) .

MfG
denjo
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

16.04.2008, 20:34

Was musst du da rausfiltern? Du hast doch die Adresse bereits?!

3

16.04.2008, 20:41

Erzähl uns mal ganz genau, was du vor hast.
Und sag uns nicht nur den Weg, sondern das Ziel (vergisst alles was du dir schon überlegt hast und sag uns das ursprünglichste aller deiner Probleme).
Lieber dumm fragen, als dumm bleiben!

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

4

16.04.2008, 20:45

Hi,

oh sry ... mir ist gerade auch aufgefallen, dass ich mein Problem ein wenig falsch beschrieben habe.

Ich meinte, dass irgendein (oder auch mehrere) Hex-Code dieser Art einen Wert enthält (Beispiel: die Zahl 1000). Und dieser Wert (oder auch all diese Werte) soll mit Hex-Code aufgelistet werden.

Also:

Durchsucht werden alle Codes von "000000" bis "FFFFFF" und wenn einer dieser Codes die Zahl 1000 enthält soll er aufgelistet werden:
1DEB89 | 1000
A73FB1 | 1000
C44FF6 | 1000

Der Rest wird ignoriert!

Hoffe es ist jetzt verständlich... :)

Edit:

Zum Vorhanben: Mich interessiert einfach nur der schnellste Weg. Mir ist dies einfach mal eingefallen und ich wollte wissen, wie es am schnellsten geht... Da ich leider mit meinem Versuch gescheitert bin, wollte ich hier mal nachfragen, ob einer eine bessere Idee hat.
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

16.04.2008, 20:50

Also wenn du so oder so JEDEN Wert durchgehenmusst, dann gibt es imho keine andere Möglichkeit..

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

6

16.04.2008, 20:55

1DEB89 == 1960841
A73FB1 == 10960817
C44FF6 == 12865526

ich versteh nich, was diese Zahlen mit der 1000 zu tun haben sollen und verstehe somit das ganze Problem incl. Zielstellung nicht.


// €dit [OT]: endlich hab ich diese verflixten 1337 Beiträge ohne Party überrundet :lol:

spacegaier

Alter Hase

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

7

17.04.2008, 11:10

Für jede Zahl existiert doch genau ein Hex-Code !!!

Oder willst du alle möglichen (schwachsinninge) Möglichkeiten, mittels derer man umständlicherweise die gleiche Zahl darstellen kann?

denjo

Treue Seele

  • »denjo« ist der Autor dieses Themas

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

8

17.04.2008, 16:21

Zitat von »"grek40"«

1DEB89 == 1960841
A73FB1 == 10960817
C44FF6 == 12865526

ich versteh nich, was diese Zahlen mit der 1000 zu tun haben sollen und verstehe somit das ganze Problem incl. Zielstellung nicht.


// €dit [OT]: endlich hab ich diese verflixten 1337 Beiträge ohne Party überrundet :lol:


1. Glückwunsch zu den 1338 :p
2. Also der Hex-Code soll nur ein Platzhalter (genauso wie die Zahl/oder was auch immer) sein... (weitere Beschreibung => weiter unten)

Zitat von »"spacegaier"«


Für jede Zahl existiert doch genau ein Hex-Code !!!
Oder willst du alle möglichen (schwachsinninge) Möglichkeiten, mittels derer man umständlicherweise die gleiche Zahl darstellen kann?


Ja schwachsinnig ist es in der Hinsicht schon .... also du hast es eigentlich erfasst. ich möchte alle möglichen Hex-Code Werte durchlaufen! Wie oben schon gesagt, ist das eigentlich nur ein Platzhalter für einen großen Datensatz.
Ich habe mich nur gefragt, wie man einen riesigen Datensatz möglichst schnell abfragt. Das Hexadezimalsystem steht also sozusagen dafür. Da es ja mehrere Millionen mögliche Farbwerte gibt. Dabei geht es auch nicht um die Farbwerte sondern einfach nur, wie man am schnellsten all diese Werte durchläuft.
Vorgestellt hatte ich mir beispielsweise, dass es in dieser riesen Datenmenge irgendwo einen Datensatz gibt, der eben (z. B.) diesen Wert von 1000 trägt. Und der soll jetzt herausgefunden werden.

Sry für diese nicht wirklich gut formulierten Problemstellungen, aber ich weiß einfach nicht, wie ich es besser beschreiben soll...

Es ist jetzt nicht so wichtig, dass ich es für irgendein Programm, oder sonst etwas benötige, ich habe mich einfach nur danach gefragt, wie man einen Datensatz schnellst möglich aus einer riesigen Datenmenge rausfiltern kann.
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

9

17.04.2008, 17:06

Ich glaube ich habe jetzt begriffen was du meinst. ;)

Also wenn der Datensatz keine spezielle Struktur hat oder du die Struktur nicht kennst und du einamal etwas rausfiltern willst, dann gibt es nichts schnelleres als alle Daten durchzugehen.
Hast du aber zum Beispiel einen Datensatz von dem du weisst dass du oft irgendetwas rausfiltern willst könntest du den Datensatz zum Beispiel sortieren oder einen Baum daraus generieren. Damit wären künftige Filteranfragen wesentlich schneller.

Es gibt da viele Möglichkeiten so was schneller zu machen aber das kommt immer auf die konkrete Anwendung an. Für eine einzelne Filteranfrage auf einen unstrukturierten Datensatz gibt es aber nichts schnelleres.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

10

17.04.2008, 18:00

Du willst also suchen oder wie?
Dafür ist eigentlich ein Baum ziemlich geil. Wenn du jedoch alle Daten durchlaufen willst, naja, dafür muss man eben alle Daten durchlaufen, das dauert lange und lässt sich nicht abkürzen.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige