@@ -127,7 +127,7 @@ interface
127127
128128
129129function GetSymbolsTable : PHashTable;
130- function GetTrackHash (Name : AnsiString ) : PHashTable;
130+ function GetTrackHash (Name : zend_ustr ) : PHashTable;
131131function GetSAPIGlobals : Psapi_globals_struct; overload;
132132function GetSAPIGlobals (TSRMLS_DC : pointer) : Psapi_globals_struct; overload;
133133// procedure phperror(Error : zend_pchar);
@@ -244,7 +244,7 @@ function PG(TSRMLS_DC : pointer) : Pphp_Core_Globals;
244244
245245procedure PHP_FUNCTION (var AFunction : zend_function_entry; AName : zend_pchar; AHandler : pointer);
246246
247- function LoadPHP (const DllFileName: AnsiString = PHPWin) : boolean;
247+ function LoadPHP (const DllFileName: zend_ustr = PHPWin) : boolean;
248248
249249procedure UnloadPHP ;
250250
@@ -254,8 +254,8 @@ function PHPLoaded : boolean;
254254procedure CheckPHPErrors ;
255255{ $ENDIF}
256256
257- function FloatToValue (Value : Extended): AnsiString ;
258- function ValueToFloat (Value : AnsiString ) : extended;
257+ function FloatToValue (Value : Extended): zend_ustr ;
258+ function ValueToFloat (Value : zend_ustr ) : extended;
259259
260260
261261var
@@ -357,7 +357,7 @@ function GetSymbolsTable : PHashTable;
357357
358358{ $ENDIF}
359359
360- function GetTrackHash (Name : AnsiString ) : PHashTable;
360+ function GetTrackHash (Name : zend_ustr ) : PHashTable;
361361var
362362 data : ^ppzval;
363363 arr : PHashTable;
@@ -431,7 +431,7 @@ function zval2variant(value : zval) : variant;
431431 IS_NULL : Result := NULL;
432432 IS_LONG : Result := Value .value .lval;
433433 IS_DOUBLE : Result := Value .value .dval;
434- IS_STRING : Result := AnsiString (Value .Value .str.val);
434+ IS_STRING : Result := zend_ustr (Value .Value .str.val);
435435 IS_BOOL : Result := Boolean(Value .Value .lval);
436436 else
437437 Result := NULL;
@@ -495,7 +495,7 @@ procedure variant2zval(value : variant;var z : pzval);
495495 ZVAL_NULL(z);
496496 Exit;
497497 end ;
498- // MessageBoxA(0, zend_pchar(AnsiString ( TVarData(Value).VType.ToString)), '', 0 ) ;
498+ // MessageBoxA(0, zend_pchar(zend_ustr ( TVarData(Value).VType.ToString)), '', 0 ) ;
499499 case TVarData(Value ).VType of
500500 varString : // Peter Enz
501501 begin
@@ -513,7 +513,7 @@ procedure variant2zval(value : variant;var z : pzval);
513513 begin
514514 S := string(TVarData(Value ).VUString);
515515
516- ZVAL_STRING(z, zend_pchar(AnsiString (S)), true);
516+ ZVAL_STRING(z, zend_pchar(zend_ustr (S)), true);
517517 end ;
518518
519519 varOleStr : // Peter Enz
@@ -604,7 +604,7 @@ procedure php_end_implicit_flush(TSRMLS_D : pointer);
604604{ $ENDIF}
605605
606606
607- function LoadPHP (const DllFileName: AnsiString = PHPWin) : boolean;
607+ function LoadPHP (const DllFileName: zend_ustr = PHPWin) : boolean;
608608
609609begin
610610 Result := false;
@@ -927,7 +927,7 @@ function GetFilesVariables : pzval;
927927end ;
928928
929929
930- function FloatToValue (Value : Extended): AnsiString ;
930+ function FloatToValue (Value : Extended): zend_ustr ;
931931var
932932 { $IFDEF VERSION12}
933933 c: WideChar;
@@ -944,7 +944,7 @@ function FloatToValue(Value: Extended): AnsiString;
944944 end ;
945945end ;
946946
947- function ValueToFloat (Value : AnsiString ) : extended;
947+ function ValueToFloat (Value : zend_ustr ) : extended;
948948var
949949 { $IFDEF VERSION12}
950950 c: WideChar;
@@ -962,16 +962,52 @@ function ValueToFloat(Value : AnsiString) : extended;
962962end ;
963963
964964
965+ { $IFDEF Linux}
966+ function GetPHPVersion : TPHPFileInfo;
967+ begin
968+
969+ end ;
970+ { $ELSE}
965971function GetPHPVersion : TPHPFileInfo;
966972var
967- FileName: AnsiString;
973+ FileName: { $IFDEF PHP_UNICE} String{ $ELSE} AnsiString{ $ENDIF} ;
974+ InfoSize, Wnd: DWORD;
975+ VerBuf: Pointer;
976+ FI: PVSFixedFileInfo;
977+ VerSize: DWORD;
968978begin
969979 Result.MajorVersion := 0 ;
970980 Result.MinorVersion := 0 ;
971981 Result.Release := 0 ;
972982 Result.Build := 0 ;
973983 FileName := PHPWin;
984+ { $IFDEF PHP_UNICE}
985+ InfoSize := GetFileVersionInfoSize(PWideChar(Filename), Wnd);
986+ { $ELSE}
987+ InfoSize := GetFileVersionInfoSizeA(PAnsiChar(FileName), Wnd);
988+ { $ENDIF}
989+ if InfoSize <> 0 then
990+ begin
991+ GetMem(VerBuf, InfoSize);
992+ try
993+ { $IFDEF PHP_UNICE}
994+ if GetFileVersionInfo(PWideChar(FileName), Wnd, InfoSize, VerBuf) then
995+ { $ELSE}
996+ if GetFileVersionInfoA(PAnsiChar(FileName), Wnd, InfoSize, VerBuf) then
997+ { $ENDIF}
998+ if VerQueryValue(VerBuf, ' \' , Pointer(FI), VerSize) then
999+ begin
1000+ Result.MajorVersion := HIWORD(FI.dwFileVersionMS);
1001+ Result.MinorVersion := LOWORD(FI.dwFileVersionMS);
1002+ Result.Release := HIWORD(FI.dwFileVersionLS);
1003+ Result.Build := LOWORD(FI.dwFileVersionLS);
1004+ end ;
1005+ finally
1006+ FreeMem(VerBuf);
1007+ end ;
1008+ end ;
9741009end ;
1010+ { $ENDIF}
9751011
9761012initialization
9771013{ $IFDEF PHP4DELPHI_AUTOLOAD}
0 commit comments