Einzelnen Beitrag anzeigen

Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#1

Problem mit TFileStream.Read

  Alt 5. Apr 2010, 11:42
Frohe Ostern!

Tut mir Leid, falls der Titel nicht allzu aussagekräftig sein sollte, aber was besseres fällt mir dazu nicht ein:

Delphi-Quellcode:
procedure TMazeEditor.LoadBinClick(Sender: TObject);
var
  MazeStream: TStream;
  x,y, StrLength, dummyInt: Integer;
  TmpStr: String;
  TmpByte: Byte;
begin
  if OpenDialog1.Execute then
  begin
    try
      MazeStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
      MazeStream.Read(StrLength, SizeOf(StrLength));
      MazeStream.Read(TmpStr, StrLength);
      if TmpStr = 'irgendein bestimmter String...then
      begin
So sieht der Anfang der Prozedur im einen Projekt aus (ein Editor für ein kleines Spiel, womit ich gerade anfange), und so im eigentlichen Spiel:
Delphi-Quellcode:
procedure TMazeGame.LoadMazeFromFile(AFile: String);
var
  MazeStream: TStream;
  x,y, StrLength, dummyInt: Integer;
  TmpStr: String;
  TmpByte: Byte;
begin
  try
    MazeStream := TFileStream.Create(AFile, fmOpenRead); //der Pfad scheint richtig zu sein
    MazeStream.Read(StrLength, SizeOf(StrLength)); //StrLength ist hiernach merkwürdigerweise nur 4
    MazeStream.Read(TmpStr, StrLength);
    if TmpStr = 'irgendein bestimmter String...then //hier kommt der Fehler
    begin
Im Editor funktioniert das Laden perfekt, allerdings kommt im eigentlichen Spiel beim Laden derselben Datei bei der If-Abfrage diese Exception:
"Im Projekt LS_Maze.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00405D49 in Modul 'LS_Maze.exe'. Lesen von Adresse FFFFFFFC' aufgetreten."
Seltsam finde ich auch, dass nachher trotz "try" eine Fehlermeldung kommt.
Das Programm nochmal extra mit Administratorrechten zu starten hat auch nichts gebracht.
Woran könnte das liegen? (Ich schätze, ich habe wieder irgendwas Einfaches übersehen )
  Mit Zitat antworten Zitat