[NEU] RefHeaderKuerzenFalten_include

21/02/2009 - 16:50 von Hermann Hippen | Report spam
Dieses Script vereint die beiden Scripte zum Falten des References
Header's und das zum Kürzen des References Header's. Die Ausführung ist,
im Gegensatz zu den beiden Einzelscripten, natürlich beschleunigt.

Im Kopf des Scriptes kann man einstellen ob gekürzt und/oder gefaltet
werden soll oder nicht, sowie die Anzahl der MID's, die maximal
angezeigt werden sollen.

So kann man nur Kürzen ohne zu falten, oder Kürzen mit falten, oder nur
falten :)

Das Minimum ist hier 4 damit die erste Mid und die letzten drei Mid's
erhalten bleiben.

| !Anmerkung: Die Scripte zum Falten des References Header's von DiDi und
| !mir, verursachten in bestimmten Fàllen, einen 'Out of string range'
| !Error, wie Reinhard I. bemerkte, wenn zum Beispiel vor dem Falten
| !Header per Script entfernt wurden und der References Header als letzter
| !Header Eintrag im Header stand.

In dieser erweiterten Fassung ist dieser Bug natürlich nicht mehr
vorhanden, auch nicht im Script auf K-H's Seite:
http://kh-rademacher.de/4d/FoldReferences.html Dort wurde der Bug, mit
gestrigem Update auch eleminiert.

Installation:

Code in den Zwischenspeicher kopieren, Scriptverwaltung öffnen und unter
'Eigene Scripte' mit 'Datei->Neues Script' eine neue Datei mit Namen
'RefHeaderKuerzenFalten_include' erstellen.
Wechseln in OnBeforeSavingMessage und dort die Include einbinden und den
Funktionsaufruf eintragen:

| Program OnBeforeSavingMessage;
| uses textfile, Forms, StdCtrls;


| {$I RefHeaderKuerzenFalten_include}




| Procedure OnBeforeSavingMessage( Var Message : TStringlist;
| Const Servername : String;
| Const IsEmail : Boolean );
| Begin
| If Message.Count = 0 Then Exit;


| If Not IsEMail Then Ref_Header_Kuerzen_Falten (Message) ; | End; | Begin




| End.

F9 drücken - fertig.

8<[ RefHeaderKuerzenFalten_include ]>8
// RefHeaderKuerzenFalten_include. Stand: 21.02.2009
Procedure RH_INI( Var Kuerzen,Falten:Boolean; Var Max:Integer);
Begin
// Soll der References Header gefaltet werden?
// True = Header wird gefaltet - False = Header wird nicht gefaltet
Falten := True;
// Soll Header gekürzt werden?
// Hinweis: Der Spenderstern wird beim Kuerzen des Ref Headers nicht
// mehr angezeigt, da der Header zur Bildung des Codes verwendet wird.
// True = Header wird gekürzt - False = header wird nicht gekürzt
Kuerzen := False;
// Hier die maximale Zahl der Ref Header angeben.
// Wirkt nur, wenn Kuerzen = Treu;
Max := 4; // MINIMAL 4 Header (Erster und die letzten Drei)
End;
Function CountRefHeader(Var rh: String):Integer;
Var i: Integer;
Begin
Result := 0;
For i := 1 to Length(rh) Do if rh[i]='>' Then Result := Result + 1;
End;
Procedure GetReferences (Var Message: TStringlist;Var posi:Integer; Var tmp:String);
Var i : Integer;
Begin
i := 0; tmp := '';
Repeat
If Pos('References:', Message[i]) = 1 Then
Begin
posi := i;
tmp := tmp + Message[i];
i := i + 1;
Repeat
If Pos('<',TrimLeft(Message[I])) = 1 Then
Begin
tmp := tmp+Message[i];
Message.Delete(i);
End Else Exit;
i := i + 1;
Until Message[i]='';
Exit;
End;
i := i + 1;
Until Message[i]='';
End;
Procedure Ref_Header_Kuerzen_Falten(Var Message:TStringlist);
Var Max,rhc,posi,i : Integer;
tmp,tmp1,tmp2 : String;
t : TStringlist;
Kuerzen,Falten : Boolean;
Begin
RH_INI(Kuerzen,Falten,Max); If Max < 4 Then Max := 4;
GetReferences(Message,posi,tmp); If tmp = '' Then Exit;
rhc := CountRefHeader(tmp);
t := TStringlist.Create;
i := rhc;
Repeat
tmp1 := Copy(tmp,0,Pos('>',tmp));
t.add(tmp1);
tmp := StringReplace(tmp, tmp1,'',[]);
i := i - 1;
Until i = -1;
tmp2 := '';
If (Kuerzen = True) and (rhc-max > 0) Then
Begin
If Falten = True
Then Begin
Message[posi] := t[0];
For i := 1 to max-1 do
Message.Insert(posi+1 , ' '+ TrimLeft(t[t.count-1-i]))
End
Else Begin
For i := Max downto 1 do tmp2 := tmp2 + t[t.count-i];
Message[posi] := t[0] + tmp2;
End;
End Else If Falten = True Then
Begin
Message[posi] := t[0];
For i := t.count-2 downto 1 do
Message.Insert(posi+1 , ' '+ TrimLeft(t[i]))
End;
t.free;
End;
8<->8

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

Lesen sie die antworten

#1 Reinhard Irmer
21/02/2009 - 19:15 | Warnen spam
Hallo *hipper Hermann*,

*_Hermann Hippen_* schrieb:
Dieses Script vereint die beiden Scripte zum Falten des References
Header's und das zum Kürzen des References Header's.



MID: <1053zv0jem1vl$ ist das schon wieder veraltet?

Die Ausführung ist,
im Gegensatz zu den beiden Einzelscripten, natürlich beschleunigt.
Im Kopf des Scriptes kann man einstellen ob gekürzt und/oder gefaltet
werden soll oder nicht, sowie die Anzahl der MID's, die maximal
angezeigt werden sollen.
So kann man nur Kürzen ohne zu falten, oder Kürzen mit falten, oder nur
falten :)


[...]

OBSave làßt sich leider nur kompilieren, wenn ich ein anderes include
rausschmeiße, denn:

Kompilieren fehlgeschlagen
[Error] PostShow_Include.ds(84:14): Duplicate identifier 'GETREFERENCES'

Nach dem Rausschmiß funktionierts prima... aber ich hàtte doch auch
ganz gern mein postshow_include weiterverwendet ;-(

Schau halt mal über meinen Exoten kommt per Mail.

Viele Gruesse
Reinhard

,--[ *Oh Du mein holder Abendstern* ]--.
[ ... leuchtest ueber ... ]
[ der Hamster-Spielwiese 1.25.2.0 ]
`--´

Ähnliche fragen