![]() |
File of record speichern
Hi ;)
Ich erstelle in Delphi eine file of record, um Messdaten zu speichern. Die datei soll während des Programms erstellt werden. Sieht wiefolgt aus:
Delphi-Quellcode:
Nun.. Ich habe lange gesucht, aber keine möglichkeit gefunden meine "File of TMesswert" zu speichern^^ Ist in der Delphi-Hilfe zu den Standard I/O-Befehlen von files nicht vorhanden.
type TMesswert=record
Amp1,Amp2:real; Vol1,Vol2:real; end; var AlleMesswerte:array of TMesswert; //.... procedure TForm1.Button4Click(Sender: TObject); var f:file of TMesswert; x:integer; begin If savedialog1.Execute then Begin For x:= 0 to High(AlleMesswerte) do Write(f,AlleMesswerte[x]); //Hier soll f nun in Savedialog1.Filename gespeichert werden end; end; Muss ich die Datei vielleicht vorher erstellen? Wenn es den Befehl tatsächlich nicht gibt, schätze ich mal ich muss der file f einen bestimmten Pfad oder eine datei zuweisen, aber wie tue ich dies? |
Re: File of record speichern
AssignFile, Reset, Write
|
Re: File of record speichern
Es müsste eigentlcih wie mit einem ganz normalen Textfile gehen also erst
Delphi-Quellcode:
um der Dateivariable einen Pfad zu geben, dann
AssignFile(F, SaveDialog1.FileName)
Delphi-Quellcode:
um eine neue Datei zu erstellen oder eine bestehende zu leeren, dann
Rewrite(F, SaveDialog1.FileName)
Delphi-Quellcode:
um die einzellnen Records in die Datei zu schreiben, und am Ende nicht das
Write(F, AlleMesswerte[x]) // In der For-Schleife
Delphi-Quellcode:
vergessen um die Datei abzuschließen.
CloseFile(F)
Hab mal gelesen, dass das so funktioniert. Und hoffe das es richtig ist, hoffe es hilft ihr :mrgreen: Edit: Ich glaube man braucht nur Write *g* |
Re: File of record speichern
Autsch .. natürlich...
Rewrite muss es heissen, nicht Reset^^ Hatte zuerst reset da stehn und mich gewundert warums abbricht, aber die Datei ist ja noch nicht erstellt :D Lange her dass ich Pascal geschrieben hab ;) Ok danke ^^ Es geht :zwinker: |
Re: File of record speichern
|
Re: File of record speichern
Abgesehen davon, das der Typ Real Out ist, wäre es zu empfehlen, ein Packed Record zu verwenden.
Sonst kann's mal mit dem Compilerschalter {$A+} etwas weh tun. :zwinker:
Delphi-Quellcode:
type TMesswert=PACKED record
Amp1,Amp2:real; Vol1,Vol2:real; end; |
Re: File of record speichern
Wenn du vor hast, mehrere verschiedene Arten von records in eine Datei zu speichern (kommt vor), dann empfehle ich einen
![]() |
Re: File of record speichern
Ergänzend: Fehlerabfragen nicht Vergessen.
Delphi-Quellcode:
... und ich würde mich mit der VCL auch für FileStreams entscheiden, ist irgendwie einfacher. ;)
procedure TForm1.Button4Click(Sender: TObject);
var f: file of TMesswert; x, IOErr: integer; begin If SaveDialog1.Execute then begin AssignFile(F, SaveDialog1.FileName); {$I-} Rewrite(F); // Datei neu Erstellen IOErr := IOResult; if IOErr = 0 then begin For x:= 0 to High(AlleMesswerte) do Write(f, AlleMesswerte[x]); CloseFile(F); end else Showmessage('Fehler bei Dateizugriff. #' + IntToStr(IOErr) ); {$I+} end; end;
Delphi-Quellcode:
procedure TForm1.Button4aClick(Sender: TObject);
var fs: TFileStream; x: integer; begin If SaveDialog1.Execute then begin fs := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmOpenWrite); try fs.Seek(soFromBeginning, 0); For x:= 0 to High(AlleMesswerte) do fs.Write(AlleMesswerte[x], sizeof(TMesswert)); finally fs.Free; end; end; end; |
Re: File of record speichern
Hallo zusammen,
kann mir auch jemand sagen wie ich dieses Format speichern und öffnen kann?
Delphi-Quellcode:
:gruebel: Isch werd noch amol blöd mit Ding hier...
Type TField = record
Field : array of String [50] end; Type TDatSet = record DatSet : array of TField; DatExt : array of TField; DSFLength : Longword; DEFLength : Longword; DSLength : Longword; Name : String [20]; Date : String [10]; end; Type TDBFrame = record Data : array of TDatSet; System : array of TDatSet; DatLength : Longword; SysLength : Longword; Name : String[20]; end; Var DBFrame : TDBFrame; [edit=alcaeus]Delphi-Tags eingefuegt. Mfg, alcaeus[/edit] |
Re: File of record speichern
Naja Hierbei handelt es sich nicht um klassisches Record speichern...
Jeder Record, der eine dynimische Variable hat, muss natürlich einzeln behandelt werden. Frank :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz