Entwickler-Ecke
Internet / Netzwerk - Formularfelder einer fremden Internetseite füllen?
OliverN_26 - Mi 22.02.12 20:21
Titel: Formularfelder einer fremden Internetseite füllen?
Hi Leute
vorab .. ich weiß ich bin hier heute völlig falsch, da ich in diesem Schritt nicht mit Delphi arbeite, aber ich weiß kein gutes Forum für meine Frage und ich weiß, dass hier ne Menge Cracks rum schwirren, die evt. eine Idee haben.
also ..
Mit Delphi empfange ich Daten, werte diese aus und sende sie an meine Datenbank, wo sie auf einer Internet-Seite angezeigt und weiter bearbeitet werden. Soweit so gut. Wir sind ein Subunternehmer eines großen, namhaften Unternehmens hier in Deutschland. Die Bearbeitung der Daten kann leider nicht nur in unserem System passieren, sondern muss ebenfalls in einer Webseite eingetragen werden, um an den "großen Partner" gesendet werden zu können. Dies ist natürlich doppelte Arbeit die ich mir gerne ersparen würde. Ich möchte also die Daten in meinem Internetformular bearbeiten und im Hintergrund sollen die "notwendigen" Daten an die fremde Internetseite geschickt werden. Ein weiteres Problem dabei ist, dass ich die Seite 3-5x bestätigen muß und Folgeseiten ebenfalls ausgefüllt werden müssen. Kann man so was simulieren?
Bevor die Diskussion aufkommt .. es ist nichts illegales und bewegt sich alles im Firmenumfang. Wenn ich den Namen sagen würde, würde sich auch die Frage erübrigen den Partner nach einer Datenbank-Schnittstelle zu fragen. Die kümmern sich da leider "0" drum.
Ich habe bei einem anderen Subunternehmer allerdings schon mitbekommen das dies möglich ist. "Angeblich" auf sehr einfach Weise (mit den Scripten rücken auch die nicht raus).
Mich würde schon mal weiter bringen wenn ich wüsste, mit welcher Sprache man so was bewerkstelligen kann. PHP kann ich mir wenig vorstellen, da es serverseitig arbeitet, aber, wenn ich im Internet suche, gerate ich immer wieder an "fsockopen()". Bin ich da auf dem richtigen Weg? Hat jemand mit so was Erfahrungen und kann mich in die richtige Richtung rollen oder mir ein paar Tips geben?
Weiß da grad echt keinen Rat mehr .. hoffe, auch wenns grad nich Delphi ist kann mir jemand helfen.
1000 Dank im voraus
lg
Oli
Narses - Mi 22.02.12 23:43
Moin!
OliverN_26 hat folgendes geschrieben : |
Ich möchte also die Daten in meinem Internetformular bearbeiten und im Hintergrund sollen die "notwendigen" Daten an die fremde Internetseite geschickt werden. Ein weiteres Problem dabei ist, dass ich die Seite 3-5x bestätigen muß und Folgeseiten ebenfalls ausgefüllt werden müssen. Kann man so was simulieren? |
Ja klar kann man das. Wenn kein Javascript drin ist, geht das relativ simpel mit IdHTTP von den Indies, bei Javascript-Klamotten kann man das mit einem TWebbrowser probieren und dann über die COM-API darauf zugreifen (etwas hakelig, braucht Erfahrung). :idea:
OliverN_26 hat folgendes geschrieben : |
wenn ich im Internet suche, gerate ich immer wieder an "fsockopen()". Bin ich da auf dem richtigen Weg? |
Pauschal würde ich sagen: nein, das wird nix. Damit öffnest du lediglich einen Socket (also theoretisch kann man das schon an der Stelle tatsächlich umsetzen, aber das wird sich keiner antun, den ganzen Protokoll-Layer selbst da oben drauf zu setzen).
Und die haben wirklich keinen Webservice für die Datenübermittlung? So wie du das beschreibst, ist das Formular (oder besser die Formularkaskade) eher für menschliche Benutzung vorgesehen... :? Mit z.B. einem Webservice wäre das
erheblich viel einfacher!
cu
Narses
Nersgatt - Do 23.02.12 08:17
Narses hat folgendes geschrieben : |
Und die haben wirklich keinen Webservice für die Datenübermittlung? So wie du das beschreibst, ist das Formular (oder besser die Formularkaskade) eher für menschliche Benutzung vorgesehen... :? Mit z.B. einem Webservice wäre das erheblich viel einfacher! |
Leider nicht ganz unüblich. Das Problem ist, dass die "Großen" oft in einer Position sind, wo sie einfach bestimmen können. Das heißt dann, sie sagen "ihr müsst die Daten in dem Webformular eintragen. Fertig. Wenn euch das zu viel Arbeit ist, stellt halt noch einen Mann dafür ein.". Und aus Sicht des Datenempfängers besteht ja auch keine Notwendigkeit, eine definierte Schnittstelle zur Verfügung zu stellen. Der Partner kann die Daten ja im Formular eintragen. Da wäre es nur Mehraufwand, eine Schnittstelle zu entwickelt und zu pflegen.
Aus den Gründen muss ich auch an einigen Stellen Webformulare füttern. Wie schon gesagt: IdHttp.
Für POST sieht das dann prinzipiell so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TBlaBla.DoLogin(AUsername, APassword: String); var PostData : TStringList; ResultStream : TStringStream; const ANMELDENAME = 'anmeldename'; PASSWORT = 'password'; URI = 'http://.../index.php'; begin
PostData := nil; ResultStream := nil; try PostData := TStringList.Create; ResultStream := TStringStream.Create('', SysUtils.TEncoding.GetEncoding(1252));
PostData.Values[ANMELDENAME] := AUsername; PostData.Values[PASSWORT] := APassword; PostData.Values['site'] := 'login';
FHttp.Post(URI, PostData, ResultStream); ParseLoginResult(ResultStream);
finally PostData.Free; ResultStream.Free; end;
end; |
FHttp wird hier an einer anderen Stelle erzeugt. Das musst Du also noch machen, oder halt auf die Form klatschen.
jaenicke - Do 23.02.12 08:28
Und da es um mehrere Seiten geht, die der Reihe nach angesteuert werden müssen, könnte es notwendig sein auch einen Cookiemanager in TIdHttp einzubinden. Es kann aber auch sein, dass es IDs in der generierten Seite gibt, die du als Session-ID wieder mitschicken musst oder Ähnliches.
Falls es notwendig wird, könntest du mit Chrome, Opera oder IE 7+ und dessen integrierten Debugger (oder mit einem Browserplugin, wenn du den Firefox nutzen möchtest) nachschauen was da bei den Aufrufen so alles an Daten hin- und hergesendet werden.
OliverN_26 - Do 23.02.12 11:27
Hi und schon mal danke für die Rückantworten.
An 1 Stelle haben wir uns glaub ich Missverstanden. Die Abwicklung mit Delphi ist durch und die Daten werden "nur" noch im Web-Bereich bearbeitet und ausgewertet. Das heisst die übermittlung der Daten wird nicht mit Delphi geschehen. Ich weiß nur nicht ob man so was was mit Javascript/PHP/CGI (oder sonst was) hinbekommt?!
Um das mit Delphi zu realisieren wäre es notwendig eine Tabelle in die Datenbank zu legen, in der die Daten, die für die anzusteuernde Seite wichtig sind, gespeichert werden müssen. Das Delphi Tool prüft dann einfach in regelmäßigen Abständen diese Tabelle und wenn Daten da sind werden sie abgeschickt. Wäre sicher auch ne Lösung, aber mit diesem Problem steh ich ziemlich am Anfang und bevor ich mir jetzt die Tage um die Ohren schlage, würd ich gern das ein oder andere abwägen um wirklich mit der optimalsten Lösung an den Start zu gehen.
Die Sache mit dem Webservice schau ich mir mal an. Angeboten bekommen wir das nicht. Wie "Nersgatt" das schon sagte interessiert die das recht wenig. Es existiert eine Internetseite wo wir die erforderlichen Daten einzutragen haben und fertig. Nur das hat absolut nichts mit einer internen Auftragsabwicklung zu tun und schon muß man alles doppelt machen. Bei unserer Auftragsmenge ist die ganze "sinnlose" Mehrarbeit einfach nich mehr machbar.
lg
Oli
Moderiert von
Narses: Beiträge zusammengefasstDie TWebBrowser Komponente ist schon mal ein guter Anfang, da ich die Formularfelder schon mal mit meinen Daten füllen kann. Glaub damit bin ich auch dem richtigen Weg. Problem was ich jetzt habe ist beim Senden des Formulares im Internet per "action" ein Link mit einer Session ID übergeben wird. Wie kann kann ich bei der Komponente mit "submit" Werte übergeben?
Mein jetziger Testversuch:
Delphi-Quelltext
1: 2: 3:
| WebBrowser1.OleObject.document.forms.item(0).elements.item('feld1').value := '22222'; WebBrowser1.OleObject.document.forms.item(0).elements.item('feld2').value := '36240'; WebBrowser1.OleObject.document.forms.item(0).submit; |
danke
jaenicke - Do 23.02.12 19:17
Solange es keine dynamischen Inhalte auf der Seite geht, sollte TWebBrowser aber gar nicht notwendig und nur unnötiger Aufwand sein.
Wenn die Session ID in dem selben Formular steht, sollte diese auch im TWebBrowser mit übergeben werden. Was da genau passiert, könntest du mit Wireshark mit dem Original vergleichen.
OliverN_26 - Fr 24.02.12 12:14
Also ich sag mal so .. wenn es denn funktioniert mach ich mir diesen "einmaligen" unnötigen Aufwand sehr gerne :-)
Was wäre denn die Alternative?
Ich hab mal ein bisschen gelesen und probiert, aber .
1. Wenn ich den Button in der TWebBrows-Komponente drücke gehts. Mach ich es mit
WebBrowser1.OleObject.document.forms.item(0).submit; passiert zwar was aber anscheinend nicht richtig, denn ich gelange nicht auf die Folgeseite. Was an dem Action-Attribut liegen könnte ?!
2. Ein Auszug aus dem Quelltext der Form sieht wie folgt aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <form id="orderDetails" method="post" action="/MWIA/fc.htm?_flowExecutionKey=_cA3DFCCBC-C30A-42C9-F2EA-E6D91FC94F6E_k4BBC10C6-C9F1-965E-1527-DCF683533B51"><br> <label for="techId">Techniker Nummer</label><br/> <input id="techId" name="techId" style="-wap-input-format: '5N'; -wap-input-required: true;" type="text" value="" maxlength="5"/><br><br/> <label for="woId">Auftragsnummer</label><br/> <input id="woId" name="woId" style="-wap-input-format: '6N'; -wap-input-required: true;" type="text" value="" maxlength="6"/><br/><br/> <input type="submit" class="button" name="_eventId_login" value="Bestätigen"/><br/><br/> </form> |
3. könnte ich rein theoretisch den Link mit Indy-HTTP und POST einfach so versenden:
Delphi-Quelltext
1: 2: 3: 4: 5:
| sl := TStringlist.Create; sl.Add('techId=12345'); sl.Add('woId=59478');
IdHTTP1.Post('http://' + Hostname + '/MWIA/fc.htm?_flowExecutionKey=_cA3DFCCBC-C30A-42C9-F2EA-E6D91FC94F6E_k4BBC10C6-C9F1-965E-1527-DCF683533B51',sl); |
Danke
Moderiert von
Narses: Beiträge zusammengefasstMit
WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; funktioniert es so wie ich es will und ich würde alles so hinbekommen wie ich es gerne hätte. Das ist schon mal traumhaft .. aaaaber .. mich interessiert trotzdem die eventuelle Alternative, die jaenicke angesprochen hat. Es sollte nicht zu kompliziert sein. Welche generellen Nachteile zieht es mit sich wenn ich es mit der Webbrowser Komponente mache?
jaenicke - Fr 24.02.12 12:43
OliverN_26 hat folgendes geschrieben : |
Welche generellen Nachteile zieht es mit sich wenn ich es mit der Webbrowser Komponente mache? |
- langsamer
- Du missbrauchst eine visuelle Komponente, obwohl nichts dargestellt werden soll
- Sicherheitsoptionen des Internet Explorer wirken sich aus
- Fehler sind schwerer zu finden
- ...
OliverN_26 - Fr 24.02.12 12:52
Wie sieht die Alternative aus ?
Nersgatt - Fr 24.02.12 12:56
TIdHttp
OliverN_26 - Fr 24.02.12 13:24
OK .. und wie könnte so was aussehen?
Bei folgendem Code bekomm ich ständig die Meldung "http/1.1 500 Internal Server Error":
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button3Click(Sender: TObject); var sl : TStringList; session_id : String; begin session_id := copy(Webbrowser1.LocationURL,pos('?',Webbrowser1.LocationURL),Length(Webbrowser1.LocationURL));
sl := TStringlist.Create; sl.Add('techId=22222'); sl.Add('woId=59478');
IdHTTP1.Post('http://pfad/MWIA/fc.htm' + session_id, sl);
sl.Free; end; |
So ganz versteh ich das auch noch nicht. Mir leuchtet ein dass ich so die Daten an den Server übermittel. Aber ich muß ja auch das "klicken" simulieren da ich mich noch um 5 weitere Folgeseiten kümmern muß. Auf die muß ich ja auch gelangen ?!
Hilfe :-(
Nersgatt - Fr 24.02.12 13:46
Ich vermute, dass das daran liegt, dass Du die Session-ID noch mit dem TWebbrowser ausliest. Du solltest Dich für eine Sache entscheiden.
OliverN_26 - Fr 24.02.12 13:54
OK .. das stimmt .. das könnte sein .. aber selbst wenn ich das jetzt änder .. wie gelange ich auf die Folgeseite, damit ich diese ebenso auswerten und senden kann?
Nersgatt - Fr 24.02.12 14:05
Du musst nicht nur die URL aufrufen, sondern auch auswerten, was der Server zurückliefert. (Siehe oben Beitrag von mir, ResultStream). Und dann schickst Du halt per Post die Daten ab, die der Server auf der 2. Seite erwartet.
jaenicke - Fr 24.02.12 14:43
Wie gesagt:
jaenicke hat folgendes geschrieben : |
Falls es notwendig wird, könntest du mit Chrome, Opera oder IE 7+ und dessen integrierten Debugger (oder mit einem Browserplugin, wenn du den Firefox nutzen möchtest) nachschauen was da bei den Aufrufen so alles an Daten hin- und hergesendet werden. |
OliverN_26 - Fr 24.02.12 15:33
Ich bekomme an der folgenden Stelle immer den Fehler: "Zu viele Parameter"
Delphi-Quelltext
1:
| ResultStream := TStringStream.Create('', SysUtils.TEncoding.GetEncoding(1252)); |
Nersgatt - Fr 24.02.12 15:43
Versuch mal so: ResultStream := TStringStream.Create();
Die Überladungen kamen vermutlich erst in späteren Delphiversionen.
OliverN_26 - Fr 24.02.12 15:46
"Nicht genügend wirkliche Parameter"
Nersgatt - Fr 24.02.12 15:54
Dann stell mal den Cursor auf TStringStream und drück auf F1... :roll:
jaenicke - Fr 24.02.12 16:05
Früher hatte TStringStream einen Parameter. Da kannst du einen leeren String angeben, also sprich nur den zweiten Parameter weglassen.
Nersgatt hat folgendes geschrieben : |
Dann stell mal den Cursor auf TStringStream und drück auf F1... :roll: |
Full Ack...
Und davon abgesehen zeigt Delphi ja auch an welche Parameter erwartet werden, wenn man die Klammer auf schreibt. Und mit Strg + Shift + Leertaste ebenfalls.
OliverN_26 - Fr 24.02.12 16:18
is ja richtig .. sorry :-(
so gehts:
Delphi-Quelltext
1:
| ResultStream := TStringStream.Create(''); |
Nun bekomme ich an unten angezeigter Position folgende Fehlermeldung: "HTTP/1.1 302 Found"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Button4Click(Sender: TObject); var PostData : TStringList; ResultStream : TStringStream; const URI = 'http://pfad/'; begin PostData := nil; ResultStream := nil; try PostData := TStringList.Create; ResultStream := TStringStream.Create('');
PostData.Values['techId'] := '22222'; PostData.Values['woId'] := '59478';
IdHTTP1.Post(URI, PostData, ResultStream); showmessage(ResultStream.DataString); finally PostData.Free; ResultStream.Free; end; end; |
EDIT:
könnte daran liegen das ich an die falsche Seite sende, denn wenn ich abschicke ist ja bereits die Session_id generiert, welche ich mitsenden muß. Dafür müsste ich aber die Startseite erst mal laden (ohne anzuzeigen) um die 1.Session_id zu generieren. Wie kann ich denn dann im weiteren die Parameter aus der Adresszeile auslesen?
:-/
jaenicke - Fr 24.02.12 17:24
Die Fehlermeldung sagt doch schon was los ist, siehe Dokumentation zum HTTP Protokoll:
Du musst also der Weiterleitung folgen, also in IdHttp Weiterleitungen aktivieren, also HandleRedirects auf True stellen.
OliverN_26 - Mo 27.02.12 19:01
Hi .. ich probier mir hier nen Wolf. Mit der Indy-HTTP Variante komm ich nich so wirklich weiter, aber ich bleib trotzdem dran. Hab jetzt eine Frage zu der TWebBrowser Variante, da bis auf 1 Seite alles so läuft, wie ich es gerne hätte nd für eventuell spätere Auswertungen, bzw. Darstellungen, scheint mir diese Lösung erst mal die besser umsetzbarere zu sein .. A B E R .. auf einer Seite hab ich kleines AJAX-Script laufen. Ich habe jede der 5 Folgeseiten in eine eigene Funktion gepackt und lasse diese der Reihe nach beim öffnen des Programmes ablaufen (da später alles automatisch laufen soll). Wenn ich nun auf der entsprechenden Seite
Delphi-Quelltext
1:
| Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click; |
schreibe, kommt die Fehlermeldung "Javascript required - Java Script ist nicht aktiv. Bitte aktivieren Sie das Scribt in Ihrem Browser.". Klicke ich allerdings in der WebBrowser-Komponente mit der Maus auf den entsprechenden Button, geht es. Wenn ich einen Button auf die Form lege und bei onClic den obigen Code einfüge geht es auch. Nur wenn ich es automatisch laufen lasse kommt jedesmal die Fehlermeldung, dass ich kein Javascript anhabe. Warum??? Habt ihr da einen Tip was ich falsch mache?
Alle Seiten laufen so wie sie es sollen .. bis auf Seite 2 .. eben dort wo das Script geschalten ist. Hier ist mein jetziger Versuch:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var Form1: TForm1; id: Integer;
procedure TForm1.FormCreate(Sender: TObject); begin id := 0; WebBrowser1.Navigate('http://pfad_der_hauptseite'); end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin id := id + 1;
case ID of 1: begin WebBrowser1.OleObject.document.forms.item(0).elements.item('techId').value := '22222'; WebBrowser1.OleObject.document.forms.item(0).elements.item('woId').value := '74656'; WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; end; 2: Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click; 3: WebBrowser1.OleObject.document.forms.item(0).elements.item(1).click; 4: WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; end; end; |
vielen Dank
Moderiert von
Narses: Beiträge zusammengefasstAch menno :-( Schreib ich es wie folgt, klappt alles wunderbar:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin id := id + 1;
case ID of 1: begin WebBrowser1.OleObject.document.forms.item(0).elements.item('techId').value := '22222'; WebBrowser1.OleObject.document.forms.item(0).elements.item('woId').value := '74656'; WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; end; 2: begin showmessage(inttostr(id)); Webbrowser1.OleObject.Document.forms.item(0).elements.item(0).click; end; 3: WebBrowser1.OleObject.document.forms.item(0).elements.item(1).click; 4: WebBrowser1.OleObject.document.forms.item(0).elements.item(2).click; end; end; |
Aber ich will es natürlich ohne ein lästiges PopUp laufen lassen. Bei Textaktualisierungen kenn ich "
Application.ProcessMessages;" muß/kann ich hier was derartiges auch nutzen? Ich steh total auf dem Schlauch :-(
Boldar - Di 28.02.12 13:32
Sowas geht btw auch ohne Probleme mit php.
Auch dafür gibt es diverse html-Parser und ähnliches.
OliverN_26 - Di 28.02.12 14:34
Für unsere Zwecke ist diese Lösung optimal. Für eine spätere Weiterverarbeitung der Daten wäre dein Kommentar allerdings sehr interessant. Hast du da einen Ansatz/Stichwort für mich? Evt. auch eine Lösung zu meinem hierigen Problem? Danke
jaenicke - Di 28.02.12 15:18
Da wirst du schauen müssen was im Skript alles passiert...
Irgendetwas wird da gemacht, das dazu führt, dass es ohne nicht geht. Vermutlich wird irgendein Feld gesetzt und das Skript schlicht noch nicht fertig.
Das lässt sich aber eben nur durch eine Analyse herausfinden. Sei es im Browser mit dem Skript oder mit Wireshark im Vergleich der Datentransfers (so viel wird da aber kaum passieren, deshalb ist ersteres sinnvoller).
OliverN_26 - Di 28.02.12 17:46
Kann ich da irgendetwas mit dem "WebBrowser1.ReadyState" Status anfangen? Das Problem wird, wie du schon sagtest, das Script sein, was erst läuft, wenn wirklich alles fertig geladen ist.
XML-Daten
1: 2: 3:
| <script type="text/javascript"> $(document).ready(function() { $("#next").attr("name", "_eventId_next_ajax"); }); </script> |
Das ist alles was da an Script drin steht .. Das muß doch irgendwie gehen :-(
jaenicke - Di 28.02.12 18:08
Da hast du es doch: Es wird das Feld mit der ID next ausgefüllt. ;-) Mach das manuell und es sollte gehen.
Genau das würdest du halt als Unterschied bei der Übermittlung sehen im Vergleich zu dem was du schickst. (Kann natürlich noch mehr sein, was du vielleicht nicht siehst gerade.)
OliverN_26 - Di 28.02.12 18:12
Wie kann ich das manuell machen? Das Feld "next" is der Button den ich wie wild versuch zu drücken :-)
Hatte bereits folgendes versucht (was aber auch nich läuft):
XML-Daten
1:
| Webbrowser1.OleObject.document.forms.item(0).elements.item('next').click; |
jaenicke - Di 28.02.12 18:17
Ok, ich habe mich verschrieben: Es wird das Attribut name des Buttons gesetzt, das habe ich wohl als selbstverständlich vorausgesetzt. ;-)
Und über den Namen des Buttons wird dann am Server festgestellt, dass es die nächste Seite ist. Das Attribut musst du also vor dem Abschicken setzen.
OliverN_26 - Di 28.02.12 19:28
Hmm .. das klingt einleuchtend .. hast du einen Tip wie ich das Attribut ändern kann?
Danke
jaenicke - Di 28.02.12 20:03
Ich nicht direkt, aber Google sagt:
Delphi-Quelltext
1:
| Webbrowser1.OleObject.document.forms.item(0).elements.item('next').setAttribute('name', '_eventId_next_ajax'); |
Ansonsten bliebe noch als Notlösung den JavaScript Code selbst auszuführen:
http://www.delphidabbler.com/articles?article=21
OliverN_26 - Mi 29.02.12 12:32
Klappt super .. Damit komme ich erst mal weiter .. Danke :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!