Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
Delphi 7 Architect
|
Re: IniFile zu langsam
14. Nov 2005, 01:31
Delphi-Quellcode:
procedure TEditWorld.New(Width:Integer; Height:Integer);
var x, y, iTmp : Integer;
begin
World.Width := Width;
World.Height:= Height;
if FLevel <> nil then
FLevel.Free;
FLevel := TFileStream.Create(ExtractFilePath(Application.Exename) + 'Default.dat', fmCreate);
iTmp := Width * Height;
FLevel.Write(iTmp, SizeOf(iTmp));
for y := 0 to Height - 1 do
begin // reinschreiben
for x := 0 to Width - 1 do
begin
// FLevel.WriteString('Tex' + IntToStr(i),'Tex','Wasser'); das sollte man
// eventuell via Enum lösen, damit auch ein integer geschrieben werden kann,
// vorteil: partielles laden einfach möglich
// muss es unbedingt ein String sein, gib bescheid
FLevel.Write(x, SizeOf(x));
FLevel.Write(y, SizeOf(x));
end;
end;
// FLevel.Free;
end;
Ich würde das ja eher so machen:
Delphi-Quellcode:
type
TLevelHeader = record
dwSg : Cardinal;
iHeight,
iWidth : Integer:
end;
TAreaType = (atWater, atLand);
procedure TEditWorld.New(Width:Integer; Height:Integer);
var x, y : Integer;
fTmp : TAreaType;
rHead : TLevelHeader;
begin
World.Width := Width;
World.Height:= Height;
if FLevel <> nil then
FLevel.Free;
FLevel := TFileStream.Create(ExtractFilePath(Application.Exename) + 'Default.dat', fmCreate);
rHead.dwSg := 1234567;
rHead.iHeight := Height;
rHead.iWidth := Width;
iTmp := Width * Height;
FLevel.Write(iTmp, SizeOf(iTmp));
for y := 0 to Height - 1 do
for x := 0 to Width - 1 do
begin
fTmp := atWater;
FLevel.Write(fTmp, 1);
end;
end;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
|
|
Zitat
|