Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Einstellungen direkt aus der Programmdatei lesen

  Alt 16. Nov 2006, 14:17
Okey, da hätte ich selber draufkommen können War nur ein dummer Fehler, hab ich grade gemerkt. Also so gehts:

Delphi-Quellcode:
var
  szReadData: Array[0..16] of Char;
  szData: PChar;
  iBytesRead: DWORD;
  fhSource: THandle;
  FSize: int64;
  CfgFile: TStringList;
begin
  //Dateigröße ermitteln
  szReadData := '';
  iBytesRead := 0;
  fhSource := INVALID_HANDLE_VALUE;

  fhSource := CreateFile(PChar(ParamStr(0)),
                           GENERIC_READ,
                           FILE_SHARE_READ,
                           nil,
                           OPEN_EXISTING,
                           0,
                           0);

  if (fhSource <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(fhSource, -15, nil, FILE_END);
    ReadFile(fhSource, szReadData, 15, iBytesRead, nil);
    CloseHandle(fhSource);
    if (iBytesRead = 15) then
    begin
      showmessage(Trim(Copy(szReadData, 1, 15)));
      try
        FSize := StrToInt(Trim(Copy(szReadData, 1, 15)));
      except
        Exit;
      end;
    end;
  end
    else
  begin
    Exit;
  end;

  //Datei auslesen
  GetMem(szData, FSize);
  iBytesRead := 0;
  fhSource := INVALID_HANDLE_VALUE;

  fhSource := CreateFile(PChar(ParamStr(0)),
                           GENERIC_READ,
                           FILE_SHARE_READ,
                           nil,
                           OPEN_EXISTING,
                           0,
                           0);


  if (fhSource <> INVALID_HANDLE_VALUE) then
  begin
    SetFilePointer(fhSource, -(FSize + 15), nil, FILE_END);
    ReadFile(fhSource, szData^, FSize, iBytesRead, nil);
    CloseHandle(fhSource);

    if (iBytesRead = FSize) then
    begin

      CfgFile := TStringList.Create;
      try;
        CfgFile.DelimitedText := Copy(szData, 1, FSize);
        showmessage(cfgfile.text);
      finally
        CfgFile.Free;
      end;
    end;
  end;
end;
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat