Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   HTML2Text - noch buggy? [Diskussion] (https://www.delphipraxis.net/53187-html2text-noch-buggy-%5Bdiskussion%5D.html)

Matze 13. Aug 2005 02:51


HTML2Text - noch buggy? [Diskussion]
 
Hmm, mei mir geht das überhaupt nicht. Speicher bitte mal eine Themenseite aus der DP und öffne diese mit deinem Programm. Evtl. liegt's an den Tables.

[edit=Chakotay1308]Diese Diskussion bezieht sich auf diesen Source. Mfg, Chakotay1308[/edit]

malo 13. Aug 2005 12:07

Re: HTML2Text - noch buggy?
 
Ein Fehler ist hier:

Delphi-Quellcode:
  if s = 'uml'   then Result := '¨';
Ich kann mir auch vorstellen, dass "¨" kein Char ist :mrgreen:

marabu 13. Aug 2005 12:13

Re: HTML2Text - noch buggy?
 
Hallo bigg,

den ersten Funktionstest solltest du vielleicht selbst machen. Da sind noch einige Fehler drin. So geht das bestimmt nicht:

Delphi-Quellcode:
if s = 'auml'  then Result := 'Ä';  // muss Auml sein
Grüße vom marabu

DGL-luke 13. Aug 2005 12:35

Re: HTML2Text - noch buggy?
 
am besten erstmal
Delphi-Quellcode:
s:=ansilowercase(s)
ganz an den anfang. auch vor die if's ein paar else würde die performance wohl ein wenig steigern.

und im übrigen weiss ich nicht, was die funktion bringen soll - Aus HTML text machen, das kann jeder Browser :stupid:

bigg 13. Aug 2005 13:37

Re: HTML2Text - noch buggy?
 
:hi:

@dgl-luke:
Um formatieren Quellcode importieren zu können ;-)

Delphi-Quellcode:
s:=ansilowercase(s)
Das benötige ich dort nicht, da s als LowerCase übergeben wird, aber das hat sich mit dem Posting von Marabu sowieso erledigt. :)

Ich ändere das noch.

Mit Unicode-Sonderzeichen kommt meine Funktion noch nicht zurecht.

Flocke 13. Aug 2005 13:43

Re: HTML2Text - noch buggy?
 
Zitat:

Zitat von bigg
Das benötige ich dort nicht, da s als LowerCase übergeben wird

1. Wie schon geschrieben, "Ä" und "ä" sind nicht dasselbe (großes und kleines ä), darum solltest du nicht mit LowerCase arbeiten.
2. Du könntest wahrscheinlich noch was an Performance herausholen, wenn du in deine riesige if-then-Abfrage jeweils mit "else" in die nächste Möglichkeit verzweigst.

bigg 13. Aug 2005 13:51

Re: HTML2Text - noch buggy?
 
@flocke
Sag ich ja :thumb:

bigg 13. Aug 2005 14:57

Re: HTML2Text - noch buggy?
 
moin,

jetzt sollte es löppen.
Ich bitte darum weiter zu testen :).

malo 13. Aug 2005 16:20

Re: HTML2Text - noch buggy?
 
Zitat:

Zitat von bigg
Ich bitte darum weiter zu testen :).

:gruebel: Wieso? Es wird ja Kritik ignoriert, wieso sollte man es da weiter testen? :roll:

bigg 13. Aug 2005 16:24

Re: HTML2Text - noch buggy?
 
moin malo,

was ignoriere ich :gruebel:
Ich habe doch Flockes und Marabu's- Kommentar befolgt.

marabu 13. Aug 2005 16:42

Re: HTML2Text - noch buggy?
 
Hi bigg,

immer wenn ein Quelltext monotone Passagen aufweist, wie deiner die endlose If-Strecke, dann macht es Sinn nach einer Alternative zu suchen. Für deinen Zweck wäre ein Dictionary eine gute Lösung und die StringList bietet dir über die Objects[] sogar noch die Lookup-Funktionalität.

