Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi AssignFile & Unicode-Dateinamen (https://www.delphipraxis.net/98248-assignfile-unicode-dateinamen.html)

Dunkel 23. Aug 2007 22:17


AssignFile & Unicode-Dateinamen
 
Hallo zusammen!

Wie kann man eine Datei mit einem Unicode-Dateinamen erstellen/öffnen/löschen?

Konkret geht es mir um folgende Prozedur welche ich entsprechend umschreiben möchte
Delphi-Quellcode:
uses ..., System, zLib, ...;

procedure CompressFile(FileName: string);
var
  f: File of byte;
  pIn,pOut: Pointer;
  sizeRead,sizeWrite: integer;
begin
  pIn := nil;
  pOut := nil;
  assignfile(f, FileName);
  reset(f);
  try
    getmem(pIn, FileSize(f));
    BlockRead(f, pIn^, FileSize(f), sizeRead);
    CompressBuf(pIn, sizeRead, pOut, sizeWrite);
    ReWrite(f);
    BlockWrite(f, pOut^, sizeWrite);
  finally
    if pIn <> nil then freemem(pIn);
    if pOut <> nil then freemem(pOut);
    CloseFile(f);
  end;
end;
AssignFile erwartet als Parameter eine Dateivariable und einen Dateinamen, leider nur als String.

In den Tiefen der Win32-API wird es doch sicherlich was brauchbares geben, leider habe ich nichts gefunden. :?

Dezipaitor 23. Aug 2007 22:32

Re: AssignFile & Unicode-Dateinamen
 
Direkt mit API ist CreateFileW deine Antwort. Entgegen dem Name, kann man auch einfach Dateien öffnen.

Ich glaub bei den TNTClasses gibts auch nen TWideFileString oder so (musste jedoch wirklich suchen, da sie nicht mehr angeboten werden (oder so)).

Dunkel 23. Aug 2007 22:35

Re: AssignFile & Unicode-Dateinamen
 
Zitat:

Zitat von Dezipaitor
Direkt mit API ist CreateFileW deine Antwort.

Vielen Dank! Das ist so ziemlich genau das was ich gesucht habe.

Muetze1 24. Aug 2007 22:40

Re: AssignFile & Unicode-Dateinamen
 
Ansonsten schau mal in meine ID3Lib auf meiner HP, die benutzt einen TFileStream der mit Unicode Dateinamen umgehen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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