AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ --> Delphi übersetzen

Ein Thema von toms · begonnen am 16. Jan 2005 · letzter Beitrag vom 25. Jan 2005
Antwort Antwort
Seite 2 von 2     12   
Assarbad
(Gast)

n/a Beiträge
 
#11

Re: C++ --> Delphi übersetzen

  Alt 16. Jan 2005, 19:58
Zitat von toms:
Code:
IHTMLDocument2 *lpHtmlDocument
Habe noch nicht soviel mit Interfaces in Delphi gearbeitet. IMO ist der Typ IHTMLDocument2 aber schon ein Pointer. Die C++-Syntax sagt nix weiter als daß lpHtmlDocument ein Pointer auf den Typ IHTMLDocument2 ist.

Zitat von toms:
Code:
if(!lpHtmlDocument)
    return;
so ?
Delphi-Quellcode:
 
if lpHtmlDocument = nil then
   Exit;
Ja!

Zitat von toms:
Code:
IUnknown *lpUnk;
IEnumVARIANT *lpNewEnum;
Siehe 1.)

Zitat von toms:
Code:
((IDispatch*)frame).QueryInterface(IID_IHTMLWindow2, (void**)&elem);
Hier wurde vom Autor offenbar die besch***en lesbare alte C-Casting-Syntax genommen. Die neue C++-Syntax entspricht in etwa der von Delphi, außer daß man Typen auch inline deklarieren kann (dann müssen sie wie hier in Klammern stehen). Lies es so:

Code:
(IDispatch*)(frame).QueryInterface(IID_IHTMLWindow2, (void**)(&elem));
Es ist nur der Typecast von "frame" nach "Pointer auf IDispatch" um dann direkt die Methode von IDispatch QueryInterface() aufzurufen und das IHTMLWindow2-Interface in "elem" zu bekommen.

Code:
(void**)(&elem)
wäre in Delphi wohl ungefähr:
var elem:Pointer
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#12

Re: C++ --> Delphi übersetzen

  Alt 25. Jan 2005, 13:51
Habe leider immer noch nicht begriffen, wie das zu uebersetzen ist:

CComBSTR testid(searchID.length()+1,(const char*)searchID); habe mal einen Anfang gemacht:


... := Length(searchID) + 1, (const char * )searchID);

Weiter unklar ist das:

Code:
testtag(5, ’SPAN’);

Code:
{lpUnk: IUnknown;}

 if (SUCCEEDED(lpAllElements.get__newEnum(&lpUnk))&& lpUnk ! = nil)

Code:
varElement.pdispVal->QueryInterface(IID_IHTMLElement,(void**)&lpElement);
soweit habe ich:
var
varElement: OleVariant;
lpElement: IHTMLElement;

varElement.pdispVal.QueryInterface(IID_IHTMLElemen t, lpElement);

jedoch erhalte ich folgende Fehlermeldung:

[Error] ... Type not allowed in Variant Dispatch call


Code:
lpElement->put_outerHTML(innerText);
Problem:

{var
lpElement: IHTMLElement;}

put_outerHTML erkennt Delphi nicht!
Thomas
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#13

Re: C++ --> Delphi übersetzen

  Alt 25. Jan 2005, 14:29
CComBSTR testid(searchID.length()+1,(const char*)searchID); Ich hatte weiter oben schon gesagt, daß ein CConBSTR nichts weiter ist als ein Wrapperobjekt für OleStrings und damit WideStrings (eigtl. PWideChar). Da wir in Delphi kein Objekt dazu brauchen, sondern der WideString (obwohl kein Objekt/Klasse) reicht, sollte das so gehen.
Delphi-Quellcode:
var
testid:WideString;
searchID:String;
begin
  testid := searchID;
.
.
.
Code:
testtag(5, 'SPAN');
Keine Ahnung ... dazu müßte man den Code drumherum sehen. Es kann von Constructor über Macro bis Funktion alles sein.

Code:
{lpUnk: IUnknown;}

 if (SUCCEEDED(lpAllElements.get__newEnum(&lpUnk))&& lpUnk ! = nil)
SUCCEEDED ist ein Macro, das IMO auf
Ergebnis = S_OK checkt.

Versuch hier mal:
Delphi-Quellcode:
var
 varElement: OleVariant;
 lpElement: IHTMLElement;

varElement.pdispVal.QueryInterface(IID_IHTMLElement, Pointer(lpElement));
Keine Garantie, daß irgendwas davon hilft. Ich habe leider nicht genug Zeit um ausführlicher zu helfen.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#14

Re: C++ --> Delphi übersetzen

  Alt 25. Jan 2005, 15:01
Zitat von Assarbad:
Code:
{lpUnk: IUnknown;}

 if (SUCCEEDED(lpAllElements.get__newEnum(&lpUnk))&& lpUnk ! = nil)
SUCCEEDED ist ein Macro, das IMO auf
Ergebnis = S_OK checkt.
Da muss ich korrigieren:
Code:
#define SUCCEEDED(Status)    ((HRESULT)(Status) >= 0)
Zitat:
put_outerHTML erkennt Delphi nicht!
Hat man in Delphi nicht SmartPointer? In dem Fall ist outerHTML eine Eigenschaft und du kannst ihr direkt etwas zuweisen, probier mal.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#15

Re: C++ --> Delphi übersetzen

  Alt 25. Jan 2005, 15:03
Zitat von OregonGhost:
Zitat:
put_outerHTML erkennt Delphi nicht!
Hat man in Delphi nicht SmartPointer? In dem Fall ist outerHTML eine Eigenschaft und du kannst ihr direkt etwas zuweisen, probier mal.
Klar, so geht's!


Zitat von "Assarbad:
Versuch hier mal:
Delphi-Quellcode:
var
 varElement: OleVariant;
 lpElement: IHTMLElement;

varElement.pdispVal.QueryInterface(IID_IHTMLElement, Pointer(lpElement));
Keine Garantie, daß irgendwas davon hilft. Ich habe leider nicht genug Zeit um ausführlicher zu helfen.
Funktioniert leider genausowenig
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.
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