From 2739344796b8cee5d644ef48bb88dc46a305d327 Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Sat, 4 Sep 2010 15:28:39 +0000 Subject: [PATCH] Fixes the compilation of the LCL for WinCE by fixing the new winfileutils to work with WinCE git-svn-id: trunk@27266 - --- lcl/include/winfileutil.inc | 113 ++++++++++++++++++++++++++---------- 1 file changed, 83 insertions(+), 30 deletions(-) diff --git a/lcl/include/winfileutil.inc b/lcl/include/winfileutil.inc index 130cd0db01..8165414a3f 100644 --- a/lcl/include/winfileutil.inc +++ b/lcl/include/winfileutil.inc @@ -122,6 +122,9 @@ function ConsoleToUTF8(const s: string): string;// converts UTF8 string to conso var Dst: PChar; begin + {$ifdef WinCE} + Result := SysToUTF8(s); + {$else} Dst := AllocMem((Length(s) + 1) * SizeOf(Char)); if OemToChar(PChar(s), Dst) then Result := StrPas(Dst) @@ -129,22 +132,28 @@ begin Result := s; FreeMem(Dst); Result := SysToUTF8(Result); + {$endif} end; function UTF8ToConsole(const s: string): string; var Dst: PChar; begin + {$ifdef WinCE} + Result := UTF8ToSys(s); + {$else} Result := UTF8ToSys(s); Dst := AllocMem((Length(Result) + 1) * SizeOf(Char)); if CharToOEM(PChar(Result), Dst) then Result := StrPas(Dst); FreeMem(Dst); + {$endif} end; {------------------------------------------------------------------------------ FileSize ------------------------------------------------------------------------------} +{$ifndef WinCE} function FileSizeAnsi(const Filename: string): int64; var FindData: TWIN32FindDataA; @@ -164,6 +173,7 @@ begin Result:=(int64(FindData.nFileSizeHigh) shl 32)+FindData.nFileSizeLow; Windows.FindClose(FindHandle); end; +{$endif} function FileSizeWide(const Filename: string): int64; var @@ -188,18 +198,23 @@ end; {------------------------------------------------------------------------------ FindFirstUTF8 ------------------------------------------------------------------------------} +{$ifndef WinCE} function FindFirstAnsi(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; begin Result:=SysUtils.FindFirst(UTF8ToSys(Path),Attr,Rslt); Rslt.Name:=SysToUTF8(Rslt.Name); end; +{$endif} function WinToDosTime (Var Wtime : TFileTime;var DTime:longint):longbool; var lft : TFileTime; begin - WinToDosTime:=FileTimeToLocalFileTime(WTime,lft) and - FileTimeToDosDateTime(lft,Longrec(Dtime).Hi,LongRec(DTIME).lo); + WinToDosTime:=FileTimeToLocalFileTime(WTime,lft) + {$ifndef WinCE} + and FileTimeToDosDateTime(lft,Longrec(Dtime).Hi,LongRec(DTIME).lo) + {$endif} + ; end; function FindMatch(var f: TSearchRec) : Longint; @@ -226,6 +241,9 @@ var ws : WideString; an : AnsiString; begin + {$ifdef WinCE} + ansi := wide; + {$else} SetLength(ws, length(wide.cAlternateFileName)); Move(wide.cAlternateFileName[0], ws[1], length(ws)*2); an:=ws; // no need to utf8 for cAlternateFileName (it's always ansi encoded) @@ -236,7 +254,8 @@ begin ansi.cFileName:=an; if length(an) 4 then begin - FileSize_:=@FileSizeWide; - FileGetAttr_:=@FileGetAttrWide; - FileSetAttr_:=@FileSetAttrWide; - DeleteFile_:=@DeleteFileWide; - RenameFile_:=@RenameFileWide; - SetCurrentDir_:=@SetCurrentDirWide; - GetCurrentDir_:=@GetCurrentDirWide; - CreateDir_:=@CreateDirWide; - RemoveDir_:=@RemoveDirWide; - FindFirst_:=@FindFirstWide; - FindNext_:=@FindNextWide; - FindClose_:=@FindCloseWide; + {$ifndef WinCE} + if Win32MajorVersion <= 4 then + begin + FileSize_:=@FileSizeAnsi; + FileGetAttr_:=@FileGetAttrAnsi; + FileSetAttr_:=@FileSetAttrAnsi; + DeleteFile_:=@DeleteFileAnsi; + RenameFile_:=@RenameFileAnsi; + SetCurrentDir_:=@SetCurrentDirAnsi; + GetCurrentDir_:=@GetCurrentDirAnsi; + CreateDir_:=@CreateDirAnsi; + RemoveDir_:=@RemoveDirAnsi; + FindFirst_:=@FindFirstAnsi; + FindNext_:=@FindNextAnsi; + FindClose_:=@FindCloseAnsi; end; + {$endif} end;