Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   findfirst, findnext problem (https://www.delphipraxis.net/110374-findfirst-findnext-problem.html)

youu 17. Mär 2008 10:17

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,

Aurelius 17. Mär 2008 10:20

Re: findfirst, findnext problem
 
Das könntest du imho per Pos(Zeilentext,Suchtext) machen...

taaktaak 17. Mär 2008 10:20

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;

youu 17. Mär 2008 10:25

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:
ZW:= GetXLine(Path + LBZWDateipfad.Items.Strings[i], 2);
Path = Pfad in der die Dateien liegen
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:
if ZW = suche* then        // Fehlerhafte code
machen nur so gehts ja nicht.

kannst du mir da ein bespiel geben mit der Pos oder gehts anderst?

taaktaak 17. Mär 2008 10:42

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!

youu 17. Mär 2008 10:47

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

taaktaak 17. Mär 2008 10:53

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 ...

youu 17. Mär 2008 11:00

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

taaktaak 17. Mär 2008 11:04

Re: findfirst, findnext problem
 
Prima, hab' gern geholfen :thumb:

DP-Maintenance 17. Mär 2008 14:21

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 15:32 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz