From: Maël Hörz <ma...@us...> - 2008-09-17 06:59:19
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv16399/Source Modified Files: Tag: Unicode_2004_08_31 SynCompletionProposal.pas SynEdit.inc SynEdit.pas SynEditExport.pas SynEditMiscClasses.pas SynTextDrawer.pas SynUnicode.pas SynUsp10.pas Added Files: Tag: Unicode_2004_08_31 jedi.inc Log Message: - Several improvements by Erik Berry - Added jedi.inc to get more expressive IFDEFs (for example SUPPORTS_INLINE) - Fixes to the D2009 packages Index: SynCompletionProposal.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynCompletionProposal.pas,v retrieving revision 1.73.2.10 retrieving revision 1.73.2.11 diff -u -d -r1.73.2.10 -r1.73.2.11 --- SynCompletionProposal.pas 14 Sep 2008 16:24:57 -0000 1.73.2.10 +++ SynCompletionProposal.pas 17 Sep 2008 13:59:11 -0000 1.73.2.11 @@ -1518,6 +1518,7 @@ {$ENDIF} end; +{$MESSAGE 'Check what must be adapted in DoKeyPressW and related methods'} procedure TSynBaseCompletionProposalForm.DoKeyPressW(Key: WideChar); begin if Key <> #0 then Index: SynTextDrawer.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynTextDrawer.pas,v retrieving revision 1.6.2.16 retrieving revision 1.6.2.17 diff -u -d -r1.6.2.16 -r1.6.2.17 --- SynTextDrawer.pas 14 Sep 2008 16:25:03 -0000 1.6.2.16 +++ SynTextDrawer.pas 17 Sep 2008 13:59:12 -0000 1.6.2.17 @@ -253,8 +253,10 @@ implementation +{$IFDEF SYN_UNISCRIBE} uses SynUsp10; +{$ENDIF} var gFontsInfoManager: TheFontsInfoManager; @@ -280,13 +282,17 @@ // See here for details: http://groups.google.com/group/microsoft.public.win32.programmer.international/browse_thread/thread/77cd596f2b96dc76/146300208098285c?lnk=st&q=font+substitution+problem#146300208098285c function UniversalExtTextOut(DC: HDC; X, Y: Integer; Options: TTextOutOptions; Rect: TRect; Str: PWideChar; Count: Integer; ETODist: PIntegerArray): Boolean; +{$IFDEF SYN_UNISCRIBE} const SSAnalyseFlags = SSA_GLYPHS or SSA_FALLBACK or SSA_LINK; SpaceString: UnicodeString = ' '; +{$ENDIF} var TextOutFlags: DWORD; +{$IFDEF SYN_UNISCRIBE} GlyphBufferSize: Integer; saa: TScriptStringAnalysis; +{$ENDIF} begin TextOutFlags := 0; if tooOpaque in Options then @@ -294,6 +300,7 @@ if tooClipped in Options then TextOutFlags := TextOutFlags or ETO_CLIPPED; +{$IFDEF SYN_UNISCRIBE} if Usp10IsInstalled then begin // UniScribe requires that the string contains at least one character. @@ -326,6 +333,7 @@ Result := Result and Succeeded(ScriptStringFree(@saa)); end else +{$ENDIF} begin Result := ExtTextOutW(DC, X, Y, TextOutFlags, @Rect, Str, Count, Pointer(ETODist)); @@ -876,7 +884,7 @@ ReallocMem(FETODist, Length * SizeOf(Integer)); for i := 0 to Length - 1 do begin - Size := TextExtent(@Text[i], 1); + Size := TextExtent(PWideChar(@Text[i]), 1); FETODist[i] := Ceil(Size.cx / CharWidth) * CharWidth; end; end; Index: SynEdit.inc =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.inc,v retrieving revision 1.16.2.16 retrieving revision 1.16.2.17 diff -u -d -r1.16.2.16 -r1.16.2.17 --- SynEdit.inc 14 Sep 2008 16:24:57 -0000 1.16.2.16 +++ SynEdit.inc 17 Sep 2008 13:59:11 -0000 1.16.2.17 @@ -82,6 +82,29 @@ {$DEFINE SYNEDIT_INCLUDE} +{------------------------------------------------------------------------------} +{ Common compiler defines } +{ (remove the dot in front of a define to enable it) } +{------------------------------------------------------------------------------} + +{$B-,H+} // defaults are short evaluation of boolean values and long strings + +{.$DEFINE SYN_DEVELOPMENT_CHECKS} // additional tests for debugging +{$IFDEF SYN_DEVELOPMENT_CHECKS} + {$R+,Q+,S+,T+} +{$ENDIF} + +{------------------------------------------------------------------------------} +{ Pull in all defines from jedi.inc (must be done after the common compiler } +{ defines to work correctly) } +{------------------------------------------------------------------------------} + +{$I jedi.inc} + +{------------------------------------------------------------------------------} +{ SYN_WIN32, SYN_LINUX and SYN_KYLIX defines } +{------------------------------------------------------------------------------} + {$IFDEF WIN32} {$DEFINE SYN_WIN32} {$ENDIF} @@ -94,6 +117,10 @@ {$DEFINE SYN_DELPHI_6} {$ENDIF} +{------------------------------------------------------------------------------} +{ VERXXX to SYN_COMPILERX, SYN_DELPHIX and SYN_CPPBX mappings } +{------------------------------------------------------------------------------} + {$IFDEF VER200} {$DEFINE SYN_COMPILER_12} {$DEFINE SYN_DELPHI} @@ -440,21 +467,8 @@ {$ENDIF} {------------------------------------------------------------------------------} -{ Common compiler defines } -{------------------------------------------------------------------------------} - -// defaults are short evaluation of boolean values and long strings - -{$B-,H+} - -{$IFDEF SYN_WIN32} - {$IFNDEF UNICODE} - {$DEFINE OWN_UnicodeString_MEMMGR} - {$ENDIF} -{$ENDIF} - -{------------------------------------------------------------------------------} -{ Please change this to suit your needs (to activate an option remove the dot) } +{ Please change this to suit your needs (to activate an option remove the dot } +{ in front of a DEFINE) } {------------------------------------------------------------------------------} // "Heredoc" syntax highlighting @@ -464,14 +478,14 @@ // properly store Range State information {.$DEFINE SYN_HEREDOC} -// additional tests for debugging - -{.$DEFINE SYN_DEVELOPMENT_CHECKS} - -{$IFDEF SYN_DEVELOPMENT_CHECKS} - -{$R+,Q+,S+,T+} - +// Define OWN_UnicodeString_MEMMGR to speed up WideStrings-handling +{$IFDEF SYN_WIN32} + {$IFNDEF UNICODE} + {$DEFINE OWN_UnicodeString_MEMMGR} + {$ENDIF} {$ENDIF} +// Turn this off if you don't need complex script support, since it is slower +{.$DEFINE SYN_UNISCRIBE} + // $Id$ Index: SynEditMiscClasses.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditMiscClasses.pas,v retrieving revision 1.35.2.8 retrieving revision 1.35.2.9 diff -u -d -r1.35.2.8 -r1.35.2.9 --- SynEditMiscClasses.pas 14 Sep 2008 16:24:58 -0000 1.35.2.8 +++ SynEditMiscClasses.pas 17 Sep 2008 13:59:12 -0000 1.35.2.9 @@ -1527,7 +1527,7 @@ if not Relative then Delete(S, 1, 1); TempKey := 0; - Result := RegOpenKeyExA(GetBaseKey(Relative), PAnsiChar(S), 0, + Result := RegOpenKeyEx(GetBaseKey(Relative), PChar(S), 0, KEY_READ, TempKey) = ERROR_SUCCESS; if Result then begin Index: SynUnicode.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/Attic/SynUnicode.pas,v retrieving revision 1.1.2.39 retrieving revision 1.1.2.40 diff -u -d -r1.1.2.39 -r1.1.2.40 --- SynUnicode.pas 14 Sep 2008 16:25:03 -0000 1.1.2.39 +++ SynUnicode.pas 17 Sep 2008 13:59:12 -0000 1.1.2.40 @@ -319,8 +319,8 @@ function SynIsCharAlpha(const C: WideChar): Boolean; function SynIsCharAlphaNumeric(const C: WideChar): Boolean; {$IFNDEF UNICODE} -function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean; overload; {$MESSAGE 'add inline; for Delphi versions that support it'} -function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean; overload; {$MESSAGE 'add inline; for Delphi versions that support it'} +function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean; overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean; overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} {$ENDIF} function WideLastDelimiter(const Delimiters, S: UnicodeString): Integer; @@ -428,7 +428,9 @@ QSynEditTextBuffer, {$ELSE} SynEditTextBuffer, - SynUsp10, + {$IFDEF SYN_UNISCRIBE} + SynUsp10, + {$ENDIF} {$ENDIF} Math, {$IFDEF SYN_LINUX} @@ -2310,17 +2312,22 @@ {$ENDIF} function GetTextSize(DC: HDC; Str: PWideChar; Count: Integer): TSize; +{$IFDEF SYN_UNISCRIBE} const SSAnalyseFlags = SSA_GLYPHS or SSA_FALLBACK or SSA_LINK; +{$ENDIF} var tm: TTextMetricA; + {$IFDEF SYN_UNISCRIBE} GlyphBufferSize: Integer; saa: TScriptStringAnalysis; lpSize: PSize; + {$ENDIF} begin Result.cx := 0; Result.cy := 0; +{$IFDEF SYN_UNISCRIBE} if Usp10IsInstalled then begin if Count <= 0 then Exit; @@ -2347,6 +2354,7 @@ end; end else +{$ENDIF} begin GetTextExtentPoint32W(DC, Str, Count, Result); if not Win32PlatformIsUnicode then @@ -2479,7 +2487,7 @@ raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateErrorEx), [ExpandFileName(FileName), SysErrorMessage(GetLastError)]); {$ELSE} - raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]); + raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); {$ENDIF} {$ENDIF} end @@ -2502,7 +2510,7 @@ raise EFOpenError.CreateResFmt(PResStringRec(@SFOpenErrorEx), [ExpandFileName(FileName), SysErrorMessage(GetLastError)]); {$ELSE} - raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]); + raise EFOpenError.CreateResFmt(PResStringRec(@SFOpenError), [FileName]); {$ENDIF} {$ENDIF} end; --- NEW FILE: jedi.inc --- {$IFNDEF JEDI_INC} {$DEFINE JEDI_INC} {**************************************************************************************************} { } { The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");} { you may not use this file except in compliance with the License. You may obtain a copy of the } { License at http://www.mozilla.org/MPL/ } { } { Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } { ANY KIND, either express or implied. See the License for the specific language governing rights } { and limitations under the License. } { } { The Original Code is: jedi.inc. } { The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org } { } { Alternatively, the contents of this file may be used under the terms of the GNU Lesser General } { Public License (the "LGPL License"), in which case the provisions of the LGPL License are } { applicable instead of those above. If you wish to allow use of your version of this file only } [...1143 lines suppressed...] {$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$ENDIF} {$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF} {$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF} {$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF} {$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF} {$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF} // Real compatibility {$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF} {$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF} {$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF} {$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF} // Warnings {$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF} // for Delphi/BCB trial versions remove the point from the line below {.$UNDEF SUPPORTS_WEAKPACKAGEUNIT} {$ENDIF ~JEDI_INC} Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.74 retrieving revision 1.386.2.75 diff -u -d -r1.386.2.74 -r1.386.2.75 --- SynEdit.pas 14 Sep 2008 16:24:57 -0000 1.386.2.74 +++ SynEdit.pas 17 Sep 2008 13:59:11 -0000 1.386.2.75 @@ -2108,6 +2108,7 @@ type TAccessWinControl = class(TWinControl); +{$MESSAGE 'Check what must be adapted in DoKeyPressW and related methods'} procedure TCustomSynEdit.DoKeyPressW(var Message: TWMKey); var Form: TCustomForm; @@ -11092,7 +11093,7 @@ begin // Hooking GetMessage/PeekMessage-calls is necessary as the use of // PeekMessageA in TApplication.ProcessMessage mutilates Unicode-messages. - GetMsgHook := SetWindowsHookExW(WH_GETMESSAGE, @GetMsgProc, 0, + GetMsgHook := SetWindowsHookExW(WH_GETMESSAGE, GetMsgProc, 0, GetCurrentThreadId); end else Index: SynEditExport.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditExport.pas,v retrieving revision 1.17.2.7 retrieving revision 1.17.2.8 diff -u -d -r1.17.2.7 -r1.17.2.8 --- SynEditExport.pas 14 Sep 2008 16:24:58 -0000 1.17.2.7 +++ SynEditExport.pas 17 Sep 2008 13:59:12 -0000 1.17.2.8 @@ -486,9 +486,12 @@ while not Highlighter.GetEOL do begin Attri := Highlighter.GetTokenAttribute; - Token := ReplaceReservedChars(Highlighter.GetToken); - SetTokenAttribute(Attri); - FormatToken(Token); + if Assigned(Attri) then // The .pas highlighter, for example, can return a nil Attri above for a trailing EOF/null that was loaded from a stream + begin + Token := ReplaceReservedChars(Highlighter.GetToken); + SetTokenAttribute(Attri); + FormatToken(Token); + end; Highlighter.Next; end; FormatNewLine; Index: SynUsp10.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/Attic/SynUsp10.pas,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- SynUsp10.pas 2 Feb 2008 15:13:33 -0000 1.1.2.1 +++ SynUsp10.pas 17 Sep 2008 13:59:12 -0000 1.1.2.2 @@ -2206,11 +2206,12 @@ end; var - _ScriptFreeCache: Pointer; + _ScriptFreeCache: Pointer = nil; function ScriptFreeCache; begin - GetProcedureAddress(_ScriptFreeCache, Usp10DLL, 'ScriptFreeCache'); + if _ScriptFreeCache = nil then + GetProcedureAddress(_ScriptFreeCache, Usp10DLL, 'ScriptFreeCache'); asm MOV ESP, EBP POP EBP @@ -2219,11 +2220,12 @@ end; var - _ScriptItemize: Pointer; + _ScriptItemize: Pointer = nil; function ScriptItemize; begin - GetProcedureAddress(_ScriptItemize, Usp10DLL, 'ScriptItemize'); + if _ScriptItemize = nil then + GetProcedureAddress(_ScriptItemize, Usp10DLL, 'ScriptItemize'); asm MOV ESP, EBP POP EBP @@ -2232,11 +2234,12 @@ end; var - _ScriptLayout: Pointer; + _ScriptLayout: Pointer = nil; function ScriptLayout; begin - GetProcedureAddress(_ScriptLayout, Usp10DLL, 'ScriptLayout'); + if _ScriptLayout = nil then + GetProcedureAddress(_ScriptLayout, Usp10DLL, 'ScriptLayout'); asm MOV ESP, EBP POP EBP @@ -2245,11 +2248,12 @@ end; var - _ScriptShape: Pointer; + _ScriptShape: Pointer = nil; function ScriptShape; begin - GetProcedureAddress(_ScriptShape, Usp10DLL, 'ScriptShape'); + if _ScriptShape = nil then + GetProcedureAddress(_ScriptShape, Usp10DLL, 'ScriptShape'); asm MOV ESP, EBP POP EBP @@ -2258,11 +2262,12 @@ end; var - _ScriptPlace: Pointer; + _ScriptPlace: Pointer = nil; function ScriptPlace; begin - GetProcedureAddress(_ScriptPlace, Usp10DLL, 'ScriptPlace'); + if _ScriptPlace = nil then + GetProcedureAddress(_ScriptPlace, Usp10DLL, 'ScriptPlace'); asm MOV ESP, EBP POP EBP @@ -2271,11 +2276,12 @@ end; var - _ScriptTextOut: Pointer; + _ScriptTextOut: Pointer = nil; function ScriptTextOut; begin - GetProcedureAddress(_ScriptTextOut, Usp10DLL, 'ScriptTextOut'); + if _ScriptTextOut = nil then + GetProcedureAddress(_ScriptTextOut, Usp10DLL, 'ScriptTextOut'); asm MOV ESP, EBP POP EBP @@ -2284,11 +2290,12 @@ end; var - _ScriptJustify: Pointer; + _ScriptJustify: Pointer = nil; function ScriptJustify; begin - GetProcedureAddress(_ScriptJustify, Usp10DLL, 'ScriptJustify'); + if _ScriptJustify = nil then + GetProcedureAddress(_ScriptJustify, Usp10DLL, 'ScriptJustify'); asm MOV ESP, EBP POP EBP @@ -2297,11 +2304,12 @@ end; var - _ScriptBreak: Pointer; + _ScriptBreak: Pointer = nil; function ScriptBreak; begin - GetProcedureAddress(_ScriptBreak, Usp10DLL, 'ScriptBreak'); + if _ScriptBreak = nil then + GetProcedureAddress(_ScriptBreak, Usp10DLL, 'ScriptBreak'); asm MOV ESP, EBP POP EBP @@ -2310,11 +2318,12 @@ end; var - _ScriptCPtoX: Pointer; + _ScriptCPtoX: Pointer = nil; function ScriptCPtoX; begin - GetProcedureAddress(_ScriptCPtoX, Usp10DLL, 'ScriptCPtoX'); + if _ScriptCPtoX = nil then + GetProcedureAddress(_ScriptCPtoX, Usp10DLL, 'ScriptCPtoX'); asm MOV ESP, EBP POP EBP @@ -2323,11 +2332,12 @@ end; var - _ScriptXtoCP: Pointer; + _ScriptXtoCP: Pointer = nil; function ScriptXtoCP; begin - GetProcedureAddress(_ScriptXtoCP, Usp10DLL, 'ScriptXtoCP'); + if _ScriptXtoCP = nil then + GetProcedureAddress(_ScriptXtoCP, Usp10DLL, 'ScriptXtoCP'); asm MOV ESP, EBP POP EBP @@ -2336,11 +2346,12 @@ end; var - _ScriptGetLogicalWidths: Pointer; + _ScriptGetLogicalWidths: Pointer = nil; function ScriptGetLogicalWidths; begin - GetProcedureAddress(_ScriptGetLogicalWidths, Usp10DLL, 'ScriptGetLogicalWidths'); + if _ScriptGetLogicalWidths = nil then + GetProcedureAddress(_ScriptGetLogicalWidths, Usp10DLL, 'ScriptGetLogicalWidths'); asm MOV ESP, EBP POP EBP @@ -2349,11 +2360,12 @@ end; var - _ScriptApplyLogicalWidth: Pointer; + _ScriptApplyLogicalWidth: Pointer = nil; function ScriptApplyLogicalWidth; begin - GetProcedureAddress(_ScriptApplyLogicalWidth, Usp10DLL, 'ScriptApplyLogicalWidth'); + if _ScriptApplyLogicalWidth = nil then + GetProcedureAddress(_ScriptApplyLogicalWidth, Usp10DLL, 'ScriptApplyLogicalWidth'); asm MOV ESP, EBP POP EBP @@ -2362,11 +2374,12 @@ end; var - _ScriptGetCMap: Pointer; + _ScriptGetCMap: Pointer = nil; function ScriptGetCMap; begin - GetProcedureAddress(_ScriptGetCMap, Usp10DLL, 'ScriptGetCMap'); + if _ScriptGetCMap = nil then + GetProcedureAddress(_ScriptGetCMap, Usp10DLL, 'ScriptGetCMap'); asm MOV ESP, EBP POP EBP @@ -2375,11 +2388,12 @@ end; var - _ScriptGetGlyphABCWidth: Pointer; + _ScriptGetGlyphABCWidth: Pointer = nil; function ScriptGetGlyphABCWidth; begin - GetProcedureAddress(_ScriptGetGlyphABCWidth, Usp10DLL, 'ScriptGetGlyphABCWidth'); + if _ScriptGetGlyphABCWidth = nil then + GetProcedureAddress(_ScriptGetGlyphABCWidth, Usp10DLL, 'ScriptGetGlyphABCWidth'); asm MOV ESP, EBP POP EBP @@ -2388,11 +2402,12 @@ end; var - _ScriptGetProperties: Pointer; + _ScriptGetProperties: Pointer = nil; function ScriptGetProperties; begin - GetProcedureAddress(_ScriptGetProperties, Usp10DLL, 'ScriptGetProperties'); + if _ScriptGetProperties = nil then + GetProcedureAddress(_ScriptGetProperties, Usp10DLL, 'ScriptGetProperties'); asm MOV ESP, EBP POP EBP @@ -2401,11 +2416,12 @@ end; var - _ScriptGetFontProperties: Pointer; + _ScriptGetFontProperties: Pointer = nil; function ScriptGetFontProperties; begin - GetProcedureAddress(_ScriptGetFontProperties, Usp10DLL, 'ScriptGetFontProperties'); + if _ScriptGetFontProperties = nil then + GetProcedureAddress(_ScriptGetFontProperties, Usp10DLL, 'ScriptGetFontProperties'); asm MOV ESP, EBP POP EBP @@ -2414,11 +2430,12 @@ end; var - _ScriptCacheGetHeight: Pointer; + _ScriptCacheGetHeight: Pointer = nil; function ScriptCacheGetHeight; begin - GetProcedureAddress(_ScriptCacheGetHeight, Usp10DLL, 'ScriptCacheGetHeight'); + if _ScriptCacheGetHeight = nil then + GetProcedureAddress(_ScriptCacheGetHeight, Usp10DLL, 'ScriptCacheGetHeight'); asm MOV ESP, EBP POP EBP @@ -2427,11 +2444,12 @@ end; var - _ScriptStringAnalyse: Pointer; + _ScriptStringAnalyse: Pointer = nil; function ScriptStringAnalyse; begin - GetProcedureAddress(_ScriptStringAnalyse, Usp10DLL, 'ScriptStringAnalyse'); + if _ScriptStringAnalyse = nil then + GetProcedureAddress(_ScriptStringAnalyse, Usp10DLL, 'ScriptStringAnalyse'); asm MOV ESP, EBP POP EBP @@ -2440,11 +2458,12 @@ end; var - _ScriptStringFree: Pointer; + _ScriptStringFree: Pointer = nil; function ScriptStringFree; begin - GetProcedureAddress(_ScriptStringFree, Usp10DLL, 'ScriptStringFree'); + if _ScriptStringFree = nil then + GetProcedureAddress(_ScriptStringFree, Usp10DLL, 'ScriptStringFree'); asm MOV ESP, EBP POP EBP @@ -2453,11 +2472,12 @@ end; var - _ScriptString_pSize: Pointer; + _ScriptString_pSize: Pointer = nil; function ScriptString_pSize; begin - GetProcedureAddress(_ScriptString_pSize, Usp10DLL, 'ScriptString_pSize'); + if _ScriptString_pSize = nil then + GetProcedureAddress(_ScriptString_pSize, Usp10DLL, 'ScriptString_pSize'); asm MOV ESP, EBP POP EBP @@ -2466,11 +2486,12 @@ end; var - _ScriptString_pcOutChars: Pointer; + _ScriptString_pcOutChars: Pointer = nil; function ScriptString_pcOutChars; begin - GetProcedureAddress(_ScriptString_pcOutChars, Usp10DLL, 'ScriptString_pcOutChars'); + if _ScriptString_pcOutChars = nil then + GetProcedureAddress(_ScriptString_pcOutChars, Usp10DLL, 'ScriptString_pcOutChars'); asm MOV ESP, EBP POP EBP @@ -2479,11 +2500,12 @@ end; var - _ScriptString_pLogAttr: Pointer; + _ScriptString_pLogAttr: Pointer = nil; function ScriptString_pLogAttr; begin - GetProcedureAddress(_ScriptString_pLogAttr, Usp10DLL, 'ScriptString_pLogAttr'); + if _ScriptString_pLogAttr = nil then + GetProcedureAddress(_ScriptString_pLogAttr, Usp10DLL, 'ScriptString_pLogAttr'); asm MOV ESP, EBP POP EBP @@ -2492,11 +2514,12 @@ end; var - _ScriptStringGetOrder: Pointer; + _ScriptStringGetOrder: Pointer = nil; function ScriptStringGetOrder; begin - GetProcedureAddress(_ScriptStringGetOrder, Usp10DLL, 'ScriptStringGetOrder'); + if _ScriptStringGetOrder = nil then + GetProcedureAddress(_ScriptStringGetOrder, Usp10DLL, 'ScriptStringGetOrder'); asm MOV ESP, EBP POP EBP @@ -2505,11 +2528,12 @@ end; var - _ScriptStringCPtoX: Pointer; + _ScriptStringCPtoX: Pointer = nil; function ScriptStringCPtoX; begin - GetProcedureAddress(_ScriptStringCPtoX, Usp10DLL, 'ScriptStringCPtoX'); + if _ScriptStringCPtoX = nil then + GetProcedureAddress(_ScriptStringCPtoX, Usp10DLL, 'ScriptStringCPtoX'); asm MOV ESP, EBP POP EBP @@ -2518,11 +2542,12 @@ end; var - _ScriptStringXtoCP: Pointer; + _ScriptStringXtoCP: Pointer = nil; function ScriptStringXtoCP; begin - GetProcedureAddress(_ScriptStringXtoCP, Usp10DLL, 'ScriptStringXtoCP'); + if _ScriptStringXtoCP = nil then + GetProcedureAddress(_ScriptStringXtoCP, Usp10DLL, 'ScriptStringXtoCP'); asm MOV ESP, EBP POP EBP @@ -2531,11 +2556,12 @@ end; var - _ScriptStringGetLogicalWidths: Pointer; + _ScriptStringGetLogicalWidths: Pointer = nil; function ScriptStringGetLogicalWidths; begin - GetProcedureAddress(_ScriptStringGetLogicalWidths, Usp10DLL, 'ScriptStringGetLogicalWidths'); + if _ScriptStringGetLogicalWidths = nil then + GetProcedureAddress(_ScriptStringGetLogicalWidths, Usp10DLL, 'ScriptStringGetLogicalWidths'); asm MOV ESP, EBP POP EBP @@ -2544,11 +2570,12 @@ end; var - _ScriptStringValidate: Pointer; + _ScriptStringValidate: Pointer = nil; function ScriptStringValidate; begin - GetProcedureAddress(_ScriptStringValidate, Usp10DLL, 'ScriptStringValidate'); + if _ScriptStringValidate = nil then + GetProcedureAddress(_ScriptStringValidate, Usp10DLL, 'ScriptStringValidate'); asm MOV ESP, EBP POP EBP @@ -2557,11 +2584,12 @@ end; var - _ScriptStringOut: Pointer; + _ScriptStringOut: Pointer = nil; function ScriptStringOut; begin - GetProcedureAddress(_ScriptStringOut, Usp10DLL, 'ScriptStringOut'); + if _ScriptStringOut = nil then + GetProcedureAddress(_ScriptStringOut, Usp10DLL, 'ScriptStringOut'); asm MOV ESP, EBP POP EBP @@ -2570,11 +2598,12 @@ end; var - _ScriptIsComplex: Pointer; + _ScriptIsComplex: Pointer = nil; function ScriptIsComplex; begin - GetProcedureAddress(_ScriptIsComplex, Usp10DLL, 'ScriptIsComplex'); + if _ScriptIsComplex = nil then + GetProcedureAddress(_ScriptIsComplex, Usp10DLL, 'ScriptIsComplex'); asm MOV ESP, EBP POP EBP @@ -2583,11 +2612,12 @@ end; var - _ScriptRecordDigitSubstitution: Pointer; + _ScriptRecordDigitSubstitution: Pointer = nil; function ScriptRecordDigitSubstitution; begin - GetProcedureAddress(_ScriptRecordDigitSubstitution, Usp10DLL, 'ScriptRecordDigitSubstitution'); + if _ScriptRecordDigitSubstitution = nil then + GetProcedureAddress(_ScriptRecordDigitSubstitution, Usp10DLL, 'ScriptRecordDigitSubstitution'); asm MOV ESP, EBP POP EBP @@ -2596,11 +2626,12 @@ end; var - _ScriptApplyDigitSubstitution: Pointer; + _ScriptApplyDigitSubstitution: Pointer = nil; function ScriptApplyDigitSubstitution; begin - GetProcedureAddress(_ScriptApplyDigitSubstitution, Usp10DLL, 'ScriptApplyDigitSubstitution'); + if _ScriptApplyDigitSubstitution = nil then + GetProcedureAddress(_ScriptApplyDigitSubstitution, Usp10DLL, 'ScriptApplyDigitSubstitution'); asm MOV ESP, EBP POP EBP |