![]() |
Re: [TFileStream] Widestring Dateinamen
Zitat:
Delphi-Quellcode:
uses
{$IFDEF COMPILER_6_UP} RTLConsts, {$ELSE} Consts, {$ENDIF} |
Re: [TFileStream] Widestring Dateinamen
Zitat:
> SFCreateErrorEx > SFOpenErrorEx |
Re: [TFileStream] Widestring Dateinamen
Zitat:
Delphi-Quellcode:
{ TUnicodeFileStream }
Constructor TUnicodeFileStream.Create(Const FileName: WideString; Const AMode: Word); Var CreateHandle: Integer; Begin If ( AMode = fmCreate ) Then Begin CreateHandle := WideFileCreate(FileName); If ( CreateHandle < 0 ) Then Raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); End Else Begin CreateHandle := WideFileOpen(FileName, AMode); If ( CreateHandle < 0 ) Then Raise EFOpenError.CreateResFmt(PResStringRec(@SFOpenError), [FileName]); End; Inherited Create(CreateHandle); End; |
Re: [TFileStream] Widestring Dateinamen
OK, dann noch ohne die ...Ex-Strings
Delphi-Quellcode:
falls des mit den CONDITIONALEXPRESSIONS ( {$IF ...} ) in der DelphiVersion noch nicht klappt, dann sag Bescheid.
// UnicodeFileStream.pas
Unit UnicodeFileStream; Interface Uses {$IF CompilerVersion >= 14.0}RTLConsts{$ELSE}Consts{$IFEND}, Windows, SysUtils, Classes; Type TFileStreamX = Class(TFileStream) Public Constructor Create(Const FileName: WideString; Mode: Word); Overload; Constructor Create(Const FileName: WideString; Mode: Word; Rights: Cardinal); Overload; Destructor Destroy; Override; End; Implementation Constructor TFileStreamX.Create(Const FileName: WideString; Mode: Word); Begin Create(Filename, Mode, 0); End; Constructor TFileStreamX.Create(Const FileName: WideString; Mode: Word; Rights: Cardinal); Const AccessMode: Array[0..2] of LongWord = (GENERIC_READ, GENERIC_WRITE, GENERIC_READ or GENERIC_WRITE); ShareMode: Array[0..4] of LongWord = (0, 0, FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE); Begin If Mode = fmCreate Then Begin Inherited Create(CreateFileW(PWideChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)); If FHandle < 0 Then Raise EFCreateError.CreateFmt(SFCreateError, [ExpandFileName(FileName)]); End Else Begin If ((Mode and 3) <= fmOpenReadWrite) and ((Mode and $F0) <= fmShareDenyNone) Then Begin Inherited Create(CreateFileW(PWideChar(FileName), AccessMode[Mode and 3], ShareMode[(Mode and $F0) shr 4], nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)); End Else Inherited Create(0); If FHandle < 0 Then Raise EFOpenError.CreateFmt(SFOpenError, [ExpandFileName(FileName)]); end; End; Destructor TFileStreamX.Destroy; Begin If FHandle >= 0 Then FileClose(FHandle); Inherited Destroy; End; End. bzw. hast du die JEDI's installiert? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 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