Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String auslesen der mehrere gleiche zeichen hat (https://www.delphipraxis.net/33270-string-auslesen-der-mehrere-gleiche-zeichen-hat.html)

skaven 4. Nov 2004 09:10


String auslesen der mehrere gleiche zeichen hat
 
Hallo zusammen,

ich möchte gerne einen string auslesen der in etwas so aussieht:

#'+*~04~00~09+*#'

Jetzt habe ich ein Programm geschrieben das den String nach dem Zeichen ~ durcsucht und mir die nachfolgende Zahl filtert.

Beim nächsten Umlauf fängt die Suche leider wieder von vorne an und er findet das erste Zeichen wieder und liest dieselbe Zahl aus '04', er soll aber einen weiter springen und nach der nächsten Tilde suchen, damit ich alle Zahlen ausgelesen habe.

Kann ich einen Merker setzten, nachdem Motto, erste Tilde gefunden, zahl ausgelesen, weiter ab dieser Stelle suchen und nicht von vorne.

Hänge Euch mal meine Funktion an ide ich bis jetzt zum auslesen geschrieben habe und die immer von neuen anfängt.

Delphi-Quellcode:
function TForm1.auswerten(data: string): string;

    var
    firstletter, lastletter, hilfspoint :integer;
    wert : string;

     begin
      firstletter := 0;
      lastletter := 0;

      if not(pos('~',data) = 0) then
        begin


         {Ermittlung der Befehlsposition "erste Doppelzahl"}
         while (firstletter < Length(data)) and not (data[firstletter] in [#48..#57]) do
               Inc(firstletter);
               lastletter := firstletter;


         {auslesen und speichern der Doppelzahl}
         while (lastletter < Length(data)) and (data[lastletter] in [#48..#57]) do
             begin
             wert := wert + data[lastletter];
             Inc(lastletter);
             end;
             firstletter := lastletter;
             hilfspoint:=strtoint(wert);
             auswerten:=inttostr(hilfspoint);

der-C 4. Nov 2004 09:27

Re: String auslesen der mehrere gleiche zeichen hat
 
also entweder du schneidest den string bis zur gefundenen Stelle ab, und suchst nochmal
oder du verwendest :gruebel: ich glaube eine TStringList wo du den string einfach als
delimited-Text übergibst und den delimiter auf '~' stellst, und der String wird dann automatisch in ein Feld aufgeteilt.
such einfach mal nach delimited TStringList

Airblader 4. Nov 2004 09:33

Re: String auslesen der mehrere gleiche zeichen hat
 
ich würde es so machen:
Den kompletten String in einen dummy-string speichern.
Dann jedesmal beim finden einfach den string abschneiden.

Der Dummy-string dient übrigens dazu, dass du den "echten" string weiterhin verwenden kannst :)

Sergej 4. Nov 2004 10:12

Re: String auslesen der mehrere gleiche zeichen hat
 
Hi, hier mein Vorschlag:

Delphi-Quellcode:
//Liefert das N-te Vorkommen einer Ganzzahl in einem String
function GetNthNumber(SrcStr: String; n: Integer; Seperator: Char = '~'): String;
const NumChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var i, j, StrLength, count: Integer;
begin
 Result := '';
 Count := 0;
 StrLength := Length(SrcStr);
 for i:=1 to StrLength do
  begin
   If SrcStr[i] = Seperator then inc(count);
   If count = n then
    begin
     j := 0;
     While (i+j <= StrLength) AND SrcStr[i+j] in NumChars do
      begin
       inc(j);
       Result := Result + SrcStr[i+j];
      end;
     exit;
    end;
  end;
end;
Ohne Gewähr und ungetestet *g*

Meflin 4. Nov 2004 10:36

Re: String auslesen der mehrere gleiche zeichen hat
 
also so wirklich versteh ichs nicht, aber hier in der codelib gibt es eine function namens explode. die könnte dir helfen...

Nikolas 4. Nov 2004 10:36

Re: String auslesen der mehrere gleiche zeichen hat
 
Irgendwo im Forum gibt's noch eine erweiterte Version zu pos, Hier im Forum suchenPosEx die sollte dir helfen können.

skaven 4. Nov 2004 10:38

Re: String auslesen der mehrere gleiche zeichen hat
 
Danke, habe das Problem gelöst, aber es ist ein neues aufgetreten. So wird es nie langweilig, smile.

Schaut mal bitte in meinen neuen Threat nach, wäre nett.

Steve 4. Nov 2004 10:40

Re: String auslesen der mehrere gleiche zeichen hat
 
Hi, Delphi-Referenz durchsuchenPosEx ist wohl die einfachste Lösung, kommt aber nicht hier ausm Forum, sondern direkt von Delphi (ab v6 oder 7), Unit StrUtils ;)

Gruß
Stephan :dance:

choose 4. Nov 2004 10:43

Re: String auslesen der mehrere gleiche zeichen hat
 
Hallo skaven,

wenn Du häufiger mit Strings arbeiten solltest, könnten sich [dp]reguläre Ausdrücke[/dp] als hilfreich erweisen. Mit ihnen könnte eine Lösung zum Beispiel so aussehen:
Delphi-Quellcode:
with RegExpr('~(\d+)') do
  if Execeute(AString) then
  repeat
     ShowMessage(Match[1]);
  until not ExecuteNext;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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