Mit den Indys kann man doch auch Daten ?ber NNTP ?bertragen, sprich auf Usenet Server zugreifen etc. Ich komm jedoch nicht ganz mit den Komponenten zurecht. Kann da mal einer bisschen erkl?ren wie ich Dateien poste. Oder bzw. wie ich erstmal eine funktionierende Verbindung aufbaue. Ich versuch erst mal nen Server selbst auf dem PC laufen zu lassen, jedoch klappt das Connecten dadrauf auch nicht ganz.
Bisschen Code hab ich mal zusammengesucht:
Verbinden:
Das bekommt er schon nicht hin, ich hab mich mal zu dem Borlandserver da verbinden lassen, doch das ganze Programm bleibt dann h?ngen. Ich hab eingestellt, dass er die Aktion, die er gerade ausf?hrt in ein Memo reinschreibt. Da kommt dann 3 mal Status sonst nichts...
Und ja, den Rest kann ich erst ausprobieren wenn das oben l?uft. Zuerst sollte ich aber man wissen, was z.B. li f?r eine Variable ist. Und wie ich IdMessage f?llen kann und mit was ich die f?llen muss.
Liste aller Newsgroups abrufen:
NewsList := TStringList.Create; try {Newsgroup-Liste abrufen} IdNNTP1.GetNewsgroupList(NewsList); {Nnewsgroups analysieren} idx := 0; while idx < NewsList.Count do begin li := lvNewsGroups.Items.Add; ParseNewsGroup( NewsList[idx],NewsGroup,Hi,Lo, Stat); {Name der Newsgroup} li.Caption := Newsgroup; {Artikel, die sch?tzungsweise in der Newsgroup sind} {falls lo gr??er ist als Hi, haben wir keine Artikel} if (Lo >= Hi) then li.SubItems.Add('None') else li.SubItems.Add(IntToStr(Hi - Lo)); {Newsgroup-Status} {Das sollte nie nil sein, aber wir pr?fen es besser} if Length(LowerCase(Stat[1])) > 0 then case Stat[1] of 'y' : li.SubItems.Add('Permitted'); 'n' : li.SubItems.Add('Read-Only'); 'm' : li.SubItems.Add('Moderated'); end; Inc (idx); end; finally NewsList.Free; end;
Alle News einer Newsgroup als Liste anzeigen:
strs := TStringList.Create; try IdNNTP1.SelectGroup(lvNewsGroups.Selected.Caption); lvArticles.Items.Clear; {Get article information from Lowest to Highest articles} IdNNTP1.SendXOVER(IntToStr(IdNNTP1.MsgLow)+'-'+ IntToStr(IdNNTP1.MsgHigh),strs); lvArticles.Items.BeginUpdate; try lvArticles.Items.Clear; idx := 0; while idx < Strs.Count do begin ParseXOVERItem ( Strs [ idx ] ); Inc (idx); end; finally lvArticles.Items.EndUpdate; end; finally FreeAndNil(strs); end;
Kompletten Artikel anzeigen:
Aritkel posten:
Edit: Hab hier mal mein ganzes Projekt auf Rapidshare hochgeladen, wurde mit RAD Studio 2007 erstellt: http://rapidshare.com/files/176052938/NNTP.rar