Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   HTML-Quellcode in TMemo anzeigen (https://www.delphipraxis.net/195341-html-quellcode-tmemo-anzeigen.html)

PitterS80 20. Feb 2018 21:03

HTML-Quellcode in TMemo anzeigen
 
Hallo Gemeinde!

Ich habe folgendes Problem:
Aus Outlook exportiere ich bestimmte Emails als HTML in ein Verzeichnis.
Mein Programm soll zyklisch das Verzeichnis auf neue Dateien prüfen und, falls eine neue Mail gespeichert wurde, den Quelltext der HTML-Datei in ein Memo laden. Im weiteren Verlauf sollen diverse Schlüsselworte gesucht und ausgewertet werden.

Aktuell scheitere ich aber schon am Laden der Datei:
Im Memo wird nur "ÿþ<" angezeigt. Mit einem normalen Texteditor sehe ich aber den kompletten Quelltext.

Hat einer von Euch da eine Idee?
Hab schon die Forensuche sowie Google bemüht und alle Vorschläge ausprobiert, aber nichts fruchtet.

Zur Info: Ich arbeite noch mit Delphi 6.

Gruß Pitter

sakura 20. Feb 2018 21:21

AW: HTML-Quellcode in TMemo anzeigen
 
Delphi 6 unterstützt von Haus aus noch kein Unicode, aber Outlook speichert als Unicode. Von daher suche hier mal danach, wie Du Unicode-Text Dateien laden kannst und dann darstellen kannst.

...:cat:...

Dennis07 21. Feb 2018 01:03

AW: HTML-Quellcode in TMemo anzeigen
 
Also entweder du speicherst die Datei im Ansi-Format, oder du besorgst dir Unicode-Componenten.

Darf ich fragen, welche Edition von Delphi 6 du derzeit verwendest? Generell würde ich dir davon abraten, Delphi 6 weiterhin zu verwenden. Ich empfehle dir, auf die kostenlose Starter von Delphi 10.2.2 upzugraden. Das ist in nahezu jeder Hinsicht um Längen besser als Delphi 6. Selbt, wenn du nicht die Personal Edition sondern eine höhere zur Zeit benutzt.
Wenn du das nicht willst, kannst du im Notfall auch Lazarus verwenden. Kann zwar nicht im entferntesten mithalten, aber für die Sachen, die du (so denke ich) machen willst, ist es auch vollkommen ausreichend.
Wenn du dennoch bei D6 bleiben willst, dann kannst du dir hier die TNT Unicode Controls herunterladen. Bedenke aber immer: All das ist schon asbach, solltest du also nur noch in privaten "Testprojekten" verwenden, nicht aber in Anwendungen die laufen müssen.

Für das auswerden der HTML-Datei musst du dann einen Parser schreiben, oder du verwendest THtmlDocument von LinaComponents (Offiziell ab D7, sollte aber auch auf D6 laufen). Einzige Einschränkung hier: Kurze Tags werden nicht unterstützt.

CCRDude 21. Feb 2018 09:16

AW: HTML-Quellcode in TMemo anzeigen
 
Ohne das in einen Glaubenskrieg verwandeln zu wollen: Lazarus ist nicht bloß ein Notnagel. Ich bin vor etlichen Jahren umgestiegen, mit mehreren riesigen Projekten, und bin bis heute jedesmal, wenn ich aus Legacy-Gründen nochmal Delphi XE anfassen muss, glücklich über diese Entscheidung. Nicht nur die (für mich) bessere IDE, auch Fehler, die i.d.R. in weniger als einer Woche behoben werden, wo sie bei Delphi im QC etliche Jahre und Major Releases unbehoben blieben.

Die Post-XE-Releases von Delphi habe ich aber zugegeben nie länger als ein paar Tage angeschaut.

Jetzt aber zur Sache :D

@Dennis07: THtmlDocument würde das aber interpretiert anzeigen, der OP will aber den Quelltext anzeigen lassen-

Um HTML-Quelltext anzuzeigen, würde ich zu SynEdit greifen. Ist eine Editor-Komponente, die Grundlage für Lazarus geworden ist, aber ihre Wurzeln meine ich sogar bei Delphi hat, und bei Existenz der erwähnten TNT-Controls auch noch ein D6-Package hat. Aus dem einfachen Grund, das TSynEdit einen Highlighter für HTML mitbringt (ggfls. sogar code folding, was bei einer HTML-Ansicht ja auch praktisch ist).

himitsu 21. Feb 2018 10:11

AW: HTML-Quellcode in TMemo anzeigen
 
Zitat:

Zitat von sakura (Beitrag 1394302)
Delphi 6 unterstützt von Haus aus noch kein Unicode, aber Outlook speichert als Unicode. Von daher suche hier mal danach, wie Du Unicode-Text Dateien laden kannst und dann darstellen kannst.

...:cat:...

http://www.delphipraxis.net/141895-t...phi-other.html
oder direkt Bei Google suchenTNT Unicode Controls, aber http://www.delphipraxis.net/89227-tn...-freeware.html

HolgerX 21. Feb 2018 20:50

AW: HTML-Quellcode in TMemo anzeigen
 
Hmm..

Quick and Dirty:

Delphi-Quellcode:
function LoadUTF16ToAnsiString(AFileName: string): AnsiString;
var
  tmpFile : TFileStream;
  tmpBOM : WideChar;
  tmpsize : Int64;
  tmpWide : WideString;
  i : integer;
begin
  result := '';
  tmpFile := TFileStream.Create(AFileName,fmOpenRead or fmShareDenyNone);
  try
    if tmpFile.Read(tmpBOM, sizeof(tmpBOM)) = sizeof(tmpBOM) then begin
      if ((tmpBOM = Widechar($FEFF)) or (tmpBOM = Widechar($FFFE))) then begin
        tmpsize := (tmpFile.size -2) Div SizeOf(tmpWide[1]);
        setlength(tmpWide,tmpsize +1);
        tmpWide[tmpsize +1] := #0;
        tmpFile.Read(tmpWide[1],tmpSize * SizeOf(tmpWide[1]));
        if tmpBOM = Widechar($FFFE) then
          for i := 1 to length(tmpWide) do tmpWide[i] := WideChar(Swap(Ord(tmpWide[i])));

        result := tmpWide;
      end else begin
        tmpFile.Position := 0;
        setlength(result,tmpFile.size);
        tmpFile.Read(result[1],tmpFile.size);
      end;
    end else begin
      tmpFile.Position := 0;
      setlength(result,tmpFile.size);
      tmpFile.Read(result[1],tmpFile.size);
    end;
  finally
    tmpFile.Free;
  end;
end;
Wie geschrieben Quick and Dirty..
Funktioniert aber nur zufriedenstellend, wenn in der Datei nur Zeichen aus dem ANIS-Bereich verwendet werden.
Sollten dort Unicode/Sonderzeichen enthalten gewesen sein, dürften diese damit weg sein ;)

PitterS80 9. Mär 2018 18:38

AW: HTML-Quellcode in TMemo anzeigen
 
Vielen Dank für Eure Hilfe! Habs über die UTF16-Funktion hinbekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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