Einzelnen Beitrag anzeigen

lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#1

Datei wird nicht gespeichert.

  Alt 30. Apr 2007, 19:20
Guten Abend Leute,

Vielleicht koennt Ihr mir weiterhelfen.
Ich moechte mir von einer Newsgroup eine Binaire Datei downloaden und auf meiner HD speichern.
Ich habe mir eine Globale Stringliste namens (sm) deklariert wo die Segments der Datei geadded werden.
Delphi-Quellcode:
xSegments := xItem.NamedItem['segments'];
  for j := 0 to xSegments.SubItemCount - 1 do
  begin
  sm.Add(xItem.NamedItem['segments'].SubItems[j].Text);
  end;
Jetzt wollte Ich durch folgenden Code die Segments mit NNTP1.GetBody aufrufen und auf der HD speichern, ich weiss aber nicht genau ob Ich da richtig liege.
Koennt Ihr mir vielleicht bitte helfen?
Als Decoder habe ich mir den yDecoder von Sourceforge geholt, muss Ich spaeter aber noch irgendwo einbauen.
Woll te erstmal die Datei so auf der HS speichern.
Delphi-Quellcode:
 
var
msgcount, i, J: integer;
MyTestFile: string;
begin
msgcount:=idnntp1.MsgCount;
    Memo1.Lines.Add( 'msgcount = ' + inttostr(msgcount) );
    IdMessage1.ClearBody;
    IdMessage1.MessageParts.Clear;
    IdMessage1.Clear;
    idmessage1.AttachmentTempDirectory := 'c:\temp\nzbtemp';
      try
      showmessage(sm.Text);
      idNNTP1.GetBody(sm.Strings[0], idMessage1); <-------- 1st segment: erh5mn$rv1$4@upload.eweka.nl
    except
    end;

    Memo1.Lines.Add( 'encoding = ' + idmessage1.AttachmentEncoding );
    Memo1.Lines.Add( 'type = ' + idmessage1.ContentType );
    Memo1.Lines.Add( 'transfer encoding = ' +
     idmessage1.ContentTransferEncoding );
    Memo1.Lines.Add( 'attachment count = ' +
    IntToStr(idmessage1.MessageParts.Count) );

     // dump the header
    if idmessage1.Headers.Count > 0 then
      for i:=0 to idmessage1.Headers.Count-1 do
        Memo1.Lines.Add(idmessage1.Headers.Strings[i]);

     // loop for attachments
     for J := 0 to Pred( IdMessage1.MessageParts.Count ) do
     begin
       if ( IdMessage1.MessageParts.Items[ J ] is TIdAttachment) then
       begin
         Memo1.Lines.Add( '** ATTACHMENT # ' + IntToStr(J) );
         Memo1.Lines.Add( 'filename = ' +
          TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).Filename );
         Memo1.Lines.Add( 'charset = ' +
          TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).CharSet );
         Memo1.Lines.Add( 'type name = ' +
          TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).ContentTypeName );
         Memo1.Lines.Add( 'descr = ' +
          TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).ContentDescription );
         Memo1.Lines.Add( 'content id = ' +
          TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).ContentID );


         Memo1.Lines.Add( 'id = ' +
          IntToStr(TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).ID) );
         Memo1.Lines.Add( 'index = ' +
          IntToStr(TIdAttachment(IdMessage1.MessageParts.Items[ J ] ).Index) );


         MyTestFile := TIdAttachment(IdMessage1.MessageParts.Items[
          J ] ).Filename;
          showmessage(MyTestFile);
          exit; <--------------------------- hier rausgehen vor Exception: could not save attachment.
         if fileexists(MyTestFile) then deletefile(MyTestFile);
         TIdAttachment(IdMessage1.MessageParts.Items[
          J ] ).SaveToFile(MyTestFile) ; <---------------------------------------- hier wird gesaved.
       end;
     end;

  //end; // connected

  // disconnect
  try
    IdNNTP1.Disconnect;
  except
  end;

  Memo1.Lines.Add('end.');

end;
Schonmal Danke im voraus.

Gruss Lucius.
  Mit Zitat antworten Zitat