Seite 3 von 9
Verfasst: 17.08.2006 23:29
von NicTheQuick
Wegen dem SelectRowByEntry. Die Funktion sucht immer ab der aktuellen
Zeile plus eins. Da fällt mir aber gerade ein, dass dann die erste Zeile nie
gefunden werden kann.
Na das werde ich dann mal morgen verbessern vielleicht mit einem
optionalen Parameter. Aber das mit der LinkedList ist eine gute Idee. Dann
gebe ich eine Liste zurück mit allen Indices, wo der Suchbegriff gefunden
wurde.
Bis morgen dann.
Verfasst: 18.08.2006 12:17
von NicTheQuick
Ich wollte gerade das mit der Suchergebnis-in-LinkedList-Geschichte zu Ende
bringen, da hab ich einen Bug gefunden.
Man kann in einem Interface als Parameter einer Funktion keine LinkedList
angeben.
Also das geht nicht:
Während das hier geht:
Also widme ich mich erstmal den Wildcards.

Verfasst: 18.08.2006 17:11
von NicTheQuick
So, es ist vollbracht. Die Änderungen im Überblick:
- Changed: Alle SelectRowByEntry()-Funktionen beginnen die Suche
auf der aktuellen Zeile. Also vorher immer FirstRow() benutzen, wenn es
nicht anders gewünscht ist
- Changed: SelectRowByEntryS() funktioniert jetzt auch mit Wildcards,
wenn der optionale Parameter mask auf #True gesetzt wird.
- Added: SelectRowByEntryD() wählt auf Wunsch alle Doubles aus, die in
einem bestimmten Bereich liegen, den man mit dem Parameter range
angeben kann. Praktisch wegen den Ungenauigkeiten bei
Fließkommazahlen
- Added: Alle DB_ListByEntry()-Funktionen funktionieren wie die
SelectRowByEntry()-Funktionen, erwarten aber eine LinkedList des Typs l,
in die alle Indices geschrieben werden, wo der Suchparameter zutrifft.
Leider kann ich die Funktionen nicht ins Interface mitaufnehmen, weil dort
keine LinkedLists angenommen werden. Bug?
Der neue Code wie immer im ersten Post
Verfasst: 18.08.2006 21:25
von ts-soft
Vielleicht beim nächstem Update zusätzlich als Zip anbieten, 1225 Zeilen
kopieren ist nicht so das Wahre

Verfasst: 19.08.2006 00:54
von Kiffi
NicTheQuick hat geschrieben:So, es ist vollbracht.
Super! Den ersten 'Extremtest' (scannen meiner C-Partition und eintragen
der gefundenen Dateien) hat Deine 'DB' schon mal klaglos überstanden
Morgen geht's an die Suchfunktionen
Vielen Dank für Deine Mühen!
ts-soft hat geschrieben:1225 Zeilen kopieren ist nicht so das Wahre
Weichei!
Grüße ... Kiffi
Verfasst: 19.08.2006 01:15
von ts-soft
Kiffi hat geschrieben:ts-soft hat geschrieben:t;]1225 Zeilen kopieren ist nicht so das Wahre
Weichei!
Grüße ... Kiffi
Ne, kaputte Maus

Verfasst: 19.08.2006 12:50
von Kiffi
Funktioniert bisher alles sehr zufriedenstellend
ich habe mir mal erlaubt, ein optionales Flag 'MatchCase' einzubauen,
damit DB_ListByEntryS() Treffer unabhängig von der Groß- und
Kleinschreibung des Suchbegriffes zurückliefert.
folgende kleine Änderungen sind dafür nötig:
Im Interface:
Code: Alles auswählen
SelectRowByEntryS(Col.l, Entry.s, mask.l = #False, MatchCase.l = #False)
In DB_SelectRowByEntryS()
Code: Alles auswählen
Procedure.l DB_SelectRowByEntryS(*DB.DB_Struc, Col.l, Entry.s, mask.l = #False, MatchCase.l = #False) ;Wählt eine Zeile aus
[...]
Case 's'
If mask
If MatchCase
If CompareWithWildcards(*vEntry\s, Entry) : Break : EndIf
Else
If CompareWithWildcards(LCase(*vEntry\s), LCase(Entry)) : Break : EndIf
EndIf
Else
If MatchCase
If *vEntry\s = Entry : Break : EndIf
Else
If LCase(*vEntry\s) = LCase(Entry) : Break : EndIf
EndIf
EndIf
[...]
EndProcedure
in DB_ListByEntryS()
Code: Alles auswählen
Procedure.l DB_ListByEntryS(*DB.DB_Struc, List.l(), Col.l, Entry.s, mask.l = #False, MatchCase.l = #False)
[...]
While *DBI\SelectRowByEntryS(Col, Entry, mask, MatchCase)
[...]
EndProcedure
Aufruf wie folgt:
Code: Alles auswählen
DB_ListByEntryS(*DB, Found(), 3, "*.ZIP", #True, #True) ; findet nur *.ZIP-Dateien
DB_ListByEntryS(*DB, Found(), 3, "*.zip", #True, #True) ; findet nur *.zip-Dateien
DB_ListByEntryS(*DB, Found(), 3, "*.zip", #True, #False) ; findet *.zip, *.ZIP, *.ZiP, *.zIP, ...
Danke & Grüße ... Kiffi
Verfasst: 19.08.2006 19:52
von NicTheQuick
@Kiffi:
Das mit dem MatchCase ist eine gute Idee. Das hatte ich auch noch
im Hinterkopf. Ich werde meinen Code, wenn ich mehr Zeit habe nach deiner
Idee umstellen und wieder in den ersten Post setzen.
@ts-soft:
Ein ZIP für eine kleine "Text-Datei" ist etwas übertrieben. Dann lade ich die
Datei lieber irgendwo hoch und gib einen Link dazu an. Leider kann ich das
dann immer nur zu Hause machen und nicht an der UNI. Da hab ich kein
FTP-Programm installiert. Aber vielleicht wäre es ja an der Zeit das mal zu
tun.
Ansonsten Danke für die Tests. Ich hab mich über das positive Feedback
gefreut. Für Vorschläge und Verbesserungen bin ich wie immer offen. Also
nur her damit!
@Kiffi nochmal: Wenn du weißt, dass du viele Datensätze speichern willst,
könnte das ganze noch schneller werden, wenn du die Konstante
#DB_ChunkRows erhöst. Die Rows werden nämlich immer Blockweise
allokiert um den Speicher nicht zu oft verschieben zu müssen, wer's noch
nicht gemerkt hat.

Verfasst: 19.08.2006 22:34
von ts-soft
NicTheQuick hat geschrieben:
@ts-soft:
Ein ZIP für eine kleine "Text-Datei" ist etwas übertrieben. Dann lade ich die
Datei lieber irgendwo hoch und gib einen Link dazu an.
Als Zip wirds aber immer gedownloadet

. *.pb wird mir als Text angezeigt

Verfasst: 20.08.2006 12:21
von bluejoke
Rechte Maustaste, speichern unter... Naja, weisst du bestimmt, aber sowas zu zippen finde ich auch übertrieben, wiegt doch kaum mehr als ne normale Webseite.