expertenaustausch > comm.software.* > comm.software.40tude-dialog

Thomas Barghahn (28.05.2020, 23:16)
Hallo zusammen,

da einige User hier schon mit den Hufen scharen und mit den Ohren
wackeln. ;-)

Beispiel einer Konfiguration für das Script
*"UTF7_to_UTF8_Converter.ds"*

*VOR DEM INSTALLIEREN DES CONVERTERS IST DAS KOMPLETTE VERZEICHNIS VON*
*DIALOG ZU SICHERN!*

Zunächst müssen *nur wenige Vorbereitungen* getroffen werden:

Herunterladen aller notwendigen Dateien! Dazu gehören:

Dialog_utf7_to_utf8_liesmich.txt (mit diesem Text)
Dialog_Functions.ds (Datei mit wichtigen Funktionen
für Dialog)
_i_OBSendM_UTF7_To_UTF8_Functions.ds (wichtige Funktionen für den
Converter)
_i_OBSendM_UTF7_to_UTF8_Converter.ds (der Converter selbst)

All diese Dateien befinden sich in einer 7-zip Datei mit den Namen:
_i_OBSendM_UTF7_to_UTF8_Converter.7z

Zum Download:


Die Dateien nun in ein beliebiges Verzeichnis entpacken und dann mit
dem Windows-Explorer oder z.B. mit dem TC in das Verzeichnis
"...\Dialog\Scripts\Custom\" kopieren.

---- Die erste Hürde wäre geschafft :-) ----

In Dialog unter Einstellungen --> Allgemeine Einstellungen -->
Zeichensätze --> Geeignetsten Zeichensatz nutzen aus (linkes
Fenster):
-------------
us-ascii
utf-7
iso-8859-1
iso-8859-15

-------------

so einstellen!

Wer weiterhin auch die iso-Zeichensätze nutzen möchte, der schiebt
utf-7 einfach nach ganz unten!

Wer nur noch mit utf-8 senden möchte, der nimmt obige Einstellung oder
verschiebt die iso-Zeichensätze ins rechte Fenster!
*ACHTUNG*!
Der Zeichensatz "_us-ascii_" *_muss_ immer ganz oben stehen*(!) und
auf der linken Seite *immer* erhalten bleiben!

Der Zeichensatz utf-8 sollte im linken Fenster gar nicht mehr
auftauchen oder immer ganz unten stehen.

Sinnvoll ist weiterhin, dass in Dialog unter Gruppe -->
Standardoptionen für Gruppen --> Zeichensätze --> Standard ist
Zeichensatz: [UTF-8] einstellt ist! LESEN kann Dialog ja UTF-8!

Als Schriftart empfehle ich "DejaVu Sans Mono UniCode". Das ist
allerdings kein Muss!

Nun in Dialog unter Einstellungen --> Scriptverwaltung -->
Scriptverwaltung... --> Ereignisscripte
das Program OnBeforeSendingmessage öffnen und nach dem folgenden
Muster bearbeiten.

// ANFANG PROGRAMM ONBEFORESENDINGMESSAGE ===========================

program OnBeforeSendingMessage;

//
// Date: 2020/05/27 (Corona-Zeit)
//

uses TextFile;

{$I Dialog_Functions.ds} // *Dialog_Functions.ds muss als erstes Include* in der Liste der Include-Files stehen
{$I _i_OBSendM_UTF7_To_UTF8_Functions.ds} // *muss immer als zweites Include* in der Liste stehen
{$I _i_OBSendM_UTF7_to_UTF8_Converter.ds} // der eigentliche Converter - in der Liste nach unten an beliebiger Position
{$I Andere_Include_Files ...}

Function OnBeforeSendingMessage( var Message : TStringlist;
const Servername : string;
const IsEmail : boolean
) : boolean;

var Error_Func : String; // Diese Variable ist nicht nur für den Converter
// sehr wichtig!

begin

// Your code goes here

Result := True;
Error_Func := ''; // Diese Zuweisung ist nicht nur für den Converter sehr wichtig!

// Result := Andere Funktionen
Result := Convert_UTF7_to_UTF8 (Result, Message, Error_Func); // *** die Converterfunktion muss immer am Ende stehen ***

end; // Function

// ------------------------------------------------------------------

begin
end. // Program

// ENDE PROGRAMM ONBEFORESENDINGMESSAGE =============================

*Jetzt wird nur noch dieses OnBeforeSendingMessage kompiliert*!
*FERTIG* ... und los gehts! :-)

Übrigens korrigiert dieser Konverter nun auch kaputte Subject-Header
eines Vorposters, denn Dialog selbst kodiert seine Header schon in der
Standard-Einstellung. :-)

Freundliche Grüße
Thomas Barghahn ?
Wolfgang Bauer (29.05.2020, 09:46)
*Thomas Barghahn* schrieb:

> Hallo zusammen,


> *Jetzt wird nur noch dieses OnBeforeSendingMessage kompiliert*!
> *FERTIG* ... und los gehts! :-)


Danke Thomas. Ich habe die neuen Scripte nach Custom kopiert und
OnBeforeSendingMessage kompiliert.

> Übrigens korrigiert dieser Konverter nun auch kaputte Subject-Header
> eines Vorposters, denn Dialog selbst kodiert seine Header schon in der
> Standard-Einstellung. :-)


Dann werde ich mich mal auf die Suche nach solch einem Posting machen.

Freundliche Grüße
Wolfgang
Emil Schuster (29.05.2020, 10:08)
Wolfgang Bauer wrote:
> *Thomas Barghahn* schrieb:
> > Übrigens korrigiert dieser Konverter nun auch kaputte Subject-Header
> > eines Vorposters, denn Dialog selbst kodiert seine Header schon in der
> > Standard-Einstellung. :-)

> Dann werde ich mich mal auf die Suche nach solch einem Posting machen. Nimm doch einfach eines von Dir :-)


<220520.161033.d.a.t.190>
Thomas Barghahn (29.05.2020, 11:13)
*Emil Schuster* meinte:
> Wolfgang Bauer wrote:
>> *Thomas Barghahn* schrieb:
>>> Übrigens korrigiert dieser Konverter nun auch kaputte Subject-Header
>>> eines Vorposters, denn Dialog selbst kodiert seine Header schon in der
>>> Standard-Einstellung. :-)


>> Dann werde ich mich mal auf die Suche nach solch einem Posting machen.


> Nimm doch einfach eines von Dir :-)


> <220520.161033.d.a.t.190>


Dank(!) für diesen Hinweis! :-) An jenem Beitrag sieht man sehr
deutlich, dass das "ü" schon *vor* dieser eingebauten Funktion bei
Wolfgang zerstört wurde!

Basismodul? SwissKnife? KN? Dinge also die Dialog einfach nicht braucht!

Freundliche Grüße
Thomas Barghahn ?
Thomas Barghahn (29.05.2020, 11:15)
*Emil Schuster* meinte:
> Wolfgang Bauer wrote:
>> *Thomas Barghahn* schrieb:
>>> Übrigens korrigiert dieser Konverter nun auch kaputte Subject-Header
>>> eines Vorposters, denn Dialog selbst kodiert seine Header schon in der
>>> Standard-Einstellung. :-)


>> Dann werde ich mich mal auf die Suche nach solch einem Posting machen.


> Nimm doch einfach eines von Dir :-)


> <220520.161033.d.a.t.190>


Dank(!) für diesen Hinweis! :-) An jenem Beitrag sieht man sehr
deutlich, dass das "ü" schon *vor* dieser eingebauten Funktion bei
Wolfgang zerstört wurde!

Basismodul? SwissKnife? KN? Dinge also, welche Dialog einfach nicht
braucht!

Freundliche Grüße
Thomas Barghahn ?
Wolfgang Bauer (29.05.2020, 11:33)
*Thomas Barghahn* schrieb:
> *Emil Schuster* meinte:
>> Wolfgang Bauer wrote:


>>> Dann werde ich mich mal auf die Suche nach solch einem Posting machen.


>> Nimm doch einfach eines von Dir :-)
>> <220520.161033.d.a.t.190>


> Dank(!) für diesen Hinweis! :-) An jenem Beitrag sieht man sehr
> deutlich, dass das "ü" schon *vor* dieser eingebauten Funktion bei
> Wolfgang zerstört wurde!


> Basismodul? SwissKnife? KN? Dinge also, welche Dialog einfach nicht
> braucht!


Und wie soll das geschehen sein? Ich bin hier in Dialog-pur ohne Hamster
und Korrnews.

program OnBeforeSavingMessage;
uses textfile, Forms, StdCtrls;

{$I Basis_Modul_Include}
{$I Swiss_Knife_OBSAV}

Procedure OnBeforeSavingMessage( Var Message : TStringlist;
Const Servername : String;
Const IsEmail : Boolean );
Begin

If Message.Count = 0 Then Exit;
If Not IsEmail Then SwissKnifeOBSAV( Message );

End;
Begin
End.

Freundliche Grüße
Wolfgang
Thomas Barghahn (29.05.2020, 11:34)
*Thomas 'Ingrid' Barghahn* meinte:
> *Emil Schuster* meinte:


>> Nimm doch einfach eines von Dir :-)
>> <220520.161033.d.a.t.190>


> Dank(!) für diesen Hinweis! :-) An jenem Beitrag sieht man sehr
> deutlich, dass das "ü" schon *vor* dieser eingebauten Funktion bei
> Wolfgang zerstört wurde!


> Basismodul? SwissKnife? KN? Dinge also, welche Dialog einfach nicht
> braucht!


Und was finde ich im Basismodul von Hippen? :-(

| Function BM_UTF_ENCODE(S:String):String;
| Begin
| S:= StringReplace(S, 'ü', BM_UTF8_UE_KLEIN, [rfReplaceAll]);
| S:= StringReplace(S, 'Ü', BM_UTF8_UE_GROSS, [rfReplaceAll]);
| S:= StringReplace(S, 'ö', BM_UTF8_OE_KLEIN, [rfReplaceAll]);
| S:= StringReplace(S, 'Ö', BM_UTF8_OE_GROSS, [rfReplaceAll]);
| S:= StringReplace(S, 'ä', BM_UTF8_AE_KLEIN, [rfReplaceAll]);
| S:= StringReplace(S, 'Ä', BM_UTF8_AE_GROSS, [rfReplaceAll]);
| S:= StringReplace(S, 'ß', BM_UTF8_SZETT, [rfReplaceAll]);
| Result := S;
| End;

Müll! :-(

Freundliche Grüße
Thomas Barghahn ?
Thomas Barghahn (29.05.2020, 21:36)
*Wolfgang 'Wolle' Bauer* meinte:
> *Thomas Barghahn* schrieb:


[...]

>> Basismodul? SwissKnife? KN? Dinge also, welche Dialog einfach nicht
>> braucht!


> Und wie soll das geschehen sein? Ich bin hier in Dialog-pur ohne Hamster
> und Korrnews.


> program OnBeforeSavingMessage;
> uses textfile, Forms, StdCtrls;


> {$I Basis_Modul_Include}
> {$I Swiss_Knife_OBSAV}


> Procedure OnBeforeSavingMessage( Var Message : TStringlist;
> Const Servername : String;
> Const IsEmail : Boolean );
> Begin


> If Message.Count = 0 Then Exit; // Wenn der Artikel keine Zeilen hat, dann ist hier Schluss (Exit) und das Programm wird abgebrochen!
> If Not IsEmail Then SwissKnifeOBSAV( Message );

// Wenn es *keine* E-Mail ist, dann rufe das Programm *SwissKnifeOBSAV* (und untersuche die gesamte Nachricht);
auf.
> End; // Ende der Funktion


--------------------

Dumm nur, dass die SwissKnife wieder auf das Basismodul zurückgreift,
welches - wie wir ja nun nach über *ZEHN JAHREN* wissen - absolute
Scheiße baut!

So einfach ist deine obige Frage zu beantworten! :-) *Geil wa*? ;-)

Freundliche Grüße
Thomas Barghahn ?
Ähnliche Themen