![]() |
Re: Array als Datei speichern
Ich frage mich, warum er bei dir nicht abstürzt und bei mir schon :/ grml. Ich hbae den code nur angepasst, nicht mehr.
code : siehe editieren Beitrag MfG //edit: wenn ich bei mir erst "lesen" lasse und dann auf speichern klicke stürzt das Programm ebenfalls mit einer Zugriffsverletzung ab. |
Re: Array als Datei speichern
Du benutzt nach wie vor normale strings in deinem record, und nicht string[?].
Zu TReader und TWriter (Filer) hab ich hier mal was geschrieben: ![]() |
Re: Array als Datei speichern
Zitat:
Vielleicht ist es für dich trivial, jedoch vermag ich es nicht zu verstehen. MfG |
Re: Array als Datei speichern
Du musst ShortStrings benutzen, also entwerde
Delphi-Quellcode:
oder mit direkter Längenangabe:
s: ShortString;
Delphi-Quellcode:
s: String[55];
|
Re: Array als Datei speichern
@maximov
Hattest du nicht zusammen mit Jens einen TCollection descendant gebastelt? Ich hatte ihn nie ausprobiert, aber mit Interesse euren Fortschritt verfolgt. Ich persönlich ziehe Objekte dem Hantieren mit primitiven Typen vor, mit dem TCollection-Abkömmling bekommt man anscheinend eine hübsche Möglichkeit zur Objektpersistenz. ;) Nachtrag: Hab's gefunden... ![]() |
Re: Array als Datei speichern
Delphi-Quellcode:
Beim zweiten Mal stürzt das Programm ebenfalls ab. Angeblich wieder wegen einer Zugriffsverletzung ( Habe strings auf 10 Zeichen begrenzt!)
procedure TForm1.SpeedButton3Click(Sender: TObject);
var fs: TFileStream; m: Integer; begin if opendialog1.execute then begin fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);{ExtractFilePath(ParamStr(0))+'HighScore.hs'} try try // erstmal wieder leeren for m := 0 to length(testr) - 1 do begin testr[m].bzeit := ''; testr[m].name := ''; testr[m].versuch := 0; end; // aus Datei einlesen fs.ReadBuffer(testr, sizeof(testr)); except // Lesefehler aufgetreten on E: EReadError do ShowMessage(E.Message); end; finally // fs wieder freigeben FreeAndNil(fs); end; end; end; Wenn ich es ohne OpenDialog mache klappt es wunderbar. Dafür schon mal ein großes Dankeschön :) MfG |
Re: Array als Datei speichern
Dann geh mal mit F7 durch den Quellcode durch.
|
Re: Array als Datei speichern
Mit TReader und TWriter habe ich nur schlechte Erfahrungen gemacht, z.B. war die Größe des Filestreams nach den ersten Aufruf von ReadString() plötzlich Null. Für einfache Datentypen wie Integer, String und Double hab ich mir deshalb einfache, eigene TFiler-Klassen zusammengeschustert... die sind aber so billig, dass ich mich nicht traue, die jetzt auch noch hier reinzuposten *g*
PS: Es ist zwar Geschmackssache, aber anstelle eines Arrays würde ich eher zu TList und anstelle von Records eher zu class(TObject) tendieren |
Re: Array als Datei speichern
@Mr_Anderson
Delphi-Quellcode:
var testr : array[[color=red]1[/color]..20] of zeiten;
Delphi-Quellcode:
du definierst dein array von 1.. und greifst aber auf 0. Element zu. über eine Zugriffsverletzung brauchst du dich dann nicht zu wundern ;)
// erstmal wieder leeren
for m := [color=red]0[/color] to length(testr) - 1 do begin testr[m].bzeit := ''; testr[m].name := ''; testr[m].versuch := 0; end; Zitat:
Mfg Frank |
Re: Array als Datei speichern
Hi
Warum eigentlich immer so ganz kleine Fehler mir passieren :) :wall: :wall: Herzlichen Dank an Keldorn. Jetzt funktioniert es. Was mich jetzt dennoch interessiert, was du damit genau meinst Zitat:
MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 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 by Thomas Breitkreuz