Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PHP4Delphi Problem (https://www.delphipraxis.net/113826-php4delphi-problem.html)

Tommy1988 15. Mai 2008 11:45


PHP4Delphi Problem
 
Ich bekomme es einfach nicht hin, die PHP4Delphi-Demo ans laufen zu bekommen.

in der "test.php" (eieser code soll ausgeführt werden) steht:
Code:
<?
 $z = 1 + 2;
 echo "Result " ;
 echo $z;
?>
EIGENTLICH müsste z jetzt 3 sein. es ist aber immer 0?

MrSpock 15. Mai 2008 12:39

Re: PHP4Delphi Problem
 
Hallo Tommy,

hast du einmal z vielleicht groß geschrieben und einmal klein?

Tommy1988 15. Mai 2008 13:27

Re: PHP4Delphi Problem
 
Nein, "leider" so einfach nicht.

Hier ist der ausführende Code:

Delphi-Quellcode:
procedure TForm1.btnExecuteScriptClick(Sender: TObject);
var
 S : String;
 L : integer;
begin
  Memo1.Lines.Clear;
  RequestID := InitRequest;
  RegisterVariable(RequestID, 'x','2');
  RegisterVariable(RequestID, 'y','3');
  RegisterVariable(RequestID, 'z','0'); // z zu anfangs 0 zuweisen
  ExecutePHP(RequestID, 'test.php'); // test.php öffnen
  L := GetResultText(RequestID, nil, 0);
  if L > 0 then
   begin
     SetLength(S, L);
     GetResultText(RequestID, PChar(S), L);
   end;
  memo1.Lines.Text := S; // das hier wird garnicht erst ausgeführt
  L := GetVariableSize(RequestID, 'z');
  if L > 0 then
   begin
     SetLength(S, L);
     GetVariable(RequestID, 'z', PChar(S), L);
     ShowMessage('After execution z = ' + S); // S IMMER 0!
   end;
  DoneRequest(RequestID);
end;

omata 15. Mai 2008 21:41

Re: PHP4Delphi Problem
 
Was spricht gegen folgendes...

Delphi-Quellcode:
function PHPCalc(x, y:string):string;
var psvPHP:TpsvPHP;
    vx, vy, vz:TPHPVariable;
begin
  psvPHP:=TpsvPHP.Create(nil);
  try
    psvPHP.DLLFolder:='c:\programme\php\';
    vx:=psvPHP.Variables.Add;
    vx.Name:='x';
    vx.Value:='2';
    vy:=psvPHP.Variables.Add;
    vy.Name:='y';
    vy.Value:='3';
    vz:=psvPHP.Variables.Add;
    vz.Name:='z';
    vz.Value:='';
    psvPHP.RunCode('$z = $x + $y;');
    Result := psvPHP.VariableByName('z').Value;
  finally
    psvPHP.free;
  end;
end;
Gruss
Thorsten

Tommy1988 16. Mai 2008 08:52

Re: PHP4Delphi Problem
 
Naja, eigentlich gehts mir dadrum, dass ich der WebBrowser-Komponente beibringe PHP zu verstehen und zu verarbeiten :?

omata 16. Mai 2008 15:01

Re: PHP4Delphi Problem
 
Ja und? Das geht doch auch damit...

Delphi-Quellcode:
function PHPExecute(php:string):string;
var psvPHP:TpsvPHP;
begin
  psvPHP:=TpsvPHP.Create(nil);
  try
    psvPHP.DLLFolder:='c:\programme\php\';
    delete(php, 1, pos('<?', php)+1);
    php:=copy(php, 1, pos('?>', php)-1);
    Result:=psvPHP.RunCode(php);
  finally
    psvPHP.free;
  end;
end;
Aufruf:
Delphi-Quellcode:
var s:string;
begin
  s:=
    '<?'#13 +
    ' $z = 1 + 2;'#13 +
    ' echo "Result ";'#13 +
    ' echo $z;'#13 +
    '?>';
  ShowMessage(PHPExecute(s));
end;
Ausgabe: "Result 3"

Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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 by Thomas Breitkreuz