Autor Beitrag
Gelmo
Hält's aus hier
Beiträge: 5
Erhaltene Danke: 1

Win XP
Delphi 2005 prof.
BeitragVerfasst: So 02.10.05 14:24 
Hallo!
Ich habe folgenden Record definiert, der als Datensatz in eine typisierte Datei gespeichert werden soll. Jeder Datensatz soll ein Wort, dessen Silben und ein dazu passendes Bild aufnehmen (Mir ist bewusst, dass das auch einfacher und eleganter geht, aber ich möchte experimentieren):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Type
  TWort = record
    gWort : String[80];
    Silbe : Array[1..10of String[8];
    SZahl : Integer;
    Bild  : TBitmap;
  end;
Var
  Wort : TWort;


Es gelingt mir, in einer Eingabeform (Form3) das Wort nebst Silben einzugeben, das passende Bild als Bitmap (200x200) in eine Imagekomponente zu laden und den Datensatz zu speichern. In der folgenden Routine möchte ich die Datei zum Testen lesen und wieder in das Eingabeformular einfügen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
procedure TForm3.Button4Click(Sender: TObject);
// Button mit Beschriftung 'Test', soll bei jedem Klick
// den nächsrten Datensatz anzeigen
var
  ui, uj    : Byte;
  hWort     : String;
begin
  if hz=0 then begin  // Es wurde noch kein Datensatz gelesen
    Assignfile(WDatei,WDatOrt);
    reset(WDatei);
    DOpenFlag:=true;
    hz:=FileSize(WDatei);
    if mz=0 then begin
      ui:=0;
    end;
  end;
  ui:=succ(ui);
  mz:=ui;
  if ui<=hz then begin
    seek(Wdatei,ui-1);
    read(WDatei,Wort);
    Edit1.Text:=Wort.gWort;
    hWort:='';
    for uj:=1 to Neuwort.SZahl do
      hWort:=hWort+Neuwort.Silbe[ui];
    Edit2.Text:=hWort;
    Image1.Picture.Bitmap:=Wort.Bild; // *****
  end
  else begin
    closefile(WDatei);
    DOpenFlag:=false;
    Button4.Visible:=false;
  end;
end;
.
.
.
Initialization
  ui:=0;
  hz:=0

end.


Dabei führt die oben mit Sternchen markierte Zeile zu der Fehlermeldung:

Im Projekt SilDatGen401.exe ist eine Exception der Klasse EAccessViolation mit der Meldung ’Zugriffsverletzung bei Adresse 00420DA1 im Modul SilDatGen401.exe’ Lesen von Adresse 00000049’ aufgetreten.

Kann mir das jemand erklären?
Vielen Dank für eure Unterstützung!
MfG

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
Gelmo Threadstarter
Hält's aus hier
Beiträge: 5
Erhaltene Danke: 1

Win XP
Delphi 2005 prof.
BeitragVerfasst: So 02.10.05 14:55 
Titel: Korrektur:
Hallo!
In dem Listing ist ein Fehler, den ich beim posten übersehen habe:
Die Variable "Neuwort" muss durch "Wort" ersetzt werden.
Sorry!
MfG