TStringlist.Values mit Array füllen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

TStringlist.Values mit Array füllen

Beitragvon pschoett » 4. Feb 2019, 19:40 TStringlist.Values mit Array füllen

Hallo allerseits,
ich habe eine CSVdatei mit einer Kopfzeile und einer Datenzeile in eine Stringlist eingelesen.
Code: Alles auswählen
// Ja, ich habe es vor Wochen mit ( String.Delimiter:=";" ) ausprobiert, aber irgendwas funktionierte da nicht :(
Stringlist.Add( copy(sKopf, 1, pos(';', sKopf)-1) + '=' + copy(sDaten, 1, pos(';', sDaten)-1));
// Das entspricht dann, auch wenn es falsche Syntax ist.
Stringlist.Names[i] = copy(sKopf, 1, pos(';', sKopf)-1)
Stringlist.Values[i] = copy(sDaten, 1, pos(';', sDaten)-1)  

Jetzt habe ich das Problem, dass die CSV ab und an mehr als eine Datenzeile enthält. Ich möchte gerne weiterhin Stringlist verwenden, aber ich weiß nicht wie ich für Values quasi ein Array aus den passenden Werten der Datenzeilen eintragen kann.
Kann ich das immer noch mit Stringlist Names und Values lösen?
Welche Alternative empfehlt ihr?

Gruß,
Peter
pschoett
 
Beiträge: 36
Registriert: 7. Feb 2015, 11:48

Beitragvon wp_xyz » 4. Feb 2019, 19:58 Re: TStringlist.Values mit Array füllen

Wenn du bei einer StringList den Delimiter und den DelimitedText verwendest, ist es oft sinnvoll, auch StrictDelimiter auf true zu setzen, denn sonst wird auch an Leerzeichen getrennt:

Code: Alles auswählen
program Project1;
 
uses
  Classes;
var
  L: TStringList;
  i: Integer;
begin
  L := TStringList.Create;
  try
    L.Delimiter := ';';
    L.StrictDelimiter := true;   // Kommentiere das aus, um den Unterschied zu sehen
    L.DelimitedText := 'Hallo;Welt;Hallo Welt;"nochmal Hallo Welt"';
    for i:=0 to L.Count-1 do
      WriteLn(i, ': ', L[i]);
  finally
    L.Free;
  end;
 
  ReadLn;
 
end.
wp_xyz
 
Beiträge: 2918
Registriert: 8. Apr 2011, 08:01

Beitragvon pschoett » 5. Feb 2019, 17:44 Re: TStringlist.Values mit Array füllen

Danke, das klappt so weit auch.

Das dynamische Erstellen von Komponenten zur Laufzeit habe ich mit Hilfe dieses Beitrags auch hinbekommen.
pschoett
 
Beiträge: 36
Registriert: 7. Feb 2015, 11:48

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried