CSV in TStringArray bearbeiten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
dash_develop
Beiträge: 38
Registriert: So 15. Mai 2016, 13:33

CSV in TStringArray bearbeiten

Beitrag von dash_develop »

Hallo zusammen,

ich habe mal wieder eine Frage..
Und zwar habe ich eine Datei die wie folgt aussieht in ein Array geladen:

Code: Alles auswählen

 
19.04.2017 19:15;A 9079/A 9078;0987654321/123;18;1,254461538461537;
19.04.2017 20:00;A 9079/A 9078;0987654321/123;27;1,26549467;
19.04.2017 20:00;190779;1234567890;100;20,456;
 


Kein Problem funktioniert alles wunderbar.

Jetzt versuche ich schon die Ganze Zeit oben die gelistete CSV Datei wie folgt aussehen zu lassen, jedoch ohne Erfolg:

Code: Alles auswählen

 
19.04.2017 19:15;190799;0987654321;18;1,254461538461537;
19.04.2017 19:15;190789;0987654123;18;1,254461538461537;
19.04.2017 20:00;190799;0987654321/123;27;1,26549467;
19.04.2017 20:00;190789;0987654123;27;1,26549467;
19.04.2017 20:00;190779;1234567890;100;20,456;
 


Ich möchte einfach die Daten die mit einem / gezeichnet sind untendrunter haben (als Kopie).

Ich habe das schon mit Pos(), Length(), Delete() in einer For to Schleife probiert jedoch ohne richtigen Erfolg.
Gibts dafür evtl. noch weitere Befehle die mir das Ganze evtl vereinfachen zu realisieren?

Über Denkanstöße wäre ich sehr dankbar.

Gruß
dash_develop

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: CSV in TStringArray bearbeiten

Beitrag von siro »

Hallo,
ichg habe es zwar nicht komplett verstanden, aber vielleicht hilft Dir das weiter:
Zerlegung des Textes an dem Trennzeichen:

Code: Alles auswählen

 
Function SplitString(s:String;TrennZeichen:Char; var Vorne,Hinten:String):Boolean;
var p:Integer;
begin
  p:=pos(TrennZeichen,s);   // die Position des Trennzeichens ermitteln
  if p > 0 then begin       // wenn das Trennzeichen gefunden wurde dann
    Vorne:=Copy(s,0,p-1);   // Text von vorne bis zum Trennzeichen -1
    Hinten:=Copy(s,p+1,length(s))// der Rest ohne das Trennzeichen
    result:=TRUE;
  end else begin    // Trennzeichen nicht gefunden, dann
    Vorne:=s;       // Der vordere String ist der gesamte String
    Hinten:='';     // hinteren String gibts nicht
    if length (Vorne) > 0 then result:=TRUE  // wenn noch was da ist Okay
    else result:=FALSE;                      // sonst Ergebnis = FALSE;
  end;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
var vorn,hinten:String;
begin
  // Init auf Originl String:
  vorn:='19.04.2017 19:15;A 9079/A 9078;0987654321/123;18;1,254461538461537';
 
  // nun den String solange zerlegen bis die Funktion FALSE liefert
  while SplitString(vorn,'/',vorn,hinten) do begin
    ListBox1.items.add(vorn);
    vorn:=hinten;
  end;
end;       
 


dann steht in der ListBox:

19.04.2017 19:15;A 9079
A 9078;0987654321
123;18;1,254461538461537'

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: CSV in TStringArray bearbeiten

Beitrag von Mathias »

Kennst du de Befehle.
StringReplaced und String.Splitt ?
Diese könnte weiter helfen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten