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
)