Entwickler-Ecke
Dateizugriff - *CSV Datei in StringGrid
LDMatrix17 - Sa 09.09.06 19:17
Titel: *CSV Datei in StringGrid
hiii @ all friends!
erst mal gruß an alle!!!
Also ich wollte eine .CSV Datei in StringGrid laden, da ich ganz neugering bin weiß nicht wo ich anfangen soll. Zeilen und Spalten müssen Automatisch erzeigt werden.
soO weit weiß ich :
In eine CSV Dateien sind die zeilen per Semikolon getrennt,
man braucht eine Stringlist um die Datei zu laden und
dann braucht man eine For do Schleife um die stringlist durch zu gehen und die werte in StringGrid ein zu tragen...
ich kann mir noch vorstellen wie das alles weiter geht aber weiß nicht wo ich anfangen soll. Ít would be very gratefull, wenn mir jemand schritt für schritt erklären kann.
gruß
Christian
r2c2 - Sa 09.09.06 20:36
Hallo Christian :wave:
guck dir mal folgendes an:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| cslSL := nil; LineSL := nil; try csvsl := TStringList.Create; LineSL: TSringList.Create; sl.LoadFromFile(...); sl.Delimiter := ';'; for i := 0 to anzZeilen do begin LineSL.DelimitedText := sl[i]; StringGrid.Cells[..., ...] := ...; end; finally csvSL.Free; LineSL.Free; end; |
mfg
Christian
LDMatrix17 - So 10.09.06 16:47
hey bitte!!!
Ich blicks gar nichts hier!!
kannst du vielleicht noch nähr erklären, bitte.
mgf
Christian
Edit:
Meine CSV Datei sieht soO aus.
Name;Vorname;Strasse und Nr;
Test;Test1;Test1 12;
test T;test M;test,12;
Nun will Ich alle Namen, sowie alle Vornamen und adressen in eine Zeile StringGrids ausgeben..
ich bekomme irgendwie nicht hin.
Bitte hilf mir :^^
r2c2 - So 10.09.06 21:23
Ich hab dir doch schon n fast lauffähigen Code gegeben. Was verstehst du denn nicht?
mfg
Christian
Delete - So 10.09.06 21:28
dann nimm doch dies hier:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var sl: tStringList; i,j: integer; s: string; begin sl := tStringlist.Create; try sl.LoadFromFile('c:\temp\test.txt'); for i := 0 to sl.count - 1 do begin s := sl.Strings[i]; sg.Cells[1,i+1] := copy(s,1,pos(';',s)-1); delete(s,1,pos(';',s)); sg.cells[2,i+1] := copy(s,1,pos(';',s)-1); delete(s,1,pos(';',s)); sg.cells[3,i+1] := copy(s,1,pos(';',s)-1); end; finally sl.Free; end; end; |
Anmerkung: SG = StringGrid
r2c2 - So 10.09.06 21:33
Mein Code funktioniert aber auch, wenns mehr als 3 Spalten sind...
Was aber nix dran ändert, dass man sich mit Code beschäftigen sollte, bevor man behauptet "Ich blicks gar nichts hier!!"...
mfg
Christian
Delete - So 10.09.06 23:32
@r2c2: ist doch egal, ist sein problem. seine HP funktioniert ja auch nicht... :wink:
LDMatrix17 - Mo 11.09.06 18:25
r2c2 hat folgendes geschrieben: |
Mein Code funktioniert aber auch, wenns mehr als 3 Spalten sind...
Was aber nix dran ändert, dass man sich mit Code beschäftigen sollte, bevor man behauptet "Ich blicks gar nichts hier!!"...
mfg
Christian |
hey also, du kennst dich ja viel mehr aus als ich und du kriegst schnell hin.
guck dir deine Code noch mal genau an bitte, da sind noch fehler drinn und nicht vollständig. Wie soll bitte einer, der gerade Delphi lernet damit was anfangen?
Ich habe nicht gegen dich, du hast schnell geholfen aber ehrlich gesagt hab echt nicht kapiert..
trotzdem Danke
MFG
Christian
Edit: hab jetzt kapiert ;)
r2c2 - Mo 11.09.06 18:37
LDMatrix17 hat folgendes geschrieben: |
guck dir deine Code noch mal genau an bitte, da sind noch fehler drinn und nicht vollständig.
|
Das is mir schon klar. Ich hab ja auch extra "Pseudocode" dazugeschrieben...
Zitat: |
Wie soll bitte einer, der gerade Delphi lernet damit was anfangen?
|
Indem er sich damit beschäftigt und, wenn etwas unklar ist, eine *konkrete* Frage stellt. "ich blicks net" heißt für mich "ich hab mich nicht damit beschäftigt, mach du für mich die Arbeit". Wenn die Frage aber heißt "Was machst du in Zeile 11? Hab das net verstanden", dann erklär ich das gerne(und ich schätz mal ich bin nicht der einzige der das so handhabt). Ich helfe gerne, ich schreibe aber nicht anderer Leute Programme...
Zitat: |
Edit: hab jetzt kapiert ;) |
Und... war doch gar nicht so schwer... Wenn nochwas unklar is: Einfach fragen...
mfg
Christian
Nagetier - Fr 20.04.07 15:16
r2c2 hat folgendes geschrieben: |
Hallo Christian :wave:
guck dir mal folgendes an:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| cslSL := nil; LineSL := nil; try csvsl := TStringList.Create; LineSL: TSringList.Create; sl.LoadFromFile(...); sl.Delimiter := ';'; for i := 0 to anzZeilen do begin LineSL.DelimitedText := sl[i]; StringGrid.Cells[..., ...] := ...; end; finally csvSL.Free; LineSL.Free; end; |
mfg
Christian |
Ich hätte dazu mal n paar kleinere Fragen, da ich mich nur wenig mit dieser Materie auskenne...
1. Was bedeutet das "nil" am Anfang, bzw welche Funktion besitzt dieses?
Und wie ist dieser Abschnitt
LineSL.DelimitedText := sl[i];
StringGrid.Cells[..., ...] := ...;
zu verstehen?
muss ich bei StringGrid.Cells sämtliche Zellen eintragen, oder wie muss ich soetwas behandeln?
Danke schonmal für die Hilfe, wie gesagt kenne mich mit improtieren nur wenig aus ;)
Silas - Fr 20.04.07 15:27
Hallo,
nil ist ein Wert, den man einem Zeiger zuweisen kann, sodass dieser auf 0 (also sozusagen nirgendwohin) zeigt, also dass kein Ziel festgelegt ist.
Bei Stringgrid.Cells[x, y] := ... musst du jede Zelle einzeln behandeln.
Silas
Nagetier - Fr 20.04.07 15:44
achso, ok danke...
Wenn ich allerdings jede Zelle einzeln betitteln muss wird das bei einem akutellen csv Datenblatt relativ schwer, da es ca 120 Zeilen lang und gut 10 Spalten breit ist, gibt es keine einfachere Möglichkeit dafür?
Silas - Fr 20.04.07 15:51
Naja, so aufwändig ist das nicht:
Delphi-Quelltext
1: 2: 3: 4:
| for i := 1 to 120 do begin for j := 1 to 10 do SG.Cells[i, j] := end; |
120 und 10 musst du halt durch deine Zahlen ersetzen.
Nagetier - Fr 20.04.07 16:40
Wie also müsste der Code als ganzes aussehen, damit dieser Funktioniert, ich bekomme immer gesagt, dass es undefinierte Bereiche etc. gibt :-/
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!