AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Record in .csv Datei schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Record in .csv Datei schreiben

Ein Thema von Osse · begonnen am 4. Apr 2005 · letzter Beitrag vom 8. Jun 2005
Antwort Antwort
Osse

Registriert seit: 25. Mär 2005
Ort: Hamburg
74 Beiträge
 
Delphi 5 Enterprise
 
#1

Record in .csv Datei schreiben

  Alt 4. Apr 2005, 10:05
Datenbank: ?? • Zugriff über: ??
Hallo,

ich möchte gerne einen Record

Delphi-Quellcode:
TPCANMsg = record
   ID: LongWord; // 11/29 Bit-Kennung
   MSGTYPE: Byte; // Bits aus MSGTYPE_*
   LEN: Byte; // Anzahl der gueltigen Daten-Bytes (1..8)
   DATA: array[0..7] of Byte; // Daten-Bytes 0..7
  end;
den ich über die USB Schnittstelle einlese in eine .csv Datei speichern.
Die Datei kann ich anlegen mit

Delphi-Quellcode:
AssignFile(datei,'c:\test.cvs'); //Datei erstellen
 If FileExists('c:\test.cvs')then
  ReSet(datei) //Datei öffnen und dabei alte Daten löschen
 else
  ReWrite(datei); //Datei öffnen
aber wie schreibe ich die Einträge??

Geht das schnell?? Bekomme im worst case Fall alle ms einen record.

Danke
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Record in .csv Datei schreiben

  Alt 4. Apr 2005, 10:24
du kannst den record mit "write(datei, record)" reinschreiben.
allerdings muss die datei dann auch vom selben type sein.
also "datei: file of recordtype";
  Mit Zitat antworten Zitat
Osse

Registriert seit: 25. Mär 2005
Ort: Hamburg
74 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Record in .csv Datei schreiben

  Alt 4. Apr 2005, 10:41
Hab ich auch so versucht.
Die Datei ist auch als Excel Datei gekennzeichnet, aber beim öffnen kommt eine Fehlermeldung:
Es handelt sich um ein nicht erkennbares fromat.

Hab die Datei auch so konfiguriert:

 datei: file of TPCANMsg; Was hab ich falsch gemacht??

Werden die Zeilen automatisch nach jedem Eintrag hochgezählt, oder muss ich da noch was machen??
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Record in .csv Datei schreiben

  Alt 4. Apr 2005, 10:58
1. Die Datei muss die Endung CSV haben.
2. Der Code muss etwa so aussehen:
Delphi-Quellcode:
type
  TPCANMsg = record
     ID: LongWord; // 11/29 Bit-Kennung
     MSGTYPE: Byte; // Bits aus MSGTYPE_*
     LEN: Byte; // Anzahl der gueltigen Daten-Bytes (1..8)
     DATA: array[0..7] of Byte; // Daten-Bytes 0..7
    end;
var
  rec : TPCANMsg;

procedure RecordSchreiben;
var
  datei : TextFile;
begin
  AssignFile(datei,'c:\test.cvs'); //Datei erstellen
  If FileExists('c:\test.cvs')then
    ReSet(datei) //Datei öffnen und dabei alte Daten löschen
  else
    ReWrite(datei); //Datei öffnen
  writeln(datei, IntToStr(ID)+';'+IntToStr(MSGTYPE)+';'+IntToStr(LEN)+';'+IntToStr(ID)+';'+
                 IntToStr(DATA[0])+';'+IntToStr(DATA[1])+';'++IntToStr(DATA[2])+';'+IntToStr(DATA[3])+';'
                 +IntToStr(DATA[4])+';'+IntToStr(DATA[5])+';'+IntToStr(DATA[6])+';'+IntToStr(DATA[7]));
  closefile(datei);
end;
Ungetestet und nur schnell mal reingehackt. Und auch nur für einen Datensatz.
Für mehrere Datensätze musst du eine Schleife basteln oder statt Reset eine AppendFile nehmen.
Peter
  Mit Zitat antworten Zitat
chris1908

Registriert seit: 7. Jun 2005
3 Beiträge
 
#5

Re: Record in .csv Datei schreiben

  Alt 7. Jun 2005, 17:57
hallo!

möchte in einer zeile 3 spalten mit daten befüllen und dann in die nächste zeile wechseln diese wieder mit 3 zeilen zu befüllen usw. jedoch werden nach der zweiten zeile alle restlichen daten in eine spalte geschrieben und durch ein viereck (carriage return) dargestellt, hab schon alles versucht, sogar ein steuerzeichung für das carriage return einzugeben (wie zb. in c/c++ '\n') was jedoch auch nicht wirklich funktioniert hat.

hab mein csv-testfile als attachment hinzugefügt...

kleiner auszug aus meinem quellcode:

Delphi-Quellcode:
while (ws.Cells.Item[i_i,i_j].text <> '') do
  begin
    str := '';
    str :=ws.Cells.Item[i_i,i_j+1].Text;

    if (i_count > 1) then str_tmp := str_tmp + ';' +ws.Cells.Item[i_i,i_j].Text
    else str_tmp := ws.Cells.Item[i_i,i_j].Text;

    if (i_count = 3) then
      i_count:=0;

    if (i_j mod 3 = 0) then
    begin
      memo1.Lines.Add(str_tmp);

      assignfile(f_datei,s1);
      append(f_datei);
      writeln(f_datei,str_tmp);
      closefile(f_datei);
      str_tmp := '';
    end;

    if (str = '') then
    begin
      i_j := 0;
      inc(i_i);
    end;
    inc(i_j);
    inc(i_count);
  end;
danke im voraus!
  Mit Zitat antworten Zitat
chris1908

Registriert seit: 7. Jun 2005
3 Beiträge
 
#6

Re: Record in .csv Datei schreiben

  Alt 8. Jun 2005, 14:37
kann mir dabei keiner weiterhelfen?
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Record in .csv Datei schreiben

  Alt 8. Jun 2005, 14:41
da sind doch schon n paar Vorschläge
kannst ja auch ne ini (TIniFile easy 2 handle) benutzen wenns nicht unbedingt CSV sein muß ...
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
chris1908

Registriert seit: 7. Jun 2005
3 Beiträge
 
#8

Re: Record in .csv Datei schreiben

  Alt 8. Jun 2005, 14:46
das problem ist, dass der import zur zeit nur mit csv dateien funktioniert...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
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