void __fastcall TForm1::Button3Click(TObject *Sender)
{
bool test = true;
try{ IdFTP1->List(NULL, "indeks.html", false); }catch(...){test = false;}
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdFTP1->ChangeDir("files"); // przejście z katalogu głównego do podkatalogu files
bool test = true;
try{ IdFTP1->List(NULL, "gdiplus.rar", false); }catch(...){test = false;}
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdFTP1->ChangeDir("files"); // przejście z katalogu głównego do podkatalogu files
IdFTP1->ChangeDir("grafika"); // przejście z podkatalogu files do podkatalogu grafika
bool test = true;
try{ IdFTP1->List(NULL, "image.bmp", false); }catch(...){test = false;}
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdFTP1->ChangeDir("files"); // przejście z katalogu głównego do podkatalogu files
IdFTP1->ChangeDirUp(); // cofniecie się o jeden katalog wstecz, czyli tutaj do katalogu głównego
bool test = true;
try{ IdFTP1->List(NULL, "gdiplus.rar", false); }catch(...){test = false;}
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdFTP1->List(ListBox1->Items, "*.html", true);
}
//---------------------------------------------------------------------------
Cyfrowy Baron napisał(a):IdFTP1->List(NULL, "indeks.html", false); }catch(...){test = false;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TStrings *Lista = new TStringList;
bool test = true;
try{ IdFTP1->List(Lista, "index.html", false); }catch(...){test = false;}
delete Lista;
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
bool fileexist(TIdFTP *IdFTP1, String fn)
{
int ilosc = Lista->Count;
int i=1;
for (i; i < ilosc; i++) {
TStringList *l= new TStringList;
IdFTP1->List(l,fn,false);
int exist = l->Count;
return exist;
}
}
if(fileexist(IdFTP1,sciezka)==0)
{
IdFTP1->Put(...); // jesli go nie ma na FTP to wysyla
}
if(fileexist(IdFTP1,sciezka)==0)
{
IdFTP1->Put(...); // jesli go nie ma na FTP to wysyla
}
if(fileexist(IdFTP1,sciezka) == false)
{
IdFTP1->Put(...); // jesli go nie ma na FTP to wysyla
}
if( !fileexist(IdFTP1,sciezka) )
{
IdFTP1->Put(...); // jesli go nie ma na FTP to wysyla
}
void zlecenia()
{
IdFTP1->ChangeDir("Zlecenia");
IdFTP1->List(ftp, "*.*", false);
int ilosc = ftp->Count;
int i=2;
for (i; i < ilosc; i++)
{
String nazwa_pliku = ftp->Strings[i];
String sciezka = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
if(!FileExists(sciezka))
{
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
for (i=0; i < ilosc; i++)
{
ftp->Delete(i);
}
}
void PDF_K()
{
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("PDF_K");
IdFTP1->List(ftp, "*.*", false);
int ilosc = ftp->Count;
int i=2;
for (i; i < ilosc; i++) {
String nazwa_pliku = ftp->Strings[i];
String sciezka = "D:\\Baza\\PDF_K\\" + nazwa_pliku;
if(!FileExists(sciezka)){
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
for (i=0; i < ilosc; i++) {
ftp->Delete(i);
}
}
void PDF_V()
{
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("PDF_V");
IdFTP1->List(ftp, "*.*", false);
int ilosc = ftp->Count;
int i=2;
for (i; i < ilosc; i++) {
String nazwa_pliku = ftp->Strings[i];
String sciezka = "D:\\Baza\\PDF_V\\" + nazwa_pliku;
if(!FileExists(sciezka)){
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
for (i=0; i < ilosc; i++) {
ftp->Delete(i);
}
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
zlecenia();
PDF_V();
PDF_K();
}
Access violation at address 007302BC in module 'IndyProtocols100.bpl'. Read of address 00000000'. Process Project1.exe (3664)
void zlecenia_ftp()
{
FindDir(local, "d:\\Baza\\Zlecenia", "");
int ilosc= local->Count;
int i=0;
if(ilosc!=0)
{
for (i; i < ilosc; i++)
{
String nazwa_pliku = local->Strings[i];
String sciezka_ftp = "\\Zlecenia" + nazwa_pliku;
String sciezka_local = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("Zlecenia");
IdFTP1->List(ftp,nazwa_pliku,false);
int exist = ftp->Count;
if(exist!=1)
{
IdFTP1->Put(sciezka_local,sciezka_ftp,true);
}
}
}
}
void FindDir(TStringList *local, String Dir, String typ)
{
TSearchRec sr;
if(FindFirst(Dir + "*.*", faAnyFile, sr) == 0)
{
do{
if(((sr.Attr & faDirectory) > 0) && (sr.Name != ".") && (sr.Name != ".."))
{
FindDir(local, Dir + sr.Name + "\\", typ);
}
if((sr.Attr & faDirectory) == 0){
if(typ.IsEmpty())
local->Add(sr.Name);
else if(ExtractFileExt(sr.Name).SubString(2, 5) == typ)
local->Add(sr.Name);
}
}
while(FindNext(sr) == 0);
FindClose(sr);
}
}
//---------------------------------------------------------------------------
void FindDir(TStringList *local, String Dir, String typ)
{
Dir = (Dir.SubString(Dir.Length(), 1) != "\\") ? Dir + "\\" : Dir;
TSearchRec sr;
if(FindFirst(Dir + "*.*", faAnyFile, sr) == 0)
{
do{
if(((sr.Attr & faDirectory) > 0) && (sr.Name != ".") && (sr.Name != ".."))
{
FindDir(local, Dir + sr.Name + "\\", typ);
}
if((sr.Attr & faDirectory) == 0){
if(typ.IsEmpty())
local->Add(sr.Name);
else if(ExtractFileExt(sr.Name).SubString(2, 5) == typ)
local->Add(sr.Name);
}
}
while(FindNext(sr) == 0);
FindClose(sr);
}
}
//---------------------------------------------------------------------------
Cyfrowy Baron napisał(a):Kod pierwszy:
Co to za bzdura:
int i=2;
for (i; i < ilosc; i++)
{
powinno być:
int i;
for (i = 2; i < ilosc; i++)
{
for (int i = 2; i < ilosc; i++)
Cyfrowy Baron napisał(a):Piszesz, że funkcja "Funkcja zlecienia() - odpowiada za porównanie zawartości katalogu //Zlecenia na FTP z katalogiem na dysku.", a ja tym czasem widzę po kodzie, ze ta funkcja pobiera pliki z serwera
List index of bounds(41)
FindDir(local, "d:\\Baza\\Zlecenia\\", "");
[ILINK32 Error] Error: Unresolved external '__fastcall TForm1::FindDir(Classes::TStringList *, System::AnsiString, System::AnsiString)' referenced from D:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\MOJE DOKUMENTY\RAD STUDIO\PROJECTS\FTP\DEBUG_BUILD\UNIT1.OBJ
private:
TStringList *local;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
local = new TStringList;
}
//---------------------------------------------------------------------------
void zlecenia(void)
{
Form1->IdFTP1->ChangeDir("Zlecenia"); // adresowanie na Form1
Form1->IdFTP1->List(ftp, "*.*", false); // adresowanie na Form1
int ilosc = Form1->ftp->Count;
int i;
for(i = 2; i < ilosc; i++)
{
String nazwa_pliku = Form1->ftp->Strings[i];
String sciezka = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
if(!FileExists(sciezka))
{
Form1->IdFTP1->Get(nazwa_pliku, sciezka, true, false);
}
}
for (i=0; i < ilosc; i++)
{
Form1->ftp->Delete(i);
}
}
private:
void zlecenia(void);
void TForm1::zlecenia(void) // zwróć uwagę na to, że przypisałem funkcję do klasy formularza
{
IdFTP1->ChangeDir("Zlecenia");
IdFTP1->List(ftp, "*.*", false);
int ilosc = ftp->Count;
int i=2;
for (i; i < ilosc; i++)
{
String nazwa_pliku = ftp->Strings[i];
String sciezka = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
if(!FileExists(sciezka))
{
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
for (i=0; i < ilosc; i++)
{
ftp->Delete(i);
}
}
void TForm1::zlecenia(void)
{
IdFTP1->ChangeDir("Zlecenia");
IdFTP1->List(ftp, "*.*", false);
String nazwa_pliku;
String sciezka;
int i;
for (i=2; i < ftp->Count; i++)
{
nazwa_pliku = ftp->Strings[i];
sciezka = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
if(!FileExists(sciezka))
{
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
}
void TForm1::PDF_V(void)
{
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("PDF_V");
IdFTP1->List(ftp, "*.*", false);
String nazwa_pliku, sciezka;
int i;
for (i=2; i < ftp->Count; i++) {
nazwa_pliku = ftp->Strings[i];
sciezka = "D:\\Baza\\PDF_V\\" + nazwa_pliku;
if(!FileExists(sciezka)){
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
}
void TForm1::PDF_K()
{
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("PDF_K");
IdFTP1->List(ftp, "*.*", false);
int i;
for (i=2; i < ftp->Count; i++) {
String nazwa_pliku = ftp->Strings[i];
String sciezka = "D:\\Baza\\PDF_K\\" + nazwa_pliku;
if(!FileExists(sciezka)){
IdFTP1->Get(nazwa_pliku,sciezka,true,false);
}
}
}
void TForm1::zlecenia_ftp()
{
FindDir(local, "d:\\Baza\\Zlecenia\\","");
int ilosc= local->Count;
int i;
String nazwa_pliku, sciezka_ftp, sciezka_local;
if(ilosc!=0)
{
for (i=0; i < ilosc; i++)
{
nazwa_pliku = local->Strings[i];
sciezka_ftp = "\\Zlecenia" + nazwa_pliku;
sciezka_local = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("Zlecenia");
try
{
IdFTP1->List(ftp,nazwa_pliku,false);
}
catch(EIdReplyRFCError& exc)
{
int exist = ftp->Count;
if(exist!=1)
{
IdFTP1->Put(sciezka_local,sciezka_ftp,true);
}
}
}
}
}
First chance exception at $7C812AEB. Exception class EIdReplyRFCError with message '"/Zlecenia/0001 20080108 .BAK" File/Directory not found
'. Process Project1.exe (2504)
void TForm1::zlecenia_ftp()
{
FindDir(local, "d:\\Baza\\Zlecenia\\","");
int ilosc= local->Count;
int i;
bool test;
String nazwa_pliku, sciezka_ftp, sciezka_local;
if(ilosc!=0)
{
for (i=0; i < ilosc; i++)
{
nazwa_pliku = local->Strings[i];
sciezka_ftp = "\\Zlecenia" + nazwa_pliku;
sciezka_local = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("Zlecenia");
test = true;
try
{
IdFTP1->List(ftp,nazwa_pliku,false);
}
catch(...)
{
test=false;
}
if(test==false)
{
IdFTP1->Put(sciezka_local,sciezka_ftp,true);
}
}
}
}
Michalos napisał(a):
nie jestem pewien czy dobrze obsługuję ten wyjątek. Ten wyjątek pojawia się, gdy próbuje użyć funkcji List(), dokładna treść komunikatu to:First chance exception at $7C812AEB. Exception class EIdReplyRFCError with message '"/Zlecenia/0001 20080108 .BAK" File/Directory not found
'. Process Project1.exe (2504)
Czyli, nie ma takiego pliku na FTP, cały w tym sęk - jak go nie ma to ma go pobrać, lecz niestety nie chce tego zrobić. Możesz mi coś doradzić ?
EDIT ---------------------------------
Zrobiłem podobnie jak Ty na początku tematu napisałeś, czyli:
- Kod: Zaznacz cały
void TForm1::zlecenia_ftp()
{
FindDir(local, "d:\\Baza\\Zlecenia\\","");
int ilosc= local->Count;
int i;
bool test;
String nazwa_pliku, sciezka_ftp, sciezka_local;
if(ilosc!=0)
{
for (i=0; i < ilosc; i++)
{
nazwa_pliku = local->Strings[i];
sciezka_ftp = "\\Zlecenia" + nazwa_pliku;
sciezka_local = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("Zlecenia");
test = true;
try
{
IdFTP1->List(ftp,nazwa_pliku,false);
}
catch(...)
{
test=false;
}
if(test==false)
{
IdFTP1->Put(sciezka_local,sciezka_ftp,true);
}
}
}
}
Ale nadal nic to nie zmienia.. ten sam błąd
void TForm1::zlecenia_ftp()
{
FindDir(local, "d:\\Baza\\Zlecenia\\","");
IdFTP1->ChangeDirUp();
IdFTP1->ChangeDir("Zlecenia");
int ilosc= local->Count;
int i;
String nazwa_pliku, sciezka_ftp, sciezka_local;
if(ilosc!=0)
{
for (i=0; i < ilosc; i++)
{
nazwa_pliku = local->Strings[i];
sciezka_ftp = "\\Zlecenia\\" + nazwa_pliku;
sciezka_local = "D:\\Baza\\Zlecenia\\" + nazwa_pliku;
IdFTP1->Put(sciezka_local,sciezka_ftp,true);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(IdFTP1->Connected())
ShowMessage("Połączony");
else
{
ShowMessage("Rozłączony");
return;
}
TStrings *Lista = new TStringList;
bool test = true;
try{ IdFTP1->List(Lista, "index.html", false); }catch(...){test = false;}
delete Lista;
if(test == true)
ShowMessage("Znaleziono plik");
else
ShowMessage("Brak pliku");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
IdFTP1->Noop();
}
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość