Seite 3 von 7

Verfasst: 19.04.2007 00:00
von K.Putt
Hallo,
etwas spät, aber ich nutze diesen Code auch seit einer Weile.



Statt dem

Code: Alles auswählen

Debug PeekS(*Buffer)
weist du den Speicherinhalt z.B. einfach einer Variable zu :

Code: Alles auswählen

htmloutput$ = PeekS(*Buffer)
Alternativ lässt sich auch eine LinkedList() benutzen (zeilenweise Speicherung)

(Der untenstehende Code ist nicht von mir, funktioniert aber, hat jemand mal im Forum gepostet, ich weiss nicht mehr genau wer oder wo, sorry)

Code: Alles auswählen

Text.s= PeekS(*Buffer)
For i = 1 To CountString(Text, #LF$) + 1
     AddElement(LinkedList_htmloutput.s())
     LinkedList_htmloutput.s() = ReplaceString(StringField(Text, i, #LF$), #CR$, "")  
Next 
Wo wir dabei sind, ich habe auch eine kleine Frage dazu, betr. der Frage zu meinem Speicherleck:
http://www.purebasic.fr/german/viewtopic.php?t=12686

Ich speichere den HTML Output in der LinkedList(), die Funktion wird sehr oft aufgerufen, für verschiedene Links, die LinkedList() leere ich vor jedem Aufruf mit ClearList(), trotzdem entseht ein stetiger Speicherverbrauch bei jedem Aufruf der Funktion, hat Jemand eine Lösung?

Verfasst: 13.02.2009 20:20
von saimen
und wie kann ich jetzt z.b. informationen wie "Titel" etc. der Website im Webgadget auslesen?

Verfasst: 13.02.2009 20:37
von Andesdaf
meinst du jetzt den Titel der Seite im Browserfenster oben?

Code: Alles auswählen

GetGadgetItemText(#webg,#PB_Web_PageTitle) 

Verfasst: 13.02.2009 20:46
von saimen
das Problem ist dass ich mein Prog mit der 3.94 schreiben. Hab schon versucht die Funktionen aus der 4.2 in eine DLL zu schreiben und aufzurufen. Das scheiterte aber daran dass ich aus einer DLL keine Gadgets abfragen kann...

Verfasst: 13.02.2009 20:55
von Andesdaf
na dann ist das natürlich schwieriger :wink:

Verfasst: 23.02.2009 10:14
von saimen
schwieriger heißt aber nicht unlößbar... Wer hätte denn die zeit sich das mal anzuschauen???

Verfasst: 23.02.2009 11:08
von Kiffi
saimen hat geschrieben:schwieriger heißt aber nicht unlößbar...
bitte mit weichem 's' (wie Samthandtasche).
saimen hat geschrieben:Wer hätte denn die zeit sich das mal anzuschauen???
was bekomme ich denn dafür? ;-)

folgenden Code für Deine DLL aufbereiten und gut ist:

Code: Alles auswählen

IncludePath #PB_Compiler_Home + "\srod\comate" ; Pfad anpassen!
XIncludeFile "comate.pbi"

Procedure.s GetHtml(url.s)
  
  Protected oIE.COMateObject
  Protected ReturnString.s
  
  oIE = COMate_CreateObject("InternetExplorer.Application")
  
  If oIE
    
    oIE\SetProperty("Visible = #False")
    oIE\Invoke("Navigate('" + url + "')")
    
    Repeat
    Until oIE\GetIntegerProperty("ReadyState") = 4
    
    ReturnString = oIE\GetStringProperty("Document\documentElement\outerHTML")
      
    oIE\Release()
    
  EndIf
  
  ProcedureReturn ReturnString
  
EndProcedure

Debug GetHtml("http://www.google.de")
Grüße ... Kiffi

Verfasst: 23.02.2009 20:39
von saimen
kiffe, das finde ich aber mal ganz toll dass du die dir mühe machst :) Als Belohnung gibts Lob:)

hab das jetzt mal mit folgender url getestet "http://www.purebasic.fr/german/posting. ... ly&t=10039"
und da kam dann "Website konnte nicht angezeigt werden"....

Verfasst: 23.02.2009 21:04
von Kiffi
saimen hat geschrieben:kiffe, das finde ich aber mal ganz toll dass du die dir mühe machst :) Als Belohnung gibts Lob:)
och, es reicht mir schon, wenn Du meinen Namen richtig schreiben würdest. ;-)
saimen hat geschrieben:hab das jetzt mal mit folgender url getestet "http://www.purebasic.fr/german/posting. ... ly&t=10039"
und da kam dann "Website konnte nicht angezeigt werden"....
Dann machst Du was falsch. Bei mir funktioniert es. Allerdings ist es auch
nicht grade schlau, zu Testzwecken eine Seite aufzurufen, auf der man
angemeldet sein muss, um den mode=reply auszuführen. ;-)

Grüße ... Kiffi

Verfasst: 23.02.2009 21:15
von saimen
also, kiffi :), mit google.de klappt es, aber z.b. mit
http://www.youtube.com/watch?v=V7zep5jcvjc&feature=dir
nicht... ???