Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record-Datei anlegen (https://www.delphipraxis.net/71937-record-datei-anlegen.html)

hannah 22. Jun 2006 16:58


Record-Datei anlegen
 
Hallo!

Ich muss für die Uni ein Programm schreiben, dass nach der Eingabe von Abwurfhöhe und -geschwindigkeit die Wurfweite von einem horizontalen Wurf als Zahl und und auch grafisch ausgibt. Das hab ich auch alles so weit hinbekommen, obwohl ich von sowas eigentlich null Ahnung hab. Jetzt muss ich aber noch eine Record-Datei anlegen, die die eingegebenen Werte und die Ausgabe, also sowohl die Zahl als auch die gezeichnete Funktion, speichert. Leider komm ich damit absolut nicht klar, vor allem hab ich keine Ahnung, wie ich die Funktion speichern soll. Kann mir da wer helfen?

Danke,
gruß, Hannah

Michael Habbe 27. Jun 2006 23:11

Re: Record-Datei anlegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, um eine Record-Struktur in eine Datei zu speichern,

1. Record definieren:

Delphi-Quellcode:
type
  TKoordRec = record
    x,
    y: Double;
  end;
2. dann die Variablen deklarieren (global oder in Procedure):

Delphi-Quellcode:
var
  Koordinate: TKoordRec;              // für die Zwischenspeierung der Werte
  KoordinatenDatei: File of TKoordRec; // typisierte Datei, hier werden die Werte mit Hilfe der Records gespeichert
3. Werte in Datei schreiben:

Delphi-Quellcode:
procedure MachnuwasmitdenKoordinaten;
begin
  AssignFile(KoordinatenDatei, Dateiname);           // Datei zuweisen
  Reset(KoordinatenDatei);                           // Datei öffnen
  Seek(KoordinatenDatei, FileSize(KoordinatenDatei)); // Datensatzzeiger an das Ende der Datei bewegen
  Koordinate.x := 1;
  Koordinate.y := 2.34567;
  Write(KoordinatenDatei, Koordinate);               // die aktuellen Werte speichern
  CloseFile(KoordinatenDatei);                       // Datei schließen
end;
4. zum Lesen aus der Datei:

Delphi-Quellcode:
procedure NuliesdieKoordinaten(welchenDatensatz: Integer);
begin
  AssignFile(KoordinatenDatei, Dateiname);  // Datei zuweisen
  Reset(KoordinatenDatei);                  // Datei öffnen
  Seek(KoordinatenDatei, welchenDatensatz-1);// Datensatzzeiger an gewünschte Position bewegen
  Read(KoordinatenDatei, Koordinate);       // die aktuellen Werte lesen
  CloseFile(KoordinatenDatei);              // Datei schließen
end;
Mit Schaltflächen (<< und >>) zum "Browsen" in der Datei kann man eine simple Datenbank erstellen, die jeweils nach ButtonClick den nächsten bzw. vorherigen Datensatz aus der Datei liest und darstellt.

Als Anhang habe ich das Beispiel bereitgestellt, wie ich es in der Vorlesung gebracht habe.


Gruß
Michael

fkerber 27. Jun 2006 23:38

Re: Record-Datei anlegen
 
Hi!

Zwei Tipps noch zu dem bereits sehr ausführlichen Post meines Vorschreibers :thumb:

Damit Delphi weiß, wo ein Datensatz in der typisierten Datei aufhört, müssen alle Elemente des Records bekannte Längen haben. Bei
Strings an sich ist dies aber nicht gegeben. Deshalb müssen Strings eine Längenangabe "mit sich tragen":

Delphi-Quellcode:
type
  TKoordRec = record
    x,
    y: Double;
    info: string[20];
  end;
Was das Öffnen zum Schreiben angeht, empfiehlt sich ein Blick unter Delphi-Referenz durchsuchenappend


Ciao Frederic

Michael Habbe 28. Jun 2006 00:29

Re: Record-Datei anlegen
 
Zitat:

Zitat von fkerber
Was das Öffnen zum Schreiben angeht, empfiehlt sich ein Blick unter Delphi-Referenz durchsuchenappend

Aber bitte nur bei Dateien vom Typ "Textfile", bei dem oben verwendeten Typ funktioniert nur "Reset" zum Schreiben in die Datei.

Klaus01 28. Jun 2006 07:03

Re: Record-Datei anlegen
 
um auch noch meinen Senf dazu abzugeben,

wenn die Datei noch nicht existitert, muß sie meines Wissens mit
Delphi-Quellcode:
rewrite(datei)
erstellt werden, nur ein reset zum Erstellen wird
wohl eine Fehlermeldung bringen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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