Newsgroup: it.comp.software.newsreader
Titolo: [dialog] script GetMessageReference

Lo script fatto da  Alain Guerin permette di ricavare 
Message-ID, autore, email e ora dell'invio. (con alcune raffinatezze che
lo fanno scrivere a volte in inglese a volte in francese)
MLC ne ha fatto una versione semplificata con solo il message-id
Non è che da qualche parte ce ne sarebbe una versione che invece ricopia
anche il Subject?
(se poi riuscisse a togliere l'indirizzo dal From sarebbe il massimo)


From: cataldo VALLONE
Subject: [dialog] script GetMessageReference
Le scritte Message-ID, From e Subject le vuoi lasciare?
Va bene con gli a capo come sopra?
-- 
Maria Luisa C - 07/10/2004 21.46.37

 
di cataldo VALLONE  del 07 ottobre 2004 09:52:54 GMT
Per farlo stare su tre righe facendo sparire l'indirizzo (anche per
questioni di privacy) su una riga ci sta quasi sempre il nick e la data,
altra cosa il message cliccabile forse andava meglio comprensivo davanti
del news: per via degli utenti di OE (ed allora il "message-id" diventa
un termine non precisa meglio sarebbe "messaggio" 
direi che come hai fatto tu adesso va bene, aggiungendo la data e magari
spostando il subject nella prima riga (ma č questione di gusti) 
le scritte from si possono lasciare, ma forse andava bene anche col il
"di" davanti al nick e "del" davanti alla data  come aveva fatto Alain
;-)


di cataldo VALLONE del 07 Oct 2004 20:20:26 GMT
Comunque se c'č qualcosa da cambiare dillo, mi raccomando! 
Program SubjMIDFromDate;
uses Forms, StdCtrls;
const
  SubjectHeader = 'Subject: ';
  MessageIDHeader = 'Message-ID: ';
  FromHeader = 'From: ';
  DateHeader = 'Date: ';
var
 myForm: TForm;
 myMemo: TMemo;
 Subject, MessageID, FromDate: string;
 HeadersAreHidden: Boolean;
Procedure GetMessageBody (var LocmyMemo: tMemo);
begin
 LocmyMemo.Clear;
 ADo('ArticlePane');
 ADo('SelectAll');
 Ado('Copy');
 LocmyMemo.PasteFromClipboard;
end;
Function ExtractHeaderLine(HeaderTag: String; var LocmyMemo: tMemo): string;
var
 index : integer;
begin
 index := 0;
 Result := '';
 while (index < LocmyMemo.Lines.count-1) and (Result = '') do
 begin
  if Pos(HeaderTag,LocmyMemo.lines.Strings[index]) = 1 then
  begin
    Result := LocmyMemo.lines.Strings[index];
    if Result = HeaderTag then
    begin
     index := index+1;
     while (index < LocmyMemo.Lines.count-1)
     and (Pos(': ',LocmyMemo.lines.Strings[index])=0) do
     begin
      Result := Result + LocmyMemo.lines.Strings[index+1];
      index := index+1
     end //while
    end //if
  end
  else
    index := index+1;
 end; //while
end;
Function GetMessageId(var LocmyMemo: tMemo): string;
var temp: string;
begin
  temp := ExtractHeaderLine(MessageIDHeader, LocmyMemo);
  delete(temp, 1, length(MessageIDHeader)+1);
  Result := 'messaggio <News:'+copy(temp,1,Length(temp));
end;
Function GetSubject(var LocmyMemo: tMemo): string;
begin
  Result := ExtractHeaderLine(SubjectHeader, LocmyMemo);
  delete(Result, 1, length(SubjectHeader));
end;
Function GetFromDate(var LocmyMemo: tMemo): string;
var
 i: integer;
 temp1, temp2: string;
begin
  temp1 := ExtractHeaderLine(FromHeader, LocmyMemo);
  delete(temp1, 1, length(FromHeader));
  i := Pos('<', temp1);
  delete(temp1, i, length(temp1)-i+1);
  temp2 := ExtractHeaderLine(DateHeader, LocmyMemo);
  delete(temp2, 1, length(DateHeader)+5);
  Result := 'di '+temp1+'del '+temp2; 
end;
Function AreHeadersHidden(var LocmyMemo: tMemo): boolean;
var index: integer;
begin
 Result := true;
 if LocmyMemo.Lines.count > 10 then
 begin
  index := 0;
  while (index < LocmyMemo.Lines.count -1) and result do
  begin
    index := index+1;
    result := Pos('Newsgroups: ', LocmyMemo.Lines.strings[index])=0;
  end; //while
 end; //if
end;
Procedure BuildmyContainers;
begin
 myMemo := tMemo.Create(myForm);
 myMemo.Parent := myForm;
 myMemo.Width := Application.Mainform.width;
end;
Begin
   myForm := tForm.Create(nil);
   try
   BuildmyContainers;
   GetMessageBody(myMemo);
   HeadersAreHidden := AreHeadersHidden(myMemo);
   if HeadersAreHidden then ADo('ShowHeaders');
   GetMessageBody(myMemo);
   Subject := GetSubject(myMemo);
   MessageID := GetMessageID(myMemo);
   FromDate := GetFromDate(myMemo);
   myMemo.Clear;
   myMemo.Lines.Add(Subject);
   myMemo.Lines.Add(MessageId);
   myMemo.Lines.Add(FromDate);
   myMemo.SelectAll;
   myMemo.CopyToClipboard;
   IF HeadersAreHidden then Ado('ShowHeaders');
   beep;
   finally
   myform.free;
   end;
End.
-- 
Maria Luisa C - 08/10/2004 19.46.51