AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte RtlVclOptimize 2.77 - DelphiSpeedUp Code im eigenen Programm
Thema durchsuchen
Ansicht
Themen-Optionen

RtlVclOptimize 2.77 - DelphiSpeedUp Code im eigenen Programm

Ein Thema von jbg · begonnen am 8. Mai 2007 · letzter Beitrag vom 7. Mai 2008
 
Benutzerbild von bigg
bigg

Registriert seit: 1. Jul 2007
155 Beiträge
 
#32

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr

  Alt 3. Okt 2007, 16:36
Zitat von jgb:
Wenn du dein System ausbremsen willst, kannst du das ja gerne machen.
Jein.
Der Leistungsgewinn von etwa 100% überzeugen mich dann doch.
Wobei deine Funktion im WorstCase (pagefile.sys) recht bescheiden weg kommt. *hüstel*

Delphi-Quellcode:
function RTL_MOD_FileExists(const FileName: String): Boolean;
var
  Handle: THandle;
  FindData: TWin32FindData;
begin
  Result := False;
  Handle := Windows.FindFirstFile(PChar(FileName), FindData);

  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Result := ( (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 );
    Windows.FindClose(Handle);
  end;
end;


function jgbFileExists(const Filename: string): Boolean;

  function FailSafe(const Filename: string): Boolean;
  var
    FindData: TWin32FindData;
    h: THandle;
  begin
    { Either the file is locked/share_exclusive or we got an access denied }
    h := Windows.FindFirstFile(PChar(Filename), FindData);
    if h <> 0 then
    begin
      Windows.FindClose(h);
      Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
    end
    else
      Result := False;
  end;

var
  Code: Integer;
  LastError: Cardinal;
begin
  Code := Integer(Windows.GetFileAttributes(Pointer(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := Windows.GetLastError();
    Result := (LastError <> ERROR_FILE_NOT_FOUND) and
              (LastError <> ERROR_PATH_NOT_FOUND) and
              FailSafe(Filename);
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var b: Boolean;
    i: Integer;
    Start: Cardinal;
    s, FileName: String;
begin
  i := 0;
  Start := Windows.GetTickCount;
  //FileName := 'C:\pagefile.sys';
  FileName := 'C:\boot.ini';

  repeat
    //b := jgbFileExists(FileName);
    b := MyFileExists(FileName);
    inc(i);
  until (i > 100000);

  if b then
    s := 'True'
  else
    s := 'False';

  ShowMessage( IntToStr(Windows.GetTickCount - Start) + ' ms' + #13#10 + s);
end;

Gruß
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.
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