Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klartext -> ANSI -> Klartext (https://www.delphipraxis.net/73758-klartext-ansi-klartext.html)

cruso 23. Jul 2006 17:49


Klartext -> ANSI -> Klartext
 
Hi!

Ich möchte einen Text nach ANSI konvertieren und so anpassen, dass ich diesen einfach in HTML benutzen kann. Ich hab das so gelöst (funktioniert auch teilweise):

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s:String; i:Integer;
begin
s:=Edit1.Text;
Memo1.Text:=s;
For i:=0 to 255 do begin
Memo1.text := StringReplace(Memo1.text, chr(i), '&#'+IntToStr(i)+';',[rfReplaceAll]);
end;
end;

Die Problemkinder sind die Zeichen: & # ;

Wenn man es im HTML-Dokument nachher wieder "zurückübersetzt" sieht merkt man das etwas nicht ganz funktioniert hat.


Wisst ihr, wie man das Problem lösen kann?



MfG
Cruso

mkinzler 23. Jul 2006 17:52

Re: Klartext -> Unicode -> Klartext
 
Abgeseh, das ich nicht weiß was du eigentlich vorhast, könntest du die Problemzeichen zuerst konvertieren.

cruso 23. Jul 2006 17:54

Re: Klartext -> ANSI -> Klartext
 
Und wie bekomme ich die Problemzeichen aus meiner For-Schleife raus?

cruso 23. Jul 2006 17:58

Re: Klartext -> ANSI -> Klartext
 
Ich hab das jetzt so gemacht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s:String; i:Integer;
begin
s:=Edit1.Text;
Memo1.Text:=s;
For i:=0 to 255 do begin
if not (i=35) or (i=38) or (i=59) then
Memo1.text := StringReplace(Memo1.text, chr(i), '&#'+IntToStr(i)+';',[rfReplaceAll]);
end;
end;
Allerdings funktioniert das ganze immernoch nicht.

Dax 23. Jul 2006 18:00

Re: Klartext -> ANSI -> Klartext
 
Delphi-Quellcode:
not (i=35) or (i=38) or (i=59)
//wird zu
not ((i=35) or (i=38) or (i=59))

mkinzler 23. Jul 2006 18:00

Re: Klartext -> ANSI -> Klartext
 
Die Zeichen haben den Code 23, 26, 38

Martin K 23. Jul 2006 18:02

Re: Klartext -> ANSI -> Klartext
 
Warum verwendest Du ein Integer als Zählvariable?
Das sind nur unnötige IntToStr-Unwandlungen die Resourcen fressen.

Mein Vorschalg:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: Char;
begin
  Memo1.Text := Edit1.Text;
  For i := Low(Char) to High(Char) do
    if not (i in [#35, #38, #59]) then
      Memo1.Text := StringReplace(Memo1.Text, i, '&#'+IntToStr(Ord(i))+';',[rfReplaceAll]);
end;
//Edit:
Fehler korrigiert:
Eine IntToStr-Umwandlung brauch man doch - aber ich find's trotzdem so übersichtlicher.
Und wozu die zusätzliche String-Variable ist, ist mir auch unklar.

Dax 23. Jul 2006 18:05

Re: Klartext -> ANSI -> Klartext
 
Zitat:

Zitat von mkinzler
Die Zeichen haben den Code 23, 26, 38

Nein, es sind 35, 38 und 59.

Zitat:

Zitat von Martin K
Mein Vorschalg:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: Char;
begin
  Memo1.Text := Edit1.Text;
  For i := Low(Char) to High(Char) do
    if not (i in [#35, #38, #59]) then
      Memo1.Text := StringReplace(Memo1.Text, i, '&#'+Ord(i)+';',[rfReplaceAll]);
end;

Ord(i) == Byte(i) - ;)

cruso 23. Jul 2006 18:11

Re: Klartext -> ANSI -> Klartext
 
Ich hab jetzt alles einmal ausprobiert, doch die Fehler schleichen sich bei allen Methoden ein.

mkinzler 23. Jul 2006 18:12

Re: Klartext -> ANSI -> Klartext
 
Zitat:

mkinzler hat folgendes geschrieben:
Die Zeichen haben den Code 23, 26, 38
Nein, es sind 35, 38 und 59.
hab ausversehen die Hex-Werte gepostet.


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