Wenn du die vom W3 Consortium herausgegebene Liste der character entities für den Ansi-Bereich (#160 bis #255 und die 5 Metazeichen quot, amp, gt, lt und apos) in eine StringList einträgst,

Delphi-Quellcode:
sl.AddObject('quot', Pointer(34));
dann kannst du zumindest den Code für die Übersetzung der named entities deutlich übersichtlicher gestalten.

Freundliche Grüße vom marabu

PS: HTML2Text ist vielleicht etwas irreführend, denn es wird ja kein markup code in Text umgewandelt. Und vergiss nicht, dass character entities auch durch " oder & #34; repräsentiert werden können.

turboPASCAL 13. Aug 2005 16:50

Re: HTML2Text - noch buggy?
 
Zitat:

Zitat von bigg
Code:
  ...
  [b]if[/b] s = 'uml' [b]then[/b] Result := [color=#ff001f]'¨';[/color]
  [color=green]// if s = 'uml' then Result := '~';[/color]
  ...

Fehler vom DP - Parser ?!

bigg 13. Aug 2005 17:01

Re: HTML2Text - noch buggy?
 
@marabu:
Da gebe ich dir vollkommen recht, so könnte man die Liste durchlaufen und gegenfalls abbrechen,
sofern ein Sonderzeichen gefunden wurde.

@turbo:
Ja, ist ein Fehler des Parsers.

marabu 13. Aug 2005 17:06

Re: HTML2Text - noch buggy?
 
Bitte die Liste NICHT durchlaufen!

Delphi-Quellcode:
var
  slDict: TStringList;
  s: string;
  index: integer;
begin
  s := 'quot';
  slDict.AddObject(s, Pointer(34));
  index := slDict.IndexOfName(s);
  if index < 0
    then CheckForCodedEntity(s)
    else s := Chr(Integer(slDict.Objects[index]));
end;
marabu

PS: Du denkst bestimmt daran, dass du slDict.CaseSensitive auf true setzen musst, stimmts?

bigg 13. Aug 2005 20:27

Re: HTML2Text - noch buggy?
 
moin marabu,

Zitat:

PS: Du denkst bestimmt daran, dass du slDict.CaseSensitive auf true setzen musst, stimmts?
Ich denke nicht daran :mrgreen: Sollte ich etwa?
Und warum sollte ich es so, wie in deinem Beispiel machen?
Wo ist da der Vorteil gegenüber einer normalen Liste?

malo 13. Aug 2005 20:35

Re: HTML2Text - noch buggy?
 
Zitat:

Zitat von bigg
moin malo,

was ignoriere ich :gruebel:
Ich habe doch Flockes und Marabu's- Kommentar befolgt.

Ich meinte einmal, dass "uml;" als Rückgabewert der Funktion HTML2Char "&uml;" zurückgegeben hat. Dass es ein Fehler im DP-Parser war, wusste ich nicht. Trotzdem bist du darauf nicht eingegangen. Und auch der Ratschlag mit der Performence (hinter jedes if ein else) wurde (noch) nicht berücksichtigt.

Sorry, wenn ich etwas "hart" aufgetreten bin, aber mir ist halt aufgefallen, dass zu beiden Kritiken nichts geantwortet/getan wurde ;)

marabu 13. Aug 2005 20:45

Re: HTML2Text - noch buggy?
 
Zitat:

Zitat von bigg
Ich denke nicht daran - Sollte ich etwa?

"Auml" ist nicht "auml" - erinnerst du dich? Wenn du CaseSensitive nicht einschaltest, dann wird ab und zu der falsche Index ermittelt.

Zitat:

Zitat von bigg
Und warum sollte ich es so, wie in deinem Beispiel machen?

Meine Beiträge sind ein Angebot und kein Diktat - es tut mir sehr leid, wenn ich missverstanden werde.

marabu

Mystic 13. Aug 2005 21:30

Re: HTML2Text - noch buggy?
 
Es gibt auch die Form (das Beispiel hier steht für das Zeichen ) für Character Entities. Entities mit Zahlen bis 255 stehen für Zeichen aus dem ASCII-Zeichensatz, alles darüber für Zeichen aus dem Unicode-Zeichensatz.

edit: So wies aussieht hat escaped das Board hier die numerischen Entities nicht. :evil:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

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 by Thomas Breitkreuz