![]() |
Re: findfirst, findnext problem
Sorry hab wohl vergessen etwas dazu zu schreiben.
ALso es ist so ich suche in jeder Datei die in Ordner xyz gefunden wurde Zeile 2 und lese sie aus. BIS DAHIN KEIN PROBLEM. nun mein Problem das wort welches auslesen werden soll soll Suche* sein also zb. Suchehasel oder Suchexyz * soll dabei der Platzhalter sein. Es geht also nicht um eine Datei sondern um einen Text in einer Textdatei. Das sozusagen alle Wörter mit Suche* gefunden werden und dann gespeichert. Ich hoffe es kam halbwegs verständlich rüber, |
Re: findfirst, findnext problem
Das könntest du imho per Pos(Zeilentext,Suchtext) machen...
|
Re: findfirst, findnext problem
Das ist nicht ausreichend, dann müssen die beiden Strings etwas umfangreicher verglichen werden, z.B. so...
Delphi-Quellcode:
function MatchStr(Source,Pattern:String;CaseSensitive:Boolean):Boolean;
function Match(Source,Pattern:PChar):Boolean; begin if StrComp(Pattern,'*')=0 then Result:=true else if (Source^=Chr(0)) and (Pattern^<>Chr(0)) then Result:=false else if Source^=Chr(0) then Result:=true else case Pattern^ of '*': if Match(Source,@Pattern[1]) then Result:=true else Result:=Match(@Source[1],Pattern); '?': Result:=Match(@Source[1],@Pattern[1]); else if Source^=Pattern^ then Result:=Match(@Source[1],@Pattern[1]) else Result:=false; end; end; begin if not(CaseSensitive) then begin Source :=AnsiLowerCase(Source); Pattern:=AnsiLowerCase(Pattern); end; Result:=Match(PChar(Source),PChar(Pattern)) end; |
Re: findfirst, findnext problem
Momentan hab ich eine Funktion die es mir ermöglicht eine bestimmte Zeile einer Textdatei auszulesen.
Delphi-Quellcode:
// Funktion zum auslesen einer bestimmten Zeile.
function GetXLine(FileName:String;Line:integer):String; var f:Textfile; i:Integer; s:String; begin result:=''; assignfile(f,FileName); reset(f); i := 0; while(not eof(f)) and (i<=Line) do begin inc(i); readln(f,s); if i = Line then result := s; end; closefile(f); end; Aufrufen tu ich sie mir
Delphi-Quellcode:
Path = Pfad in der die Dateien liegen
ZW:= GetXLine(Path + LBZWDateipfad.Items.Strings[i], 2);
LBZWDateipfad.Items.Strings[i] = Alle Dateien aus dem Ordner die nach und nach abgegangen werden und die 2 ist halt die Zeile die ausgelesen wird. nur würd ich gern dann:
Delphi-Quellcode:
machen nur so gehts ja nicht.
if ZW = suche* then // Fehlerhafte code
kannst du mir da ein bespiel geben mit der Pos oder gehts anderst? |
Re: findfirst, findnext problem
Moin youu,
ich setzte voraus, dass ZW ein gültiger String ist, was ist aber "suche*" ? Soll das Suchmuster "suche*' sein? Dann setzte MatchStr(ZW,'suche*',false) ein! |
Re: findfirst, findnext problem
Hm deine Funktion gibt doch einen Boolean werd zurück und keinen String? oder hab ich etwas übersehen?
Somit wird die Fehlermeldung string und boolean inkompatible typen erscheinen? ZW ist eine variable zwischenspeicher : string Suche ist das Suchwort des Nutzers : string * sollte nur eine Art Platzhalter sein bzw Wildcard welches allerdings nicht in der Form in einer If Anweisung funktioniert |
Re: findfirst, findnext problem
Also, jetzt verstehe ich dich leider nicht. Du willst doch mit "if ZW=suche* then ..." prüfen, und an dieser Stelle setzt du einfach MatchStr() ein ...
|
Re: findfirst, findnext problem
Oh mein Gott war ich dumm.
Habs nun gesehen was du meintest, teste es gleich. Edit: hat super geklappt danke dir für die Geduld |
Re: findfirst, findnext problem
Prima, hab' gern geholfen :thumb:
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz