statische Variable

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Mathias
Beiträge: 6163
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: statische Variable

Beitrag von Mathias »

Da ich die Funktion ReadFileToString noch nicht kannte, habe ich sie mir genauer angeguckt.

Wieso wird da ein Umweg über "s" gemacht, und die Daten nicht direkt in Result geschrieben ?

Code: Alles auswählen

// fileutil.inc, ab Zeile 745
function ReadFileToString(const Filename: String): String;
var
  SrcHandle: THandle;
  ReadCount: LongInt;
  s: String;
begin
  Result := '';
  s:='';
  try
    Setlength(s, FileSize(Filename));
    if s='' then exit;
    SrcHandle := LazFileUtils.FileOpenUTF8(Filename, fmOpenRead or fmShareDenyWrite);
    if (THandle(SrcHandle)=feInvalidHandle) then
      exit;
    try
      ReadCount:=FileRead(SrcHandle,s[1],length(s));
      if ReadCount<length(s) then
        exit;
    finally
      FileClose(SrcHandle);
    end;
    Result:=s;
  except
    // ignore errors, Result string will be empty
  end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten