Strings

Aloha,

ich lese Zeilenweise eine Accountingdatei aus und übergebe diese Zeile an eine Stringvariable. Inhalt einer solchen Zeile in etwa:

"Datum","Record","Konto","Username","Zeit","Client",..

Nun möchte ich Datum und Username aus diesem String in andere Variablen kopieren um diese weiter zu verarbeiten.

Also im Prinzip ab dem ersten Hochkomma bis zum nächsten Hochkomme alles in Variable A und ab dem 7 Hochkomma bis zum 8 Hochkomma alles in Variable B.

Ich weiß für solche Dinge gab es hilfreiche Funktionen. Leider sind meine Delphizeiten schon etwas her. Hat da jemand einen Tipp?

Thanx
Chris

Hi,

also die rictige Stelle findest du einfach mit

function pos(substring,sourcestring) : integer;

Wobei die Rückgabe 0 bedeutet, dass nix gefunden wurde…

Mit

function copy(sourcestring,index,count) : string;

kannst du den gefundenen String in ne neue Variable packen… Das Ganze in Eins,Zwei Schleifen gepackt, schon hast du die richtigen Hochkommas erwischt…

Mfg - JENS

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

hier sind zwei Fkts, die ich mal geschrieben habe. Aus einem String (Zeile) mit Trennzeichen (Separator) holt die erste Fkt den n-ten Eintrag (beginnend mit 0).
Die zweite Fkt gibt an, wieviele Einträge im String vorhanden sind.

Was du dann noch tun musst: Schmeiss die " weg:

Eintrag := copy(Eintrag, 2, lenght(Eintrag) - 2);


Gruss, Niels


function HolEintrag(Zeile: String; Nummer: Integer;
 Separator: Char): String;
{Holt den Eintrag an der Position 'Nummer' aus dem String Zeile.
 Die Zählung beginnt bei Null. Das Trennzeichen zwischen den
 Einträgen wird durch Separator bestimmt.}
var
 len: LongInt;
 i : LongInt;

begin
 i := 1;
 len := length(Zeile);
 while Nummer \> 0 do begin
 if i \> len then break;
 if Zeile[i] = Separator then dec(Nummer);
 inc(i);
 end{while};
 Result := copy(Zeile, i, len - i + 1);
 i := pos(Separator, Result);
 if i \> 0 then Result := copy(Result, 1, i - 1);
end;
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}


function AnzahlEintraege(const Zeile: String; Separator: Char): Integer;
{Ermittelt die Anzahl der Einträge im String Zeile indem die
Häufigkeit des Trennzeichens Separator bestimmt und um 1
incrementiert wird.}
var
 i: LongInt;

begin
 Result := 1;
 for i := 1 to length(Zeile) do
 if Zeile[i] = Separator then inc(Result);
end;
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

Klasse,danke für die Tipps!(owT)