Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Stringgrid als CSV datei speichern. (https://www.delphipraxis.net/84856-stringgrid-als-csv-datei-speichern.html)

twospirit 22. Jan 2007 21:27


Stringgrid als CSV datei speichern.
 
Hallo,

wir haben in unserer Ausbildung HPS(Höhere Programmier Sprachen) und dort lernen wir immoment mit Delphi ein bischen Programmieren, ich hatte bei einem Geschäfft Praktikum gehabt und sollte mal ihre Kasse nach bauen.
Dafür brauch ich eine art Datenbank, hab mich einfach mal für eine CSV-Datei entschieden und im Hintergrund ist eine Stringgrid was als Lager fungiert.
Ich habe ein bischen im Internet herum geschaut und habe eine Möglichkeit gefunden wie ich ein Stringgrid in eine CSV-Datei speichern kann.

Quellcode:
Delphi-Quellcode:
function TForm1.SaveToCSV:Boolean;
var
  SD : TSaveDialog;
  I : Integer;
  CSV : TStrings;
  FileName : String;
begin
  Try
  // Filedialog erzeugen
  SD := TSaveDialog.Create(Self);
  SD.Filter := 'CSV-Trennzeichen getrennt (*.csv)|*.CSV';
  //Filedialog ausführen
  If SD.Execute = True Then
  Begin
    //Filename zuweisen
    FileName := SD.FileName;
    If Copy(FileName,Pos('.',FileName),Length(FileName)-Pos('.',FileName)+1) <> '.csv' Then FileName := FileName + '.csv';
    Screen.Cursor := crHourGlass;
    //Stringliste erzeugen
    CSV := TStringList.Create;
    Try
      //Stringliste füllen
      For I := 0 To Grid.RowCount - 1 Do CSV.Add(Grid.Rows[I].CommaText);
      //CSV speichern
      CSV.SaveToFile(FileName);
      Result := True;
    Finally
      CSV.Free;
    End;
  End;

  Finally
    SD.Free;
    Screen.Cursor := crDefault;
  End;
end;

//SaveToCSV ausführen (sample call)
procedure TForm1.BtnSaveClick(Sender: TObject);
begin
   SaveToCSV;
end;
Das funktioniert ganz gut, doch möchte ich nicht, dass er mich frag wo die Datei gespeichert werden soll, sondern er soll sie eigenständig irgendwo abspeichern.

Kennt sich da jemand aus und weis Rat?


MfG twoSpirit

Norbert987 22. Jan 2007 22:29

Re: Stringgrid als CSV datei speichern.
 
Erstmal Herzlich Willkommen twospirit!

In deinem Fall kannst du die Variablen SD (der Dialog der angezeigt wird) und Filename löschen. Bei "CSV.SaveToFile(FileName);" schreibst du nun statt FileName den Pfad rein, das wars.

Tobias

EDIT: auch die if Abfrage, ob die Dateiendung .csv ist fällt somit weg...

twospirit 22. Jan 2007 22:38

Re: Stringgrid als CSV datei speichern.
 
Hallo,

es funktioniert perfekt, danke viel mals.
> Erstmal Herzlich Willkommen twospirit!
Danke schön ;)

MfG twoSpirit

delphin06 17. Apr 2007 18:28

Re: Stringgrid als CSV datei speichern.
 
gibt es auch ne funktion das alles wieder von der csv datei in das stringrid zu laden?

Apollonius 17. Apr 2007 18:38

Re: Stringgrid als CSV datei speichern.
 
Natürlich geht das. Du musst nur alles umgekehrt machen:
Delphi-Quellcode:
procedure laden;
var h:TStrings; i:integer;
begin
h:=TStringlist.create;
try
  h.loadfromfile('xyz.csv'); //<-- der Dateiname
  for i:=o to h.count-1 do
   MeinStringgrid.rows[i].commatext:=h[i];
finally
  h.free;
end;

end;
Das wars schon.

delphin06 17. Apr 2007 18:59

Re: Stringgrid als CSV datei speichern.
 
cool danke!

tadlanra 31. Okt 2008 08:47

Re: Stringgrid als CSV datei speichern.
 
hallo
ich versuche gerade genau das, was hier im thread steht. nur ist es bei mir so, dass wenn ich eine csv datei in excel öffnen will ein Semikolon als spaltentrenner benötige. warum ist das so?

gibt es eine ähnliche funktion wie "commatext" die sich dann auf semikolon bezieht? derzeit ersetze ich halt alle kommas durch ';'

nahpets 31. Okt 2008 09:00

Re: Stringgrid als CSV datei speichern.
 
Hallo,
hilft Dir das?
Delphi-Quellcode:
StringGrid1.Rows[i].Delimiter := ';'

tadlanra 31. Okt 2008 09:07

Re: Stringgrid als CSV datei speichern.
 
ah da bin ich auch schonmal drüber gestolpert und habs dann wieder vergessen mal auszutesten. werds mal versuchen. aber noch ne antwort warum man manchmal ';' und manchmal ',' und manchmal auch #9 benötigt als spaltentrenner? ist das excelversionsabhängig?

nahpets 31. Okt 2008 09:21

Re: Stringgrid als CSV datei speichern.
 
Hallo,

nö, ich würd' mal sagen: Das ist phantasieabhängig.

Es heißt Commaseperated und deshalb nimmt Excel ; :wink:

Nein, dass ist eigentlich eine Sache der Vereinbarung. Nehme selbst gerne den senkrechten Strich (|), dann darf im Text auch mal ein Komma oder ein Semikolon sein.
http://de.wikipedia.org/wiki/CSV_(Dateiformat)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz