Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit12a9fd7

Browse files
author
pyscripter
committed
Issue 19
1 parentb487245 commit12a9fd7

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

‎PythonForDelphi/Components/Sources/Core/PythonEngine.pas‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,7 +2241,7 @@ TPythonEngine = class(TPythonInterface)
22412241
functionPyTZInfo_Check( obj : PPyObject ) : Boolean;
22422242
functionPyTZInfo_CheckExact( obj : PPyObject ) : Boolean;
22432243
{ end date/time functions}
2244-
functionPyString_FromString( str: PAnsiChar): PPyObject; override;
2244+
functionPyString_FromString( str: PAnsiChar): PPyObject; override;
22452245
functionPyString_AsDelphiString( ob: PPyObject): string; override;
22462246
functionPyString_AsAnsiString( ob: PPyObject): AnsiString;
22472247
functionPyString_AsWideString( ob: PPyObject): UnicodeString;
@@ -5753,13 +5753,13 @@ function TPythonEngine.VariantAsPyObject( const V : Variant ) : PPyObject;
57535753
Result := PyUnicode_FromWideChar( PWideChar(wStr), Length(wStr) );
57545754
{$ELSE}
57555755
s := wStr;
5756-
Result :=PyString_FromString(PAnsiChar(s));
5756+
Result :=PyString_FromStringAndSize(PAnsiChar(s), Length(s));
57575757
{$ENDIF}
57585758
end;
57595759
varString:
57605760
begin
57615761
s := AnsiString(DeRefV);
5762-
Result :=PyString_FromString(PAnsiChar(s));
5762+
Result :=PyString_FromStringAndSize(PAnsiChar(s), Length(s));
57635763
end;
57645764
{$IFDEF UNICODE}
57655765
varUString:
@@ -5769,7 +5769,7 @@ function TPythonEngine.VariantAsPyObject( const V : Variant ) : PPyObject;
57695769
Result := PyUnicode_FromWideChar( PWideChar(wStr), Length(wStr) );
57705770
{$ELSE}
57715771
s := wStr;
5772-
Result :=PyString_FromString(PAnsiChar(s));
5772+
Result :=PyString_FromStringAndSize(PAnsiChar(s), Length(s));
57735773
{$ENDIF}
57745774
end;
57755775
{$ENDIF}

‎PythonForDelphi/Components/Sources/Core/VarPyth.pas‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ TPythonData = class(TObject)
200200
procedureSetPyObject(constValue: PPyObject);
201201
functionGetAsVariant: Variant;
202202
functionGetAsWideString: UnicodeString;
203+
functionGetAsAnsiString: AnsiString;
203204
public
204205
constructor Create(AObject : PPyObject); overload;
205206
constructor Create(AObject : PPyObject; APythonAtomCompatible : Boolean); overload;
@@ -233,6 +234,7 @@ TPythonData = class(TObject)
233234

234235
// conversion
235236
property AsString: String read GetAsString;
237+
property AsAnsiString: AnsiString read GetAsAnsiString;
236238
property AsVariant: Variant read GetAsVariant;
237239
property AsWideString: UnicodeString read GetAsWideString;
238240

@@ -828,7 +830,12 @@ procedure TPythonVariantType.CastTo(var Dest: TVarData;
828830
varOleStr{$IFDEF UNICODE}, varUString{$ENDIF} :
829831
VarDataFromOleStr(Dest, TPythonVarData(Source).VPython.AsWideString);
830832
varString:
833+
{$IFDEF UNICODE}
834+
// Preserve AnsiStrings
835+
VarDataFromLStr(Dest, TPythonVarData(Source).VPython.AsAnsiString);
836+
{$ELSE}
831837
VarDataFromStr(Dest, TPythonVarData(Source).VPython.AsString);
838+
{$ENDIF}
832839
else
833840
if AVarTypeand varTypeMask = varBooleanthen
834841
begin
@@ -2177,6 +2184,14 @@ function TPythonData.Equal(const Right: TPythonData): Boolean;
21772184
end;// of with
21782185
end;
21792186

2187+
functionTPythonData.GetAsAnsiString: AnsiString;
2188+
begin
2189+
if Assigned(PyObject)and GetPythonEngine.PyString_CheckExact(PyObject)then
2190+
Result := GetPythonEngine.PyString_AsString(PyObject)
2191+
else
2192+
result := GetAsString;
2193+
end;
2194+
21802195
functionTPythonData.GetAsString: String;
21812196
begin
21822197
if Assigned(PyObject)then

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp