Strona 1 z 1

TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 13:26
przez cezarrek
Cześć wszystkim!
Mam kłopot z dodaniem załącznika za pomocą komponentu OpenDialog.
Gdy podaję docelową ścieżkę do pliku, plik zostaje wysłany. Jeżeli jednak
użyję komponentu OpenDialog Nie wysyła pliku i nawet wiadomości tekstowej,
a po za tym dodatkowo wyświetla mi informacje że funkcja 'idAttach' nigdy nie zostanie użyta.
Może ktoś wie dlaczego nie mogę wprowadzić ścieżki do pliku za pomocą owego OpenDialog?
Poniższy kod podpięty jest pod Button.
Pisze w BCB6 Personal i Indy 9.
Za wszelką pomoc z góry dzięki.

Kod: Zaznacz cały
if(OpenD1->Execute())
   {
     Edit2->Text = OpenDialog1->FileName;
     TIdAttachment *idAttach;
     idAttach=new TIdAttachment(IdMessage1->MessageParts, OpenDialog1->FileName);
   }

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 13:47
przez Mironas
W Twoim przykładzie idAttach jest tworzony lokalnie wewnątrz IF-a i natychmiast tracisz go niego dostęp bo poza IF-em już nie jest widoczny.

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 14:04
przez cezarrek
Przeniosłem idAttach w ten o to sposób i nie rozwiązało mi tego kłopotu.
Nie wiem dlaczego właśnie traci się gdzieś ścieżka dostępu do pliku.

Kod: Zaznacz cały
//---------------------------------------------------------------------------
TIdAttachment *idAttach;
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(OpenD1->Execute())
   {
     Edit2->Text = OpenD1->FileName;
     idAttach=new TIdAttachment(IdMess1->MessageParts, OpenD1->FileName);
   }
}
//---------------------------------------------------------------------------

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 14:50
przez Mironas
Teraz zauważyłem:
if(OpenD1->Execute())
Edit2->Text = OpenDialog1->FileName;

Plik wybierasz w OpenD1 ale próbujesz pobrać jego nazwę z OpenDialog1

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 20:36
przez cezarrek
Nie... W drugim przykładzie po prostu skróciłem nazwę.
Dalej nie wiem o co w tym chodzi...
Wygląda tak jak by do 'idAttach' nie została dopisana dana
ścieżka lub komponent TIdAttachment nie potrafi jej jakoś zaakceptować.

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 20:48
przez Cyfrowy Baron
Twój pierwszy kod powinien działać, gdyż u mnie w BCB XE2 działa poprawnie. To może wynikać z błędów w INDY 9, ale skoro piszesz, że podanie jawnej ścieżki dostępu do tego samego pliku działa, to trudno powiedzieć, gdyż OpenDialog->FileName zwraca po prostu wybraną ścieżkę dostępu i powinno to działać.
Podaj cały kod, może błąd kryje się w innym miejscu.

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 20:54
przez cezarrek
Kod jest zaczerpnięty z Twoich porad jednak wklejam.

KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------
TIdAttachment *idAttach;
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{  
 if(OpenD1->Execute())
   {
     Edit2->Text = OpenD1->FileName;

     idAttach=new TIdAttachment(IdMess1->MessageParts, OpenD1->FileName);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{

 IdMess1->From->Name = set->Strings[0];            
 IdMess1->From->Address = set->Strings[1];      i
 IdMess1->Recipients->EMailAddresses = edtDo->Text;
 IdMess1->Subject = edtTemat->Text;                      
 IdMess1->Body->Append(re1->Text);                    



   IdSMTP1->Host = set->Strings[3];                      
   IdSMTP1->Password = set->Strings[2];                
   IdSMTP1->Username = set->Strings[5];            
   IdSMTP1->AuthenticationType = atLogin;              
   IdSMTP1->Port = set->Strings[4].ToInt();
   
   IdSMTP1->Connect();
   try{
        IdSMTP1->Send(IdMess1);
       }
   __finally{
                ShowMessage("Wiadomość została wysłana");
                IdSMTP1->Disconnect();
               }

}
//---------------------------------------------------------------------------

Re: TIdAttachment i OpenDialog

Nowy postNapisane: czwartek, 20 grudnia 2012, 21:07
przez cezarrek
Udało mi się zlokalizować błąd, który sam zrobiłem i po przeróbce działa poprawnie.
Chodziło o warunki Jak kolega wcześniej napisał.
Dzięki za pomoc.

Re: TIdAttachment i OpenDialog

Nowy postNapisane: piątek, 21 grudnia 2012, 05:51
przez Cyfrowy Baron
Czyli jak teraz wygląda ten kod?