![]() |
Re: Teilstring suchen
Hallo allerseits!
Wollte zuerst einen neuen Thread aufmachen, aber es erschien mir sinnvoll hier weiter zu machen. Habe änliches Problem. Mein Prog soll einen text nach 0 (null bzw. mehreren nullen) durchsuchen. der Hacken dabei ist - sobald er eine null (oder mehrere direkt nacheinander) findet, soll er aufhören zu suchen und die Stelle und Anzahl der gefundenen Nullen ausgeben. Bsp.: Text lautet : Delphi-000123-Forum AusgabeText1 : 8 AusgabeText2 : 3 8 steht für die Stelle, 3 für Anzahl der Nullen. Kling banal, aber ich komme irgendwie nicht weiter. |
Re: Teilstring suchen
Nur die Anzahl der direkt aufeinander folgenden Nullen?
|
Re: Teilstring suchen
Und die Stelle, wo man sie zum ersten mal gefunden hat. Weitere Nullen sind unwichtig.
Edit1 Ich dachte an sowas wie:
Delphi-Quellcode:
ist nur so Gedankenansatz...
Procedure TForm1.SucheNull;
var Text,SuchText, Test:string; Suchindex: Integer; begin Text:=TextFeld.Text; Suchtext := '0'; begin // Find the position of the last 0 Suchindex := LastDelimiter(Suchtext, Text); //ShowMessage('The last 0 is at '+IntToStr(Suchindex)); end; if Suchindex = 0 then Ausgabe.Text:= ''; if Suchindex = 1 then Ausgabe.Text:= '0'; if Suchindex = 2 then Ausgabe.Text:= '00'; end; |
Re: Teilstring suchen
Mit
![]() |
Re: Teilstring suchen
Ja schon. Aber ob Pos oder LastDelimiter, wie mache ich, dass er, nach dem er die ersten nullen gefunden hat, aufhört zu suchen?
EDIT1 Wenn ich ihm sage, er soll nach dem Fund aufhören, dann findet er auch nur eine einzige Null. Wenn ich sage, er soll nach den ganzen Text nach Nullen durchsuchen, dann spuckt er ALLE Nullen aus. Ich Brauche aber nur die erste Null oder die erte Null-Folge. |
Re: Teilstring suchen
Delphi-Quellcode:
Damit findest Du einmal die erste Null, weiter wird nicht gesucht.
i := Pos('0', str);
if i > 0 then MachWas; Mit einer While-Schleife kannst Du dann noch solange von i + 1 weiterlaufen, bis das gefundene Zeichen <> 0 ist. |
Re: Teilstring suchen
Oder vielleicht etwas in der Art:
Delphi-Quellcode:
type TStellen = record
First, Count: integer; end; function GetPosAndCount(const s: string; const c: Char): TStellen; var i: integer; begin Result.First := 0; Result.Count := 0; for i := 1 to Length(s) do if s[i] = c then begin if Result.First < 1 then Result.First := i; inc(Result.Count); end else if Result.First > 0 then break; end; |
Re: Teilstring suchen
Sorry, bin in Records noch nicht fit.
Zitat:
|
Re: Teilstring suchen
s ist da, worin gesucht werden soll, c ist ein Buchstabe, nach dem gesucht werden soll.
|
Re: Teilstring suchen
OK. Ich rufe die Funktion jetzt so auf:
Delphi-Quellcode:
Aber wo sehe ich die Ergebnise? Ich wollte sie z.B. im EditFeld1 haben.
GetPosAndCount(MeinText.text,'0');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 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