Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Formular-Werte empfangen (https://www.delphipraxis.net/49708-formular-werte-empfangen.html)

SebE 14. Jul 2005 20:54


Formular-Werte empfangen
 
hi, wie kann man die Werte eines HTML-Formulars im eigenen Programm verwenden?

Beipiel:

...
<form method="post" action="MeinProgramm.exe">
<input type="text" name="x">
...
</form>
...

Ich möchte in meinem Programm den Wert von "x" verwenden.

Geht das überhaupt mit Pascal?

marabu 14. Jul 2005 21:41

Re: Formular-Werte empfangen
 
Mit etwas Glück geht das so:

Delphi-Quellcode:
uses
  MSHTML;

var
  doc: IHTMLDocument2;
  inp: IHTMLInputElement;
  frm: IHTMLFormElement;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  // Zugriff auf form über name
  // frm := doc.forms.item('f', 0) as IHTMLFormElement;
  // oder Zugriff über index
  frm := doc.forms.item(0, 0) as IHTMLFormElement;
  inp := frm.item('x', 0) as IHTMLInputElement;
  ShowMessage(inp.value);
end;
Grüße vom marabu

SebE 15. Jul 2005 10:33

Re: Formular-Werte empfangen
 
Danke für die Antwort.
Aber ich hab Delphi 7 PE und finde die Unit MSHTML nicht :cry:

Geht das auch irgendwie mit ParamStr() oder so?

mirage228 15. Jul 2005 10:37

Re: Formular-Werte empfangen
 
Zitat:

Zitat von SebE
Danke für die Antwort.
Aber ich hab Delphi 7 PE und finde die Unit MSHTML nicht :cry:

Geht das auch irgendwie mit ParamStr() oder so?

Hi,

die MSHTML Unit (bzw. die "Microsoft HTML Object Library") musst Du Dir erst über Active X importieren.
Einfach Projekt -> Active X importieren wählen und dort die ActiveX Bibliothek auswählen und die Unit generieren lassen.

mfG
mirage228

SebE 15. Jul 2005 10:55

Re: Formular-Werte empfangen
 
Hab ich gemacht, jetzt hab ich eine Komponente names TScriptlet bekommen, aber die Unit MSHTML gibt es immer noch nicht

Edit:
hab's gefunden: Unit heißt "MSHTML_TLB"

Aber geht das wirklich nicht ohne diesen TWebBrowser??

Ich würde gerne die Werte des Standardbrowsers empfangen.
Mein Programm soll durch das HTML-Formular aufgerufen werden und dessen Werte verarbeiten.

marabu 15. Jul 2005 11:04

Re: Formular-Werte empfangen
 
Wenn du TScriptlet erhalten hast, dann hast du beim Import die falsche DLL ausgewählt. "Microsoft Internet Controls" wäre richtig gewesen.

Ohne WebBrowser geht es auch, dann musst du einen eigenen Parser schreiben. Oder du hangelst dich mit PosEx() bis an die richtige Stelle vor und holst dir den Text mit Copy().

Grüße vom marabu

SebE 15. Jul 2005 11:08

Re: Formular-Werte empfangen
 
und wo stehen die Werte des Formulars (die sind doch im RAM und nicht auf der HD).
Die Werte sieht mein Programm nie, das ist ja das Problem.

Mein Programm sollte beim Öffnen, was durch das Formular geschied, einen String erhalten:
Beispiel:
"MeinProgramm.exe?Input1=123&Input2=456"

Wie komme ich an die Parameter?

SubData 15. Jul 2005 11:13

Re: Formular-Werte empfangen
 
Garnicht, da dein Programm nie so von einem Webserver aufgerufen wird.
Auf was für einem WebServer läuft denn dein Programm überhaupt?
Einfach eine HTML Datei, die dann ein Programm ausführt, funktioniert nicht (Schon alleine aus Sicherheitsgründen)

SebE 15. Jul 2005 11:20

Re: Formular-Werte empfangen
 
Ne, mein Programm läuft auf keinem WebServer, es sollte selbst etwas ähnliches werden.

ich weis nicht genau, wenn ich meinen Router über seine IP aufrufe, bekomme ich ein HTML-Dokument, wo man sich z.B. einloggen kann.
Die Werte werden an eine EXE geschickt (und ich bekomme wieder ein HTML-Dokument zurück).

So soll mein Programm auch aussehen.

Nur es soll irgendeine Berechnung durchführen z.B:
User gibt in Formular seine Werte (Gewicht, Alter,...) ein.
Werte werden an Programm geschickt und BMI errechnet.
BMI wird als neues HTML-Dokument an User geschickt.

kann man das mit Delphi PE machen?

marabu 15. Jul 2005 12:00

Re: Formular-Werte empfangen
 
Hi,

habe dein Problem nicht gleich verstanden, aber wir kommen der Sache näher. Du möchtest ein Programm mit einem Web GUI schreiben, wie es in jedem besseren Drucker oder Router steckt - oder?

Du musst dich entscheiden, ob dein Programm server-seitig oder client-seitig laufen soll. Für die Serverseite musst du dein Programm als ISAPI- oder als CGI-Modul implementieren. Für die Client-Seite nimmst du am besten die Indy Komponente HTTPSERVER und den WebBrowser (oder EmbeddedWb). Du erhältst dann einen stand-alone server mit eingebettetem Browser. Das scheint mir eher deine Idee zu sein.

Zitat:

Zitat von SebE
"MeinProgramm.exe?Input1=123&Input2=456"
Wie komme ich an die Parameter?

Die Parameter stehen dir bei der client-seitigen Lösung im Ereignis OnCommandGet(... ARequestInfo.QueryParams ...) zur Verfügung.

Das werden schon ein paar Zeilen Code. Du wirst einige Zeit für dein Projekt brauchen, wenn du da noch gar keine Erfahrung mit hast...

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz