Newsgroup: it.comp.lang.delphi
Titolo: tidattachment e savetofile

Ciao a tutti, utilizzo Delphi7 su winxp.
Ho un oggetto tidattachment che contiene un file pdf.
Invoco il metodo savetofile passando come argomento il nome del file che 
ho costruito (path + nome). Il salvataggio mi restituisce un eccezione; 
tramite getlasterror ho trovato che il messaggio di errore � 
"impossibile trovare il percorso specificato". Il file di destinazione 
non esiste (� proprio quello che voglio salvare e non ci sono altri file 
con lo stesso nome nello stesso percorso).
Qualcuno ha qualche suggerimento?
Grazie.
Buona giornata a tutti.
 
Alex Pileci

 [...]
 
Ciao... e bentornato! :)
 
Prova a postare il pezzo di codice che hai scritto come riferimento, o a riprodurre eventualmente il problema in un progetto separato... magari c'è una svista che può saltare all'occhio subito.
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

 non esiste
 
 
Hai messo un  try..except in modo da farti scrivere in un log la stringa path+nomefile che il sistema sta tentando di usare?
Mi sa di no....
 
A.


 
for I := 0 to Pred(FEnclosedMessage.MessageParts.Count) do begin
   try
     if FEnclosedMessage.MessageParts.Items[I] is TIdAttachment
       then begin
         AFileExt := LowerCase(ExtractFileExt(TIdAttachment(
           FEnclosedMessage.MessageParts.Items[I]).FileName));
         if AFileExt = '.pdf' then begin
           if TIdAttachment(MailMessage.MessageParts.Items[I]).
             SaveToFile(Pratica.PercorsoAllegati + TIdAttachment(
               FEnclosedMessage.MessageParts.Items[I]).FileName)
               then begin
                 AddMessage(Format(SavedAttachment,
                   [TIdAttachment(FEnclosedMessage.
                   MessageParts.Items[I]).FileName,
                   Pratica.PercorsoAllegati]));
           end;
         end;
       end;
   except
     AddError(Format(ErrorSavingAttachment,
       [SysErrorMessage(GetLastError),
       TIdAttachment(FEnclosedMessage.MessageParts.Items[I]).FileName,
       Pratica.PercorsoAllegati]));
   end;
end;
 
@Alberto: il trace del nome del file c'è: le funzioni addmessage e
adderror semplicemente scrivono la stringa formaattata in una
tstringlist che funge da log.
 
La cosa particolare è che FEnclosedMessage (di classe tidattachment)
viene caricato da un file temporaneo con LoadFromFile. Non ho idea se
sia questo l'origine del problema.
Saluti.
 
Alex Pileci.
 
 

    except
 
         ON E:EXCEPTION DO
         BEGIN
           ADDERROR(E.CLASSNAME + ' ' + E.MESSAGE + ' ' +DestinationFilename);
         END;
    END;
 

Scritto troppo di fretta:
 
var
  i: integer;
  CurrentAttachment: TIdAttachment;
  CurrentFileName: string;
  DestinationFileName: string;
  Saved: boolean;
  AExt: string;
begin
 
   for I := 0 to Pred(FEnclosedMessage.MessageParts.Count) do
   begin
   try
     if FEnclosedMessage.MessageParts.Items[I] is TIdAttachment then
     begin
       CurrentAttachment := TIdAttachment(FEnclosedMessage.MessageParts.Items[I]);
 
       CurrentFileName :=  CurrentAttachment.FileName;
 
       AFileExt := LowerCase(ExtractFileExt(CurrentFileName));
 
       if AFileExt = '.pdf' then
       begin
         DestinationFileName := Pratica.PercorsoAllegati + CurrentFilName;
         Saved := CurrentAttachment.SaveToFile(DestinationFileName);
         if (Saved) then
         begin
 
           AddMessage(Format(SavedAttachment, [CurrentFileName, DestinationFileName]));
 
         end;
       end;
 
   except
     on E:Exception do
     begin
       AddError(E.ClassName + ' ' + E.Message + ' ' + DestinationFileName);
     end;
   end;
end;
 
..ma non è che alla fine di Pratica.PercorsoAllegati manca un carattere "\"??
 
A.


 
Ciao, ho risolto tutto. Il problema era in un riferimento ad un oggetto 
sbagliato (sempre di classe tidattachment). Alla fine di 
Pratica.PercorsoAllegati il carattere "\" c'era, ma l'errore era altrove.
Grazie a tutti.
 
Buona giornata e buon lavoro.
 
Alex Pileci.