Thema: Delphi IniFile zu langsam

Einzelnen Beitrag anzeigen

neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#22

Re: IniFile zu langsam

  Alt 14. Nov 2005, 00: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!
  Mit Zitat antworten Zitat