[UPDATE] @Karl-Heinz: Grüsse von der Putzkolonne :-)

10/11/2008 - 09:14 von Hermann Hippen | Report spam
Moin Moin :-),

http://kh-rademacher.de/4d/_include...ces-1.html

Im Script wurde die Function FR_RepeatChar komplett entfernt. Es handelt
sich um die Zeilen:

| Function FR_RepeatChar(
| C : Char;
| COUNT : Integer
| ) : String;
|
| Var
| i : Integer;
|
| Begin
| If COUNT < 0 Then COUNT := 0;
| SetLength(Result, COUNT);
| For i := 1 To COUNT Do Result[i] := C;
| End; // Function FR_RepeatChar
|
| // //

Diese Funktion FR_RepeatChar, ist in der Dialog Scriptsprache bereits in
zwei Varianten implementiert und muss nicht nachgebildet werden.

Da die Funktion aber im Script eigentlich ohnehin überflüssig ist, wurde
nicht der Funktionsaufruf geàndert sondern diese Zeilen:

| Case Spacer Of
| 1: Insert(i, Chr(9) + Copy(References, 1, Index));
| 2: Insert(i, ' ' + Copy(References, 1, Index));
| 3: Insert(i, FR_RepeatChar(' ', Length(REF_Header)) + Copy(References, 1, Index));
| End; // Case

durch diese:

| Insert(i, S[Spacer] + Copy(References, 1, Index));

ersetzt.

Anmerkung:
Da das Script ja ohnehin in OBSAVE verwendet werden soll, kann man diesen
Hinweis:

| // INFO: Diese Einstellung ist bei manchen Newsservern wirkungslos!
| // Gilt nur, wenn das Script in OBSendM verwendet wird!

eigentlich auch entfernen. Mach wie du denkst, hier hab ich den Hinweis mal
noch dringelassen.


Das geànderte Script:

8<--[ Code ]-->8
// ********************************************************************
// * FoldReferences 2.2.7 *
// ********************************************************************

// Autor: Korbinian Abenthum
// Datum: 2005/06/12

// Version 2

// Autor: Dietmar Vollmeier
// Datum: 2008/11/02

// --
// Mit diesem Script kannst du dir die References im Header
// übersichtlich aufgefaltet darstellen lassen.
// z.B.:
// References: <100307.140015.at.566.75.dlg@my-fqdn.de>
// <100307.140159.at.567.13.dlg@my-fqdn.de>
// <100307.140346.at.568.54.dlg@my-fqdn.de>
// Message-ID: <100307.140529.at.569.69.dlg@my-fqdn.de>
// ********************************************************************

Procedure Init_FoldReferences (
Var ChangeInEmails : Boolean;
Var REF_Pos : Integer;
Var Spacer : Integer
);

Begin
// --
// Anwenderspezifische Einstellungen
// --

// References in E-Mails àndern?
// Setze auf "True" um die References auch in E-Mails zu aufzufalten
// ChangeInEmails := False;
ChangeInEmails := True;

// Position der References
// INFO: Diese Einstellung ist bei manchen Newsservern wirkungslos!
// Gilt nur, wenn das Script in OBSendM verwendet wird!
// 0 = oberhalb der MID
// 1 = unterhalb der MID
// REF_Pos := 0;
REF_Pos := 0;

// Wie sollen die gefalteten Referenzen eingerückt werden
// 1 = ein Tabulatorzeichen
// 2 = ein Leerzeichen
// 3 = mit mehreren Leerzeichen bündig ausrichten
// Spacer := 1;
Spacer := 3;

// --
// Ende der Einstellungen
// --

End;

// //
// -- !!! Bitte ab hier nichts mehr àndern !!! -- //
// //
Procedure FoldReferences(Message : TStringlist; IsEmail : Boolean);
Var
MaxInt : Integer;
i, Index : Integer;
References : String;
MID_Header : String;
REF_Header : String;
S : Array[1..3] Of String;
ChangeInEmails : Boolean;
REF_Pos : Integer;
MID_Line : Integer;
Spacer : Integer;
Found_MID : Boolean;
Found_REF : Boolean;
Begin
Init_FoldReferences ( ChangeInEmails, REF_Pos, Spacer );

// Wenn E-Mail und keine Änderung in E-Mails erwünscht, dann Ende
If IsEmail And Not ChangeInEmails Then Exit;

MaxInt := 2147483647;
i := 1;
References := '';
MID_Header := 'Message-ID: ';
REF_Header := 'References: ';
Found_MID := False;
Found_REF := False;
S[1] := Chr(9);
S[2] := ' ';
S[3] := ' ';
// User-Eingabenkontrolle
If REF_Pos < 0 Then REF_Pos := 0;
If REF_Pos > 1 Then REF_Pos := 1;
If Spacer < 0 Then Spacer := 0;
If Spacer > 3 Then Spacer := 3;
With Message Do
Begin
// MID und References im Header suchen
While (Strings[i] <> '') Or
Not Found_MID And
Not Found_REF Do
Begin
// Message-ID
If AnsiPos(MID_Header, Strings[i]) > 0 Then
Begin
Found_MID := True;
MID_Line := i;
End;
// References
If AnsiPos(REF_Header, Strings[i]) > 0 Then
Begin
Found_REF := True;
Repeat
References := References + ' ' + Trim(Copy(Strings[i], AnsiPos('<', Strings[i]) - 1, MaxInt));
Delete(i);
Until (Strings[i][1] <> ' ' ) And
(Strings[i][1] <> Chr(9));
References := REF_Header + Trim(References);
End;
i := i + 1;
End; // While
// Wenn References gefunden wurden ...
If Found_REF Then
Begin
// ... werden diese im Header neu geschrieben
i := MID_Line + REF_Pos;
Index := AnsiPos('>', References);
Insert(i, Copy(References, 1, Index));
References := TrimLeft(Copy(References, Index + 2, MaxInt));
While References <> '' Do
Begin
i := i + 1;
Index := AnsiPos('>', References);
Insert(i, S[Spacer] + Copy(References, 1, Index));
References := TrimLeft(Copy(References, Index + 2, MaxInt));
End; // While
End // If (Found_REF)
End; // With (Message)
End; // Procedure FoldReferences
8<>8

Cu,
Hermann Hippen.
ž' š°º€ø?žžžžž?ø€º°š 'ž
ø€º° '<http://4ds.siteboard.eu>' °º€ø
'ž '40tude-Dialog Scriptwerkstatt' ž'
ø€º°' ž ž ø€º°ššššššš°º€øšž ž '°º€ø
 

Lesen sie die antworten

#1 Hermann Hippen
10/11/2008 - 09:31 | Warnen spam
Hermann »Ingrid« Hippen schrieb in d.c.s.4-d:

http://kh-rademacher.de/4d/_include...ces-1.html



Nachtrag:

| // References in E-Mails àndern?
| // Setze auf "True" um die References auch in E-Mails zu aufzufalten
^^^^^^^^^^^

Die Header werden doch durch das Script gefaltet und nicht aufgefaltet.

'auffalten' hieße ja: auseinanderfalten, entfalten aber das Script macht ja
genau das Gegenteil davon: Es faltet :-) *meinjanur*

Hab's zu spàt gesehen, sonst hàtte ich es gleich mitgeàndert.

Cu,
Hermann Hippen.
ž' š°º€ø?žžžžž?ø€º°š 'ž
ø€º° '<http://4ds.siteboard.eu>' °º€ø
'ž '40tude-Dialog Scriptwerkstatt' ž'
ø€º°' ž ž ø€º°ššššššš°º€øšž ž '°º€ø

Ähnliche fragen