Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 14.03.05 16:57 
Hallo,

ich glaube es kaum, aber heute darf ich eine Abwandlung eines absoluten evergeens fragen.

Ich habe ein Web-Script geschrieben, welches ausgabedaten erzeugt und diese schön Formatiert (HTML/CSS) ausgibt. Paralem möchte ich diese Daten aber auch automatisch auswerden, wenn die Seite über ein kleines tWebbrowser basiertes Programm aufgerufen wird. Um dies zu ermöglichen schreibe ich die Daten (diesesmal ohne Formatierung-Tags) in (HTML-)Formular-Felder.

Sind diese Sichtbar kann sie Problemlos per:
ausblenden Delphi-Quelltext
1:
Wert := WebBrowser.OleObject.document.forms.item(0).elements.item('MeinFeld').value;					

auslesen.

Habe ich die Felder aber als Hidden gekennzeichnet, bekomme ich mit der selben anweisung aber eine zugriffsverletzung.

Daher meine Frage, wie greife ich per tWebbrowser auf hidden Formular Felder zu?

Gruß
Klabautermann
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Mo 14.03.05 17:15 
user profile iconKlabautermann hat folgendes geschrieben:
Habe ich die Felder aber als Hidden gekennzeichnet, bekomme ich mit der selben anweisung aber eine zugriffsverletzung.

Eigentlich sollte es da keine Probleme geben. Vielleicht liegt der Fehler irgendwo anders.
Hast du das Feld so <input name="MeinFeld" type="hidden"> geschrieben? Vielleicht hast du mehr als eine Form?

_________________
Ciao, Sprint.
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 14.03.05 17:41 
Hallo,

die HTML-Ausgabeseiten werden aus Template Dateien erzeugt. Ändere ich in der temlpate Datei (der Ergebnis Seite) die Zeile <input name="getkey"  value="%NEWVALUE%"> in <input type="hidden" name="getkey"  value="%NEWVALUE%"> kann ich sie nciht mehr auslesen. Ich bekomme eine "Zugriffsverletzung bei Adresse 004884CF ..." ist das Feld sichtbar, stört es die Optick der Seite, ist aber nicht die möglichkeit das ganze aus zu lesen.

Hier mal eine komplette ausgabeseite mit Hidden Feld:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<p>Info Text</p>
<p><table style="border-width:0px" align="center"><tr><td style="background-color:#C0C0C0; font-weight:bold; font-size:24pt">3207</td><td style="background-color:#A0A0A0; font-weight:bold; font-size:24pt">5100</td><td style="background-color:#C0C0C0; font-weight:bold; font-size:24pt">0120</td><td style="background-color:#A0A0A0; font-weight:bold; font-size:24pt">4530</td><td style="background-color:#C0C0C0; font-weight:bold; font-size:24pt">2001</td><td style="background-color:#A0A0A0; font-weight:bold; font-size:24pt">1000</td><td style="background-color:#C0C0C0; font-weight:bold; font-size:24pt">0767</td></tr></table></p>
<form action="./Lizensierung.exe" method="post">
  <p align="center">
    <input type="hidden" name="ActPage" value="getkey">
    <input type="hidden" name="sendkey" value="90011005302000146">
    <input type="hidden" name="getkey"  value="3207510001204530200110000767"><br>
  </p>
</form>
</body>
</html>


Gruß
Klabautermann


Zuletzt bearbeitet von Klabautermann am Di 15.03.05 19:47, insgesamt 1-mal bearbeitet
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Mo 14.03.05 17:50 
Klabautermann hat folgendes geschrieben:
Ich bekomme eine "Zugriffsverletzung bei Adresse 004884CF ..." ist das Feld sichtbar, stört es die Optick der Seite, ist aber nicht die möglichkeit das ganze aus zu lesen.

mmh... Ich bekomme keine Zugriffsverletzung. Läuft so wie es soll. Getestet nach deinem HTML Beispiel.

_________________
Ciao, Sprint.
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 14.03.05 18:10 
Hi,

ein paar Zeilen höher Frage ich auch noch ohne Probleme das Feld ActPage ab beim Zugriff auf getkey will er nicht mehr.
Warum nur?

Hier mal die ensprechnede Procedure:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TfrmMain.WB_RegNavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
  var
    SideName : String;
begin
  SideName := WB_Reg.OleObject.document.forms.item(0).elements.item('ActPage').value;
  if (SideName = 'submitkey'then
    WB_Reg.OleObject.document.forms.item(0).elements.item('sendkey').value :=
                                                                       fSendKey
  else if (SideName = 'getkey'then begin
    ShowMessage(WB_Reg.OleObject.document.forms.item(0).elements.item('getkey').value);
  end;
end;


In der hervorgehobenen Zeile wird die Exception geschmissen allerdings, wie bereits erwähnt, nur wenn das Feld hidden ist. Was stimmt mit diesem Feld nicht? Umbenennen hilft auch nicht :(. Ich versuchte auch bereits den Wert zuerst in einer String Variablen entgegen zu nehmen, wie es beim SideName ja klappt.

Gruß
Klabautermann
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 15.03.05 19:46 
Hallo,

ich habe die Ursache für den Fehler zwar nciht finden können - dafür aber ein Workaround.
Wenn dich in der Template das Action & das metod Tag weglasse scheind es zu funktionieren. Diese sind in diesem Fall zwar überflüssig, aber stören sollten sie eigendlich nicht.
Naja, auf jeden Fall läuft es jetzt (hoffendlich nciht nur bis zur nächsten änderung am Template), da ist es nciht so schlimm, dass ich verwirrt zurück bleibe. Wenn mir das jemand erklähren könnte währe ich trotzdem dankbar ;).

Gruß
Klabautermann
Julian W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win 2000
D7 Enterprise
BeitragVerfasst: Mi 05.07.06 16:22 
Also ich habe festgestellt, das es oft geht, wenn man
ausblenden Delphi-Quelltext
1:
Wert := WebBrowser.OleObject.document.forms.item(0).elements.item('MeinFeld').value;					

in
ausblenden Delphi-Quelltext
1:
Wert := WebBrowser.OleObject.document.forms.item(1).elements.item('MeinFeld').value;					

oder einen anderen Wert ändert.. Ich habe kein Plan, was das item(x) genau macht, aber ich vermute mal, man kann damit die form auf der Seite auswählen, also wenn es z.B. 2 forms gibt ne 1 für die 2te form... Ist aber nur eine Vermutung
Highspeeder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 34

Win 7
Delphi 7 Profesional,Visual Basic
BeitragVerfasst: Fr 07.07.06 08:41 
Titel: Frames
Gibt es da vielleicht Frames ????