Forums Neueste Beiträge
 

[UPDATE] UnUsedHeaderCount_include

10/02/2009 - 15:36 von Hermann Hippen | Report spam
SUPERSEDE 15:35 - Nochmal optimiert - es geht jetzt noch etwas
schneller.

Moin Moin :-),

Nach dem jemand meinte, Dialog sei abgestürzt, weil es beim Holen
einer grösseren Zahl von Artikeln, mit UUHC dann doch 'etwas' dauerte,
wurden am Script einige Optimierungen vorgenommen die die Arbeits-
geschwindigkeit des Script's erhöhen (etwas Zeit braucht es immer noch)

Eine davon ist auch, dass das Sortieren der Liste nur dann stattfindet,
wenn man im Kopf des Script's Sortieren:=True setzt.

Man kann das Script ja eine Weile laufen lassen, und wenn man die Liste
auswerten möchte, setzt man Sortieren=True - nach dem nàchsten Pullen
ist die Liste sortiert.

Anmerkung:

Es ist sicher nicht besonders sinnvoll, UUHC im Dauereinsatz zu
betreiben. Nachdem das Script z.B. eine Woche lange gelaufen ist, ist
die Liste aussagekràftig genug um die Header auszuwàhlen, die man
entfernen lassen möchte um diese dann in Removeheaders_include
einzutragen.

Nach einer Woche wird sich an der Reihenfolge der Listeneintràge
nicht's oder nicht mehr viel àndern, ebenso werden keine oder sehr
wenige neue Header Namen hinzukommen.

Nach dem Abbonieren neuer Gruppen (UUHC vor dem ersten Pull einer neuen
Gruppe ausschalten!), kann man UUHC ja wieder zuschalten und eine Weile
mitlaufen lassen um zu sehen, was in den neuen Gruppen an 'kreativen'
Köpfen vorhanden ist.

Solange UUHC im Einsatz ist, sollte man, aus zeitlichen Gründen, auf den
Einsatz Removeheaders_include verzichten. Warum soll das Script auch
laufen, wenn UUHC erst eruiert, welche Header in Frage kommen könnten.

Aber hier nun das optimierte UUHC:

8<[ UnUsedHeaderCount_Include ]>8
// Stand 10.02.2009
Procedure UUHC_INI(Var Sortieren:Boolean;Var RFCHeader:TStringList; Var UUHCDATFILE:String);
Var DlgRootDir:String;
Begin
// True = Sortiert die Liste in der Datei
// False = Die Liste in der Datei wird nicht sortiert.
// empfohlene Einstellung, da nicht so zeitintensiv
// Will man die Liste mal sortiert ansehen, reicht es, wenn man dann
// Sortieren auf True setzt, nach dem nàchsten Pullen ist die Liste dann sortiert.
Sortieren := False;

//Hier die Header eingeben die NICHT gezàhlt werden sollen.
RFCHeader.CommaText: 'also-control:,alternate-recipient:,apparently-to:,approved:,article-names:,'
+ 'article-updates:,autoforwarded:,auto-forwarded:,bcc:,cc:,client:,comments:,'
+ 'content-base:,content-conversion:,content-description:,content-disposition:,'
+ 'content-id:,content-identifier:,content-language:,content-length:,'
+ 'content-location:,content-md5:,content-return:,content-sgml-entity:,'
+ 'content-transfer-encoding:,content-type:,control:,conversion:,conversion-with-loss:,'
+ 'date:,delivery:,delivery-date:,delivery-report:,discarded-x400-ipms-extensions:,'
+ 'discarded-x400-mts-extensions:,disclose-recipients:,disposition:,distribution:,'
+ 'dl-expansion-history:,dl-expansion-history-indication:,encoding:,errors-to:,expires:,'
+ 'expiry-date:,extension:,fax:,fcc:,followup-to:,for-comment:,for-handling:,forwarded:,'
+ 'from ,from:,generate-delivery-report:,history:,id:,identifier:,importance:,'
+ 'incomplete-copy:,information-types:,in-reply-to:,keywords:,language:,length:,lines:,'
+ 'mailer:,mail-system-version:,md5:,message-id:,message-type:,mime-version:,newsgroups:,'
+ 'newsreader:,obsoletes:,organisation:,organization:,original-encoded-information-types:,'
+ 'originating-client:,path:,phone:,precedence:,prevent-nondelivery-report:,priority:,'
+ 'received:,recipient:,references:,reply-by:,reply-to:,report:,resent-:,resent-bcc:,'
+ 'resent-cc:,resent-date:,resent-from:,resent-message-id:,resent-reply-to:,resent-return:,'
+ 'resent-to:,return-path:,return-receipt-to:,see-also:,sender:,sensitivity:,status:,'
+ 'subject:,summary:,supersedes:,telefax:,to:,transfer-encoding:,type:,version:,'
+ 'x400-content-return:,x400-content-return:,x-mailer:,x-newsreader:,xref:'

// Hier den Pfad zum Dialog-Programm Verzeichnis angeben:zur Datei UUHCDAT.TXT eingeben
DlgRootDir := 'E:\Programme\40tude Dialog\'

// ab hier nüscht mehr àndern
UUHCDATFILE := DlgRootDir + 'logs\UUHCDAT.TXT';
End;
Procedure UUHC(Var Message: TStringList);
Var RFCHeader,
UUHCDAT : TStringList;
UUHCDATFILE, tmp, hs : String;
i,j,s1,s2 : Integer;
Found, Sortieren : Boolean;
Begin
RFCHeader := TStringList.Create;
UUHCDAT := TStringList.Create;
UUHC_INI(Sortieren,RFCHeader,UUHCDATFILE);
Try
If FileExists(UUHCDATFILE) Then UUHCDAT.LoadFromFile(UUHCDATFILE);
i := 0;
Repeat
If Pos(': ',Message[I]) > 0 Then
Begin
hs := Copy(Message[i],1,Pos(': ',Message[i]));
If Pos(Lowercase(hs),RFCHeader.Text) > 0 Then Found:=True Else Found:=False;
If (Found = False) Then If (Message[i][1] >' ') Then If (Message[i][1] > Chr(9)) Then
Begin
tmp := Copy( Message[i], 1, Pos(':', Message[i]));
If UUHCDAT.Values[tmp] > ''
Then UUHCDAT.Values[tmp] := IntToStr(StrToInt(UUHCDAT.Values[tmp]) + 1)
Else UUHCDAT.Add(tmp + '=1');
End;
End;
I := I + 1;
Until Message[i] = '';
If Sortieren = True Then
Begin
For I:=0 to UUHCDAT.Count-1 Do
For J:=0 to i-1 Do
Begin
s1:=StrToInt(UUHCDAT.Values[UUHCDAT.Names[J]]);
s2:=StrToInt(UUHCDAT.Values[UUHCDAT.Names[J+1]]);
If s2 > s1 Then UUHCDAT.Exchange(j,j+1);
End;
End;
UUHCDAT.SaveToFile(UUHCDATFILE);
Except
RFCHeader.Free;
UUHCDAT.Free;
End;
End;
8<-->8

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

Lesen sie die antworten

#1 Wolfgang Bauer
10/02/2009 - 18:07 | Warnen spam
Servus Hermann.
Hermann Hippen wrote:

SUPERSEDE 15:35 - Nochmal optimiert - es geht jetzt noch etwas
schneller.



Habe ich übernommen und eingebaut.

Freundliche Grüße
Wolfgang
http://www.wolfgang-bauer.at
40tude-Dialog DER Newsreader unter Windows http://dialog.datalist.org/
Newsgruppe news:de.comm.software.40tude-dialog
40tude-Dialog Forum http://4ds.siteboard.eu/

Ähnliche fragen