AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

findfirst, findnext problem

Ein Thema von youu · begonnen am 17. Mär 2008 · letzter Beitrag vom 17. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
youu

Registriert seit: 10. Mär 2008
29 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:17
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,
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#12

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:20
Das könntest du imho per Pos(Zeilentext,Suchtext) machen...
Jonas
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#13

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:20
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;
Ralph
  Mit Zitat antworten Zitat
youu

Registriert seit: 10. Mär 2008
29 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:25
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

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:
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?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#15

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:42
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!
Ralph
  Mit Zitat antworten Zitat
youu

Registriert seit: 10. Mär 2008
29 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:47
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
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#17

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 10:53
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 ...
Ralph
  Mit Zitat antworten Zitat
youu

Registriert seit: 10. Mär 2008
29 Beiträge
 
Delphi 2007 Enterprise
 
#18

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 11:00
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
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#19

Re: findfirst, findnext problem

  Alt 17. Mär 2008, 11:04
Prima, hab' gern geholfen
Ralph
  Mit Zitat antworten Zitat
17. Mär 2008, 14:21
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.
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