Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Einen String aus nem anderen mit Trenner extrahieren // =|


Tweafis - Sa 24.01.04 12:27
Titel: Einen String aus nem anderen mit Trenner extrahieren // =|
Ich hat folgendes geschrieben:
Hi ^^
Ich muss aus nem Memo die Zeilen holen, Memo.Lines geht jedoch von dem Wordwrapping des Memos aus und nicht von #13#10 Also wollt ich ne Funktion schreiben die mir den String aufgrund eines Indexes und eines Trenners zurückgibt. Allerdings Funktioniert da noch nicht alles.
Wenn ich z.B. den String "t1es:t2es:t3es:t4es" habe und die funktion mit dem Trenner ":" aufrufe und dem index n dann kommt:

n<0: 4es
n=0: t2es
n=1: t3es
n=2: t4e
n>=3: 4es

// Code war hier

irgendwas stimmt da nicht, aber ich seh nicht was =|


Wenn es da eine Funktion gibt, wäre ich sehr dankbar, ich hab keine gefunden ^^"

Okay, nächstes mal benutz ich gleich die Suchfunktion omg XD sry =| Hab dann den Post von MaRiO oderso gefunden, wos genau darum geht ^^


Christian S. - Sa 24.01.04 13:12

Ähm, muss ich das jetzt verstehen?
Ist das eine Frage und wenn ja, hat sie was in dieser Sparte zu suchen? (ernstgemeinte Frage!)


Tweafis - Sa 24.01.04 13:15

Naja ^^ Ich hab zuerst da noch den Code geposted, aber
Zitat:
Okay, nächstes mal benutz ich gleich die Suchfunktion omg XD sry =| Hab dann den Post von MaRiO oderso gefunden, wos genau darum geht ^^
<-- is mir dann aufgefallen. Meine Token funktion hat einfach nicht gefunzt, auch wenn ich nich weiß weshalb


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
function Token(s: string; trenner: char; n: integer = 0): string;
var
  sr: string;
  x: integer;
  idx: integer;
begin
  x := 0;
  sr := s;

  if not (pos(trenner, sr) > 0then begin // Kein Trenner?
    Result := sr;
    exit;
  end
  else begin
    while (pos(trenner, sr) > 0do begin
      idx := pos(trenner, sr); // Index des Trenners
      Delete(sr, idx, 1); // Trenner löschen
      if (x=n) then begin // Gewünschtes Element?
        if (pos(trenner, sr) > 0then // Noch weitere Elemente?
          Result := copy(sr, idx, pos(trenner, sr)-idx) // Das Element holen
        else
          Result := copy(sr, idx, length(sr)-idx); // Restlicher String
        exit; // Prozedur beenden
      end;
      Delete(sr, 1, idx); // Element löschen
      inc(x); // Element erhöhen
    end;
  end;
  Result := sr; // Kein Exit -> ganzen String zuweisen
end;


Vielleicht kann mir ja einer sagen was daran falsch ist, würde mich ja trotzdem interessieren, auch wenn ich jetzt Explode benutze, was ich ja sogar als FAQ-Entry von jbg in DP hier geposted habe. Shame on me XD

Sry, ich wollte keine Verwirrung stiften XD


Delete - Sa 24.01.04 16:57

Wäre es wohl möglich, Beiträge halbwegs vernünftig zu schreiben und auf Slang zu verzichten? - u.U. ist der sowieso bloß regional bekannt ist und mit dem Leute aus anderen Teilen des Landes nichts anfangen können.

Was bedeutet XD?
"eXtra dumm"?

:twisted:


Chatfix - Sa 24.01.04 17:46

XD ist meines Wissens eine Emoticon so wie :-) auch. Also dreh mal dein Kopf ein bissl *gg*