Hallo,
Ich möchte lange Strings (grösser als 255 Bytes) übernehmen und in einer normalen Stringliste ablegen.
Die Lösung die ich habe, funktioniert nur mit kurzen Strings.
Da bei langen Strings alles anders funktioniert, Speicherzuweisung, Befehle - kann jemand das auf die Schnelle umschreiben ?
Delphi-Quellcode:
function Zerlege( SText:String ) : TStrings;
const Trz = ';';
var t:Integer;
H,S:String;
begin
Result := TStringList.Create;
// Ziel,Source
H := SText; // H = Workstring
// Baue Stringliste auf
while length(H) > 0 do
begin
t := Pos(TrZ,H);
if t > 0 then
begin
S := copy(H,1,t-1); // Teilstring
H := copy(H,t+1,255); // Reststring
Result.Add(S);
end
else
begin
Result.Add(H); // Rest
H := ''; // Ende
end;
end;
end;
// Aufruf
OvcListBox_Search.Items.Assign( Zerlege( Reg.ReadString('Search Path')));
// Reg.ReadString liefert den String
// Zerlege zerlegt ihn an Hand von Trennzeichen
// OvcListBox_Search (ListBox) übernimmt die schon zerlegte Liste
// Ausgangsbasis:
// Item1;Item2;Item3;Item4 usw.
// Zielbasis:
// Item1
// Item2
// Item3 usw.
// Obige Prozedur funktioniert nur mit kurzen Strings.
// Aber wir haben lange Strings, mehrere tausend Zeichen lang ...