Hallo,
ich habe ewig lange gegoogelt und konnte mein Problem dennoch nicht lösen
Folgende Situation:
Im Browserspiel OGame gibt es Spionageberichte (von den Planeten / Monden anderer Spieler). Damit unsere Allianz (sowas wie ein Clan) immer up-to-date ist im Bezug auf die Berichte, programmiere ich atm an einer kleinen Datenbank.
Diese enthält u.A. einen Record für die Erfassung der Informationen, diese wiederum werden in einem Feld gespeichert und sollen (als erster Schritt) in eine Datei geschrieben werden. Folgender Quellcode
Delphi-Quellcode:
type
{ TKoordinaten }
TKoordinaten = record
Galaxie: 1 .. 9;
Sonnensystem: 1 .. 499;
Position: 1 .. 15;
end;
{ TTag }
TTag = record
Tag: 1 .. 31;
Monat: 1 .. 12;
Jahr: 1900 .. 3000;
end;
{ TZeit }
TZeit = record
Stunde: 0 .. 23;
Minute: 0 .. 59;
Sekunde: 0 .. 60;
end;
{ TSpioDB }
TSpioDB = record
Koordinaten: TKoordinaten;
Mond: boolean;
Tag: TTag;
Zeit: TZeit;
Spionagebericht: string;
Autor: string;
end;
{ TDB }
TDB = array of TSpioDB;
{ TSpioFile }
TSpioFile = File of TSpioDB;
Und hier die Speichern- und Laden-Unterprogramme (inklusive Funktion zur Bestimmung der Dateigröße):
Delphi-Quellcode:
{ GetFileSizeEx }
function GetFileSizeEx(
const AFileName:
string): Int64;
var
F: TSearchRec;
begin
Result := -1;
if FindFirst(AFileName, faAnyFile, F) = 0
then
begin
try
Result := F.FindData.nFileSizeLow
or (F.FindData.nFileSizeHigh
shl 32);
finally
SysUtils.FindClose(F);
end;
end;
end;
{ LoadDatenbank }
procedure LoadDatenbank(
var db: TDB;
var count: integer; s:
string;
var b: boolean);
var
spiofile: TSpioFile;
i, size, n: integer;
begin
b := false;
size := GetFileSizeEx(s);
count := size
div sizeof(TSpioDB);
SetLength(
db, count);
try
AssignFile(spiofile, s);
Reset(spiofile);
for i := Low(
db)
to (High(
db) - 1)
do
Read(spiofile,
db[i]);
b := true;
finally
CloseFile(spiofile);
end;
end;
{ SaveDatenbank }
function SaveDatenbank(
db: TDB; s:
string): boolean;
var
spiofile: TSpioFile;
i: integer;
begin
result := false;
try
AssignFile(spiofile, s);
Rewrite(spiofile);
for i := Low(
db)
to (High(
db) - 1)
do
Write(spiofile,
db[i]);
result := true;
finally
CloseFile(spiofile);
end;
end;
Mein Problem ist jetzt: wenn ich Datensätze anlege (machen andere Unterprogramme fehlerfrei - hab mir nach der Eingabe welche ausgeben lassen) und abspeichere, dannach das Programm neu starte und die Datei öffnen will, werden u.A. "Spionagebericht: string" nicht geladen und können nicht ausgegeben werden.
Kann mir jemand helfen?
Wenn irgendwas unklar ist dann nochmal nachfragen, kann auch sein, dass ich jetzt irgendwas wichtiges vergessen habe
Danke im Vorraus
LG Glocke