Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: [Delphi] ASM => applicationdata

  Alt 6. Mär 2008, 18:06
Ich hoffe kein anderer versucht mit Hilfe der bisher geposteten Codes (Zacherl mal ausgenommen) was zu lernen.


@1234588: Wen denkst du wieviele Bytes du mit New(P) [P: PChar] reservierst? Genau ein einziges. Die Kompressionsalgorithmen sind zwar mittlerweile recht gut, aber so gut auch wieder nicht als dass sie einen mehrere Zeichen umfassenden Pfad in ein Byte quetschen könnten.

Nun zu dem Pascal-Assembler Gemisch. Assembler ist gar nicht notwendig und macht das ganze nur kompliziert.
Delphi-Quellcode:
function GetWindowsDirectory: string;
var
  path: array[0..MAX_PATH] of Char;
begin
  SetString(Result, path, GetWindowsDirectory(path, SizeOf(path)));
  Result := Result + '\';
end;
Und nun zur Lösung des Problems:
Delphi-Quellcode:
function GetSpecialPath(nFolder: Integer): string;
var
  Buffer: array[0..MAX_PATH] of Char;
begin
  if SHGetSpecialFolderPath(Application.Handle, Buffer, nFolder, False) then
    Result := Buffer
  else
    RaiseLastOSError;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage( GetSpecialPath(CSIDL_APPDATA) );
end;
  Mit Zitat antworten Zitat