![]() |
AW: "Pos" findet String wegen Einrückung nicht
Zitat:
"Trim" hat übrigens auch nichts geholfen. TrimLeft auch nicht. Wenn ich es in der Textdatei einrücke, wird es da auch nicht mehr gefunden. |
AW: "Pos" findet String wegen Einrückung nicht
Zitat:
|
AW: "Pos" findet String wegen Einrückung nicht
Zitat:
|
AW: "Pos" findet String wegen Einrückung nicht
Delphi-Quellcode:
Also, wenn der Suchbegriff erst in der zweiten Zeile steht, klappt das schon nicht mehr.
var
sList: TStringList; Index: integer; begin sList := TStringList.Create; Result := -1; sList := TStringList.Create; sList.LoadFromFile(FileName); // for Index := 0 to sList.Count do // Falsch for Index := 0 to sList.Count-1 do if Pos(SearchText, sList.Strings[Index]) > 0 then begin Result := Index; sList.Free; Exit; end else ShowMessage('Einstiegspunkt wurde nicht gefunden.'); sList.Free; end; Deswegen bist du auch der Meinung, dass IndexOf besser funktioniert. Aber dort bekommst du Probleme, wenn du mit Einrückungen (führenden Leerzeichen) arbeitest. Meine Prüfung sähe so aus, wenn ich deinen Stil beibehalte:
Delphi-Quellcode:
Der Unterschied ist, dass ich nicht in der Schleife prüfe, ob der Einstiegspunkt falsch ist, sondern nach der Schleife prüfe, ob ein gültiges Ergebnis vorliegt.
var
sList: TStringList; Index: integer; begin sList := TStringList.Create; Result := -1; sList := TStringList.Create; sList.LoadFromFile(FileName); for Index := 0 to sList.Count-1 do if Pos(SearchText, sList.Strings[Index]) > 0 then begin Result := Index; sList.Free; //Exit; Das ist natürlich falsch Break; sList.Free; if Result = -1 then ShowMessage('Einstiegspunkt wurde nicht gefunden.'); end; |
AW: "Pos" findet String wegen Einrückung nicht
Zitat:
Sieht bei mir jetzt so aus:
Delphi-Quellcode:
Danke an alle.
var
sList: TStringList; Index: integer; begin sList := TStringList.Create; Result := -1; sList := TStringList.Create; sList.LoadFromFile(FileName); for Index := 0 to sList.Count do begin if Pos(SearchText, sList.Strings[Index]) <> 0 then begin Result := Index; sList.Free; Exit; end end; ShowMessage('Einstiegspunkt wurde nicht gefunden.'); sList.Free; end; |
AW: "Pos" findet String wegen Einrückung nicht
Ändere das bitte noch so:
Delphi-Quellcode:
var
sList: TStringList; Index: integer; begin sList := TStringList.Create; Result := -1; sList := TStringList.Create; sList.LoadFromFile(FileName); // for Index := 0 to sList.Count do Das ist auch falsch for Index := 0 to sList.Count-1 do begin if Pos(SearchText, sList.Strings[Index]) <> 0 then begin Result := Index; sList.Free; Break; // Nicht Exit! end end; ShowMessage('Einstiegspunkt wurde nicht gefunden.'); sList.Free; end; |
AW: "Pos" findet String wegen Einrückung nicht
...aber bitte mit try-finally wie in
![]() |
AW: "Pos" findet String wegen Einrückung nicht
Irgendwie kommt mir das aber alles unsauber vor. Wieso wird die Stringlist 2x erzeugt und frei gegeben, das passt doch alles nicht.
Delphi-Quellcode:
var
sList: TStringList; Index: integer; begin Result := -1; sList := TStringList.Create; try sList.LoadFromFile(FileName); for Index := 0 to sList.Count-1 do begin if Pos(SearchText, sList.Strings[Index]) <> 0 then begin Result := Index; Break; end end; //Das Folgende hab ich mal drin gelassen, aber eigentlich //gehört das z.B. in die aufrufende Prozedur verlagert if Result=-1 then ShowMessage('Einstiegspunkt wurde nicht gefunden.'); finally sList.Free; end; end; |
AW: "Pos" findet String wegen Einrückung nicht
Da ist eindeutig ein TStringList.Create/.Free zuviel drin!
So müsste das aussehen (nicht getestet):
Delphi-Quellcode:
begin
Result := -1; sList := TStringList.Create; try LTst := LowerCase(Trim(SearchText)); for i := 0 to sList.Count-1 do begin if Pos(LTst, LowerCase(sList[i])) > 0 then begin Result := i; Break; end; end; finally sList.Free; end; // If Result < 0 then ShowMessage('Einstiegspunkt wurde nicht gefunden.'); end; |
AW: "Pos" findet String wegen Einrückung nicht
PS:
![]() ![]() ![]() Zitat:
0, wenn nichts gefunden, und 1, wenn doch, da 1-basierender Index. Bei IndexOf isses natürlich anders, denn -1, wenn nichts gefunden, und 0, wenn doch, da 0-basierender Index. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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