CSV in TStringArray bearbeiten

Für Fragen von Einsteigern und Programmieranfängern...

CSV in TStringArray bearbeiten

Beitragvon dash_develop » 19. Apr 2017, 19:19 CSV in TStringArray bearbeiten

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
dash_develop
 
Beiträge: 38
Registriert: 15. Mai 2016, 12:33

Beitragvon siro » 19. Apr 2017, 20:46 Re: CSV in TStringArray bearbeiten

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
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 141
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 19. Apr 2017, 22:20 Re: CSV in TStringArray bearbeiten

Kennst du de Befehle.
StringReplaced und String.Splitt ?
Diese könnte weiter helfen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 2540
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried