TIdAttachment i OpenDialog

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

TIdAttachment i OpenDialog

Nowy postprzez cezarrek » czwartek, 20 grudnia 2012, 13:26

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);
   }
Avatar użytkownika
cezarrek
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 12 marca 2012, 15:07
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: XP 2002 SP3
Kompilator: BCB 6 Personal
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez Mironas » czwartek, 20 grudnia 2012, 13:47

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.

Za ten post autor Mironas otrzymał podziękowanie od:
cezarrek
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: TIdAttachment i OpenDialog

Nowy postprzez cezarrek » czwartek, 20 grudnia 2012, 14:04

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);
   }
}
//---------------------------------------------------------------------------
Avatar użytkownika
cezarrek
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 12 marca 2012, 15:07
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: XP 2002 SP3
Kompilator: BCB 6 Personal
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez Mironas » czwartek, 20 grudnia 2012, 14:50

Teraz zauważyłem:
if(OpenD1->Execute())
Edit2->Text = OpenDialog1->FileName;

Plik wybierasz w OpenD1 ale próbujesz pobrać jego nazwę z OpenDialog1
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: TIdAttachment i OpenDialog

Nowy postprzez cezarrek » czwartek, 20 grudnia 2012, 20:36

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ć.
Avatar użytkownika
cezarrek
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 12 marca 2012, 15:07
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: XP 2002 SP3
Kompilator: BCB 6 Personal
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez Cyfrowy Baron » czwartek, 20 grudnia 2012, 20:48

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.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez cezarrek » czwartek, 20 grudnia 2012, 20:54

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();
               }

}
//---------------------------------------------------------------------------
Avatar użytkownika
cezarrek
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 12 marca 2012, 15:07
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: XP 2002 SP3
Kompilator: BCB 6 Personal
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez cezarrek » czwartek, 20 grudnia 2012, 21:07

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.
Avatar użytkownika
cezarrek
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 12 marca 2012, 15:07
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: XP 2002 SP3
Kompilator: BCB 6 Personal
Gadu Gadu: 0
    Windows XPFirefox

Re: TIdAttachment i OpenDialog

Nowy postprzez Cyfrowy Baron » piątek, 21 grudnia 2012, 05:51

Czyli jak teraz wygląda ten kod?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość