Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inkompatible Typen: TWebbrowser und TCaptionl (https://www.delphipraxis.net/157528-inkompatible-typen-twebbrowser-und-tcaptionl.html)

roland0 14. Jan 2011 22:11

Inkompatible Typen: TWebbrowser und TCaptionl
 
Hallo zusammen,

Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
   Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;
In der Procedurebezeichnung steht, HTMLCode: string;
Wenn ich aber jetzt dieser Variable einen String zuweise, z.B. memo1.text,
bekomme ich die Meldung: Inkompatible Typen: TWebbrowser und TCaption.
Was muss ich tun damit der Webbrowser meinen Text anzeigt?
Der Text kommt übrigens aus einer E-Mail dessen Text mit HTML-Code in einem Memo angezeigt wird.

Für Tipps, Tricks und Hilfe bedanke ich m ich

LG

himitsu 14. Jan 2011 22:42

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Zitat:

Zitat von roland0 (Beitrag 1074801)
Wenn ich aber jetzt dieser Variable einen String zuweise, z.B. memo1.text,
bekomme ich die Meldung: Inkompatible Typen: TWebbrowser und TCaption.

Wie sieht denn dein Prozeduraufruf aus?
(ich würde fast drauf tippen, daß du vergessen hast den ersten Parameter mit anzugeben)

http://www.delphipraxis.net/30799-st...ser-laden.html

rollstuhlfahrer 14. Jan 2011 22:45

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Bist du dir auch wirklich sicher, dass der Fehler in deinem Code-Abschnitt auftritt? - Wenn ja, dann gib uns doch mal die Zeile. Laut meiner Analyse sollte in deinem Code-Abschnitt ein Typ namens TCaption überhaupt nicht vorkommen.

Bernhard

himitsu 14. Jan 2011 22:48

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
@Rollstuhlfahrer:
Delphi-Referenz durchsuchenTMemo.Text = Delphi-Referenz durchsuchenTCaption

siehe http://docwiki.embarcadero.com/VCL/d....TControl.Text

roland0 14. Jan 2011 22:55

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Der erste Parameter TForm steht vorne an.

Der Fehler tritt auf wenn ich die Procedure in einer anderen aufrufe. Dafür ist sie gedacht.
Aufruf:

form.WB_LoadHTML(Memo1.Text); Hier tritt der Fehler beim Compilieren auf.

rollstuhlfahrer 14. Jan 2011 23:07

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
@himitsu: Ich hatte gedacht, dass wenigstens der Aufruf stimmt. Außerdem ist in dem angegebenen Codeschnipsel wirklich kein Memo.Text, sondern erst im Text danach.

Aber meine andere Vermutung scheint wohl doch zu stimmen: Als ersten Parameter will die Prozedur einen TWebbrowser haben. Dann erst das, was da rein soll. Du übergibst mit deinem "WB_LoadHTML(Memo1.Text);" gerade mal den Inhalt. Das heißt, du übergibst gar nicht den Webbrowser in den der Inhalt rein soll.

Bernhard

Thom 14. Jan 2011 23:08

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Zitat:

Zitat von roland0 (Beitrag 1074805)
form.WB_LoadHTML(Memo1.Text); Hier tritt der Fehler beim Compilieren auf.

Logisch: Der erste Parameter ist TWebBrowser, der zweite ein String!

Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
//...
P.S.: Ups - zu spät... :roll:

roland0 14. Jan 2011 23:13

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Ich habe vorhin den gesamten Quellcode der Procedure, an die Stelle gesetzt an der der Text der E-Mail in das Memo geschrieben wird.

Delphi-Quellcode:
     for intIndex := 0 to Pred(Msg.MessageParts.Count) do
      begin
         if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then
            begin //general attachment
               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
               li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
            end
         else
            begin //body text
               if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                   WebBrowser.Navigate('about:blank');
                    while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
                     Application.ProcessMessages;

                     if Assigned(WebBrowser.Document) then
                      begin
                       sl := TStringList.Create;
                        try
                          ms := TMemoryStream.Create;
                          try
                            sl.Text := TIdText(Msg.MessageParts.Items[intIndex]).Body.Text);
                            sl.SaveToStream(ms);
                            ms.Seek(0, 0);
                            (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
                          finally
                           ms.Free;
                          end;
                        finally
                          sl.Free;
                        end;
                      end;
Die Übergabe klappt ohne Probleme.
Ich glaube, dass ich es erst mal so lasse.
Allerdings müßte ich die Procedure dann noch mal schreiben(kopieren), wenn die Mail aus der Datenbank aufgerufen wird. Das wollte ich verhindern.
LG

rollstuhlfahrer 14. Jan 2011 23:30

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
ja, es reicht ja, wenn du der Prozedur noch deinen TWebbrowser übergibst. Dass du die Parameter gleich benennst, heißt nicht, dass sich der Compiler den auch sofort holt. Der Compiler denkt nicht, er macht nur das, was du ihm versuchst mitzuteilen.

Bernhard

Thom 14. Jan 2011 23:38

AW: Inkompatible Typen: TWebbrowser und TCaptionl
 
Zitat:

Zitat von roland0 (Beitrag 1074805)
form.WB_LoadHTML(Memo1.Text); Hier tritt der Fehler beim Compilieren auf.

Zitat:

Zitat von roland0 (Beitrag 1074810)
Die Übergabe klappt ohne Probleme.

Wenn man dir helfen soll, wäre es schön, wenn du nicht jedes mal etwas anderes schreiben würdest - ansonsten wird die Sache irgendwie... Sinnlos!? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz