Autor |
Beitrag |
Jukka
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 18:11
Hallo
Ich habe eine Konsolenanwendung in der ich einen WebBrowser erzeug. Dieser navigiert auf eine Seite und soll dann ganz einfach den Quelltext speichern.
Ich habe das OnDownloadComplete (bzw OnDocumentComplete) Event genutzt, die prozedur dafür geschrieben und es dem Browser (nach Create) zugewiesen. Jedoch hab eich nun diesen Fehler:
Zitat: | [Fehler] Project1.dpr(24): Inkompatible Typen: 'TWebBrowserDocumentComplete' und 'procedure, untyped pointer or untyped parameter' <- Bei OnDocumentComplete
oder:
[Fehler] Project1.dpr(24): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter' <- Bei OnDownlaodComplete |
Der Code ist folgendermaßen:
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: 30: 31: 32: 33:
| program Project1;
{$APPTYPE CONSOLE} uses SysUtils, ShDocVw, OleCtrls, Classes;
var Browser: TWebBrowser;
procedure BrowserDocumentComplete(Sender: TObject); var sl: TStringList; begin sl := TStringList.Create; sl.Text := Browser.OleObject.Document.Body.InnerHTML; sl.SaveToFile(paramstr(0)+'test.html'); sl.Free; end;
BEGIN WriteLn('Starte Test...'); try Browser := TWebBrowser.Create(nil); Browser.OnDocumentComplete := BrowserDocumentComplete(Browser); Browser.Navigate('http://www.google.de'); except WriteLn(' -> Test fehlgeschlagen'); readln; exit; end; WriteLn(' -> Test erfolgreich!'); readln; end. |
Hab ich einen grundsetzlichen Fehelr das das in Konsolen icht geht oder spinnt da was?
Ju
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 04.12.06 18:13
hi
Delphi-Quelltext 1:
| Browser.OnDocumentComplete := BrowserDocumentComplete; |
ohne dem Parameter, den tut er automatisch dazu
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 18:18
Tat ich bereits da kam dieser Fehler:
Zitat: | [Fehler] Project1.dpr(24): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' |
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 04.12.06 18:31
Hallo Jukka,
abgesehen davon, dass es die Lösung nicht sehr schön ist, glaube ich auch nicht, dass sie funktionieren würde, bzw. nur über Umwege.
Das Problem ist, dass die Methode zu keiner Klasse gehört. Das heisst, du müsstest eine Klasse erstellen und dann deren Methode dort zuweisen (mehr als umständlich).
Viel einfacher und schöner ist die Lösung mit INTERNETREADFILE.
Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 18:37
Hm ja aber das Problem ich das ich Das Programm als "SchnellProgramm" zum upload von Dateien auf meine Seite nutzen will (sogesehn ein 1-klick-hoster).
Nun das Problem ist, wäre es Windows allein würde ich ganz einfach eien anwendung machen, opendialog rein und fertig. Jedoch soll das programm auch unter Linux (debian konsole) lauffähig sein, sprich durch eingabe eines komandos, und der Upload läuft über formular
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 04.12.06 18:40
Jukka hat folgendes geschrieben: | Jedoch soll das programm auch unter Linux (debian konsole) lauffähig sein, sprich durch eingabe eines komandos, und der Upload läuft über formular |
Und du glaubst, dass Programm läuft auf Linux, wenn du die TWebBrowser-Komponente benutzt? 
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 18:43
mit Wine schon, kenne programme die so arbeiten, nur halt in C geschreiben udn ich kann kein c
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mo 04.12.06 19:05
IMHO muss die Prozedur, die du dem Ereignis zuweist Teil einer Klasse sein.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 19:30
Danke, die zuweisung es Events geht jetzt jedoch ..
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: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| program Project1; {$APPTYPE CONSOLE} uses SysUtils, ShDocVw, OleCtrls, Classes;
type TBrowserClass = class WebBrowser: TWebBrowser; procedure BrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); end;
var Browser: TBrowserClass;
procedure TBrowserClass.BrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var sl: TStringList; begin sl := TStringList.Create; sl.Text := WebBrowser.OleObject.Document.Body.InnerHTML; sl.SaveToFile(paramstr(0)+'test.html'); sl.Free; end;
BEGIN WriteLn('Starte Test...'); try with Browser.Create do begin WebBrowser.OnDocumentComplete := BrowserDocumentComplete; WebBrowser.Navigate('http://www.google.de'); end; except WriteLn(' -> Test fehlgeschlagen'); readln; exit; end; WriteLn(' -> Test erfolgreich!'); readln; end. |
DAs erzeugt einen Fehler: (auch ohne with, bei bversuchen ohne try)
Zitat: | ---------------------------
Project1.exe - Fehler in Anwendung
---------------------------
Die Anweisung in "0x00403b42" verweist auf Speicher in "0xfffffffc". Der Vorgang
"read" konnte nicht auf dem Speicher durchgeführt werden.
Klicken Sie auf "OK", um das Programm zu beenden.
Klicken Sie auf "Abbrechen", um das Programm zu debuggen.
---------------------------
OK Abbrechen
--------------------------- |
Kann es vielleicht sein das der WebBrowser in eienr Konsolenanwendung nicht erzeugt werden kann?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 04.12.06 21:26
Moin!
Du hast in einer Konsole keinen MessageLoop  , das mit den Events wird also nix.
Wenn du doch das Prog eh unter Wine laufen lassen willst, kannst du auch gleich eine Formular-Anwendung draus machen, oder... ?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 21:30
Gibt wine denn unter debian was unter putty gesteuert wird denn ein bild zurück? Denn meines wissens habe ich soetwas nochnet gesehn, bzw ein interface womit man das direkt steruen kann
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 04.12.06 22:13
Hallo,
warum nimmst du nicht gleich ein Linux Programm und bastelst dir ein Script dafür zusammen. Es gibt ein gutes Konsolenprogramm für Debian, hab aber gerade den Namen vergessen. Ich frag morgen mal meinen Freund und geb dir bescheid.
Aber könntest du nochmal genau beschreiben, was du eigentlich machen willst? Dieses Gefrimmel hier muss ja nicht sein, ich wette, wir finden was für dich ohne diese ganzen Umwege!
Zur Not kannst du die Lösung von mir oben nehmen, die geht sicherlich auch problemlos mit wine, ist aber auch nicht sehr schön!
Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 22:18
Ich habe nehmen wir mal an eine InternetSeite, Da steht ein Textfeld und ein SubmitButton. In das Feld soll halt eien Datei eingetragen werden die auf dem PC/Server was auch imemr ist. Und die wird dann hochgeladen udn gibt den link aus.
NEhmen wir mal ein beispiel:
Ich hätte jetzt einen Root mit debian, und will der eine datei auf Rapidshare hochladen, da geht das aber nicht weil ich das nicht bedienen kann, kein Interface . Das programm soll das machen und dann den Downloadlink zurückgeben.
Geht das einfacher?
Zuletzt bearbeitet von Jukka am Mo 04.12.06 22:23, insgesamt 1-mal bearbeitet
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 04.12.06 22:21
Jukka hat folgendes geschrieben: | Ich habe nehmen wir mal an eine InternetSeite, Da steht ein Textfeld und ein SubmitButton. In das Feld soll halt eien Datei eingetragen werden die auf dem PC/Server was auch imemr ist. Und die wird dann hochgeladen udn gibt den link aus.
NEhmen wir mal ein beispiel:
Ich hätte jetzt einen Root mit deian, und will dor eine datei auf Rapidshare hochladen, da geht das aber nicht weil ich das nicht bedienen kann weil ich kein Interface habe. Das programm doll das machen und dann den Downloadlink zurückgeben.
Geht das einfacher? |
Geht das formatiert mit weniger Rechtschreibfehler?
Und warum muss das alles über einen extra Server gehen und nicht direkt?
Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Jukka 
      
Beiträge: 107
Win XP Pro
Delphi 7
|
Verfasst: Mo 04.12.06 22:25
Sorry wegen den Fehlern habs auch eben erst bemerkt.
Naja. Wenne s jetzt mehere GB wären und die sollen alle auf den 1-klick-Hoster und ich würde alles vom Root laden und dann mit einer DSL 1000 Leitung einzeln hochladen. Da würde das Programm/Script viel schneller gehen.
|
|