Autor Beitrag
Killi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 299

Win*
D6 Prof
BeitragVerfasst: Mo 10.05.04 14:51 
Hi,


habe folgende Function hier im Forum gefunden:


ausblenden volle Höhe 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:
31:
32:
33:
34:
35:
36:
function TFMain.Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var 
  SepLen: Integer; 
  F, P: PChar; 
  ALen, Index: Integer; 
begin 
  SetLength(Result, 0); 
  if (S = '') or (Limit < 0) then Exit; 
  if Separator = '' then 
  begin 
    SetLength(Result, 1); 
    Result[0] := S; 
    Exit; 
  end; 
  SepLen := Length(Separator); 
  ALen := Limit; 
  SetLength(Result, ALen); 

  Index := 0; 
  P := PChar(S); 
  while P^ <> #0 do 
  begin 
    F := P; 
    P := StrPos(P, PChar(Separator)); 
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); 
    if Index >= ALen then 
    begin 
      Inc(ALen, 5); // mehrere auf einmal um schneller arbeiten zu können 
      SetLength(Result, ALen); 
    end; 
    SetString(Result[Index], F, P - F); 
    Inc(Index); 
    if P^ <> #0 then Inc(P, SepLen); 
  end; 
  if Index < ALen then SetLength(Result, Index); // wirkliche Länge festlegen 
end;



um einen String durch Trennzeichen (bei mir ";") in ein Array zu schreiben - funzt auch wunderbar, bloß muss bei mir eins beachtet werden:

wenn ich einen String habe, der so aussieht:

Vorname;Nachname;Ort;freitext;irgendwas

dann ist alles ok, wenn ich allerdings so einen hier habe:

Vorname;Nachname;Ort;"freitext; und mehr";irgendwas

dann soll die Function den Strichpunkt nach dem freitext NICHT als Trennzeichen sehen, da sie in Anführungszeichen steht - kapiert was ich meine?
Ich blicke bei der Function nicht so ganz durch, wie baue ich das ein? Ich hoffe ihr könnt mir helfen...

Moderiert von user profile iconMotzi: Topic Verschoben

_________________
----
Life is hard and then you die