AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein String auslesen der mehrere gleiche zeichen hat
Thema durchsuchen
Ansicht
Themen-Optionen

String auslesen der mehrere gleiche zeichen hat

Ein Thema von skaven · begonnen am 4. Nov 2004 · letzter Beitrag vom 4. Nov 2004
Antwort Antwort
skaven

Registriert seit: 13. Okt 2004
87 Beiträge
 
#1

String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 10:10
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);
  Mit Zitat antworten Zitat
der-C

Registriert seit: 29. Okt 2004
68 Beiträge
 
Delphi 6 Professional
 
#2

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 10:27
also entweder du schneidest den string bis zur gefundenen Stelle ab, und suchst nochmal
oder du verwendest 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
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 10:33
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
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#4

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:12
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*
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:36
also so wirklich versteh ichs nicht, aber hier in der codelib gibt es eine function namens explode. die könnte dir helfen...
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:36
Irgendwo im Forum gibt's noch eine erweiterte Version zu pos, Hier im Forum suchenPosEx die sollte dir helfen können.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
skaven

Registriert seit: 13. Okt 2004
87 Beiträge
 
#7

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:38
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.
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#8

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:40
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
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

Re: String auslesen der mehrere gleiche zeichen hat

  Alt 4. Nov 2004, 11:43
Hallo skaven,

wenn Du häufiger mit Strings arbeiten solltest, könnten sich Hier im Forum suchenreguläre Ausdrücke 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;
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:37 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