[NEU] @Karl Heinz - Hold_include

12/11/2008 - 16:16 von Hermann Hippen | Report spam
Moin Moin :-),

Auf vielfachen Wunsch eines einzelnen Herrn wurde heute ein Script geboren
: -)

Wird ein Artikel supergesedet/ersetzt, löscht Dialog den Orginalartikel.
Leider gibt es keine Möglichkeit das, wenn gewünscht, zu unterbinden.

In diesem Script kann man im Kopf diejenigen Gruppen eintragen, in denen
man die Originalartikel auch behalten möchte.

Jede Gruppe ist durch eine seperate Add('Gruppenname'); Zeile einzutragen.

de.comm.software.40tude-dialog - Nur in dieser Gruppe
de.comm.software - in allen Gruppen die de.comm.software
enthalten.
de.comm - in allen Gruppen die de.comm beinhalten

etc. etc :-)

Wirkungsweise: Beim Empfang eines Artikels wird geprüft ob der Supersedes
Header vorhanden ist. Falls ja, wird geprüft ob es in der
Gruppe unerwünscht ist das der Original Artikel gelöscht
wird. Ist die Gruppe in der Liste, im INI Teil, eingetragen,
wird der Supersedes Header vor dem abspeichern entfernt, der
Originalartikel bleibt so erhalten.

Im Scriptarchiv unter 'Eigene Scripte' auf 'Datei->Neues Script' klicken.
Den Namen 'Hold_Include' eingeben. Im rechten Fenster den unten angehàngten
Code, unter Überschreibung des darin befindlichen Miniscripts, einfügen und
speichern.

Eingebunden wird das Script in OnBeforeSaving, was dann so àhnlich
aussieht:

| program OnBeforeSavingMessage;
| uses textfile, Forms, StdCtrls;
| $I Hold_include}

| Procedure OnBeforeSavingMessage( Var Message : TStringlist;
| Const Servername : String;
| Const IsEmail : Boolean );
| Begin
| Superseednichtloeschen( Message);
| End;
| Begin
| End.

nach dem àndern speichern, kompilieren und neu starten.


8<--[ Hold_include.ds ]->8
Procedure INIGroups(Var ini:TStringlist);
Begin
With ini do
Begin
// Hier die Gruppen eintragen in denen der Supersedes
// Header glöscht werden soll.
// Für jede Gruppe eine seperate Zeile in der Form:
// Add('Gruppenname'); eintragen.
Add('de.comm.software.40tude-dialog');
End;
End;
Procedure Superseednichtloeschen(Var Message: TStringList);
Var
I,J : Integer;
GR : TStringList;
Found : Boolean;
Begin
GR := TStringList.Create;
IniGroups(GR);
With Message Do
Begin
For I := 0 to Count-1 Do
Begin
If Pos('Newsgroups',Strings[I]) > 0 Then
Begin
For J:= 0 To GR.Count-1 Do
Begin
If Pos(GR.Strings[J],Strings[I]) > 0 Then
Begin
Found := True;
Break;
End;
End;
Break;
End;
End;
If Found = True Then
For I:= 0 to Count-1 Do
Begin
If Pos('Supersedes', Strings[i]) > 0 Then
Begin
Delete(i);
Break;
End;
End;
End;
GR.Free;
End;
8<->8

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

Lesen sie die antworten

#1 Harald Maedl
12/11/2008 - 18:25 | Warnen spam
Hallo Hermann,

Hermann Hippen schrieb:

Kleine Änderungsvoprschlàge, bevor man das Skript ganz allein "schnief"
in die große weite Welt schickt

8<--[ Hold_include.ds ]->8
Procedure INIGroups(Var ini:TStringlist);
Begin
With ini do
Begin
// Hier die Gruppen eintragen in denen der Supersedes
// Header glöscht werden soll.
// Für jede Gruppe eine seperate Zeile in der Form:
// Add('Gruppenname'); eintragen.
// Add('de.comm.software.40tude-dialog');
// Als Grundeinstellung würde ich keine Gruppe vorgeben
// bzw die nur als Kommentierung und Beispiel schreiben


End;
End;
//Procedure Superseednichtloeschen(Var Message: TStringList);
^^^^ mein ja nur;-)
Procedure Supersedenichtloeschen(Var Message: TStringList);



8<->8




Der Aufruf in OBSav muss dann natürlich lauten:

| Begin
| Supersedenichtloeschen( Message);

Cu,
Harald

Ähnliche fragen