Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IniFile zu langsam (https://www.delphipraxis.net/56821-inifile-zu-langsam.html)

alzaimar 12. Nov 2005 12:16

Re: IniFile zu langsam
 
Zitat:

Zitat von Neutral General
...Ich würde gerne mal die TFastIniFile von r4id3n ...

Wer hats erfunden? :mrgreen:
Kriegste später, ich bin grad unterwegs.

neolithos 14. Nov 2005 01:31

Re: IniFile zu langsam
 
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;

Neutral General 14. Nov 2005 12:43

Re: IniFile zu langsam
 
Ja hab das Problem jetzt eingermaßen mit Filestreams in den Griff bekommen.
Siehe meinen RPG-Editor Thread

Danke nochmal an alle :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz