Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2016
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
alguien puede convertir esta funcion a C++ Builder ?

Tengo esta funcion en Delphi y no se como se implementaria en C++ builder Rad Studio

Alguien me echa una manita??

Código Delphi [-]
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean; 
var 
ps: IPersistStreamInit; 
ss: TStringStream; 
sa: IStream; 
s: string; 
begin 
ps := WebBrowser.Document as IPersistStreamInit; 
s := ''; 
ss := TStringStream.Create(s); 
try 
sa := TStreamAdapter.Create(ss, soReference) as IStream; 
Result := Succeeded(ps.Save(sa, True)); 
if Result then ACode.Add(ss.Datastring); 
finally 
ss.Free; 
end; 
end;

Última edición por Casimiro Notevi fecha: 02-10-2016 a las 11:34:36.
Responder Con Cita
  #2  
Antiguo 02-10-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Snaked.

Código:
...
#include <ActiveX.hpp>
...

void gethtmlCode(TCppWebBrowser* wb, TStrings* lines)
{
  IPersistStreamInit* psi;

  if (!wb->Document) return;
  if (wb->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi) == S_OK)
  {
    TStringStream *ss = new TStringStream("");
    TStreamAdapter *sa = new TStreamAdapter(ss, soReference);

    try
    {
      if (SUCCEEDED(psi->Save(*sa, true)))
        lines->Add(ss->DataString);
    }
    __finally
    {
      delete ss;
      delete sa;
    }
  }
}
Ejemplo de uso:
Código:
void __fastcall TForm1::Button1Click(TObject* Sender)
{
  gethtmlCode(CppWebBrowser1, Memo1->Lines);
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-10-2016
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
hola de nuevo ecfisa

aqui intentando encajar el codigo que me has dado pero me da un par de errores que no encuentro como solucionarlos de momento

si incluyo el #include <Winapi.ActiveX.hpp> me da 229 errores.....
si no lo incluyo solo da estos

dice el linker estos 3 errores:

"use of undeclared identifier 'IPersistStreamInit' "
"use of undeclared identifier 'psi' "
"no member named 'Document' in 'Fmx::WebBrowser::TWebBrowser' "

y la funcion esta asi

Código:
void gethtmlCode(TWebBrowser* wb, TStrings* lines)
{
  IPersistStreamInit* psi;

  if (!wb->Document) return;
  if (wb->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi) == S_OK)
  {
	TStringStream *ss = new TStringStream("");
	TStreamAdapter *sa = new TStreamAdapter(ss, soReference);

	try
	{
	  if (SUCCEEDED(psi->Save(*sa, true)))
		lines->Add(ss->DataString);
	}
	__finally
	{
	  delete ss;
	  delete sa;
	}
  }
}
no entiendo como algo tan simple como guardar un codigo fuente HTML de una pagina web en un Memo se puede volver tan lioso

ecfisa: la cuestion es que NECESITO esta funcion como el comer, porque es clave en un punto del programa donde cargo en el TWebBrowser una pagina web y necesito acceder al texto HTML pasandolo al Memo y la cuestion es que estoy probando codigo en RAD STUDIO 10 Seattle y en C++ Builder 6 si pude hacerlo pero este codigo no sirve en RS10 entre otras cosas porque el citado "Document" del TWebBrowser ya no esta donde estaba en builder 6

Estoy buscando por toda la Red y no encuentro nada que me aclare esto del famoso "Document"

Última edición por Snaked fecha: 02-10-2016 a las 12:38:43.
Responder Con Cita
  #4  
Antiguo 02-10-2016
j0seant j0seant is offline
Miembro
 
Registrado: feb 2006
Posts: 38
Poder: 0
j0seant Va por buen camino
Modificándolo un poco valdría tanto para la versión 6 como para la 10Seattle (y no es necesario añadir ninguna cabecera manualmente)

Solo es válido para una aplicación VCL evidentemente, no para una FMX.

Código:
void gethtmlCode(TCppWebBrowser* wb, TStrings* lines)
{
  IPersistStreamInit* psi;
  if (wb->Document && SUCCEEDED(wb->Document->QueryInterface<IPersistStreamInit>(&psi)))
  {
    TStringStream *ss = new TStringStream(String(""));
    _di_IStream sa(*new TStreamAdapter(ss, soReference));
    try {
      if (SUCCEEDED(psi->Save(sa, true)))
        lines->Add(ss->DataString);
    }
    __finally {
      delete ss;
      psi->Release();
    }
  }
}
Responder Con Cita
  #5  
Antiguo 26-10-2016
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
que es una FMX ?
Responder Con Cita
  #6  
Antiguo 27-10-2016
j0seant j0seant is offline
Miembro
 
Registrado: feb 2006
Posts: 38
Poder: 0
j0seant Va por buen camino
Cita:
Empezado por Snaked Ver Mensaje
que es una FMX ?
C++Builder/Delphi, usan 2 frameworks, el de toda la vida, llamado VCL (Visual Component Library) y uno nuevo multiplataforma llamado FMX (Firemonkey).

En versiones más viejas, directamente ponía Firemonkey o FMX en los menús, en las nuevas, aunque es lo mismo, pone Multi-Device, ya que como había dicho es multiplataforma: Windows, Mac (OS X), iPhone (iOS), Android y próximamente Linux).

Las dos librerías no son compatibles, aunque FMX tiene muchas similitudes con la VCL. Y aunque Embarcadero insiste mucho en que ya es madura, si buscas en la propia comunidad Embarcadero o blogs, hay bastantes quejas de que aún tiene demasiados errores. También han dicho que no es un sustituto de la VCL, y que esta se seguirá manteniendo y ampliando.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Alguien Me Puede Ayudar bothy Varios 8 12-03-2010 17:27:24
¿Hay alguna función ya hecha para comprobar si un texto se puede convertir a número? noob Varios 7 05-12-2008 02:44:24
Alguien Me Puede Orientar? linuz Debates 72 20-12-2004 18:42:58
alguien me puede ayudar juziel Internet 2 14-09-2004 00:51:12
A ver, ¿alguien me puede explicar? Delphi Man .NET 1 28-05-2003 11:39:57


La franja horaria es GMT +2. Ahora son las 02:01:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi