vbstreets conferință - Vezi subiect - modul de copiere a datelor prin ftp
Această problemă
Există un program pe care l-am link către alții. Computer prin ftp.
Trei ferestre: IP. Intra, parola. Finalizată - conectare - vezi datele de care am nevoie, în a patra cutie, arată astfel:
-rwxrwxrwx 1 abc cde 1000018 30 septembrie 08:15 log0.csv
-rwxrwxrwx 1 abc cde 181273 30 septembrie 09:15 log1.csv
Buton pentru a crea o copie a datelor
Am nevoie de aceste date este acum copiat să ne imaginăm, de exemplu, C:
Ca ajutor suplimentar te rog.
cod:
Private Sub btnLogin_Click (ByVal expeditor Ca System.Object, ByVal e Ca System.EventArgs) Manere btnLogin.Click
ls Dim Ca Indy.Sockets.TIdStringListFCL = New Indy.Sockets.TIdStringListFCL
FTPConnection = New Indy.Sockets.FTP
Me.FTPConnection.Host = Me.txtFTPAddress.Text
Me.FTPConnection.Username = Me.txtUserName.Text
Me.FTPConnection.Password = Me.txtPassword.Text
Me.FTPConnection.Port = 21
Me.FTPConnection.Passive = Adevărat
încerca
Me.FTPConnection.Connect ()
Me.FTPConnection.List (ls, "./Data/*.csv", Adevărat)
Pentru fiecare fișier Ca șir în ls
Me.lstServerDirectoryData.Items.Add (fișier)
următor
Prinde ex Ca excepție
StatusBar1.Text = ex.Message
Exit Sub
end Încercați
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
Nu știu cât de multe sunt experți în această componentă special.
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
[Quote = "Rainbow"]
3) handler SOVY (Private Sub btnLogin_Click (ByVal expeditor Ca System.Object, ByVal e Ca System.EventArgs) Mânere btnLogin.Click)
interpune TestFTP apel ()
vastavlyayu
Sub Protejat TestFTP ()
, și el mi-a spus. operatorul în interiorul operatorului
și totuși exemplul mnstruktsii spus. două dll ar trebui să fie conectat.
FTP.dll am găsit, dar al doilea nu știu
artist7. ai face odată ce a scris un alt program?
Apelarea unei funcții - este doar un nume și parametri.
În cazul nostru, TestFTP parametrii. Asta este, trebuie doar să scrie TestFTP toate.
Despre al doilea dll nu știu nimic. Am un proiect Campiglio.
Pe dll este necesar să se facă referire, dacă nu folosiți clasa și dll. Din moment ce te-a adăugat clsFTP dvs. de proiect (dacă se adaugă), nu este necesar să referințe dll.
Creator. ar fi rece, dar artist7, ca și acum am realizat, nevoie de un cod, pe care le-ar fi copiat si a functionat. Dacă aveți timp și o mare dorință, puteți încerca să ajute. Tocmai am acum un loc de muncă de urgență - nu pot.
Sebas. Aparate - este aceeași pentru toate PDA-uri. Greșesc?
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
- N-am înțeles de ce au venit la mine să mor?
Deci, poate cineva încă explica cum să continue?
Am descărcat această clasă
acolo a construit forma
ei 2 butoane - conectare și Donowload
Reinbow a scris:
3) handler SOVY (Private Sub btnLogin_Click (ByVal expeditor Ca System.Object, ByVal e Ca System.EventArgs) Mânere btnLogin.Click)
interpune TestFTP apel ()
I se introduce, și așa mai departe, cu paranteze și fără și cu Sub protejate și orice. eroare totală
Nu știu cum să-l cheme, spune-mi
următor - în cazul în care este? dreapta sau stânga)
Pot să-l lipi la (Private Sub btnLogin_Click. După, sau SAMO (între Private Sub btnLogin_Click. Și. Sub capăt)
Exemplu cu insertie mai puțin clare
asa. Să pas cu pas:
Verificați dacă vă puteți zakonnektitsya.
Prin coasere „mosteneste System.Windows.Forms.Form“ scrie:
Cod: Selectați toate ftp private Ca clsFTP
Apoi adăugați butonul de autentificare handler (l-am avea btnLogin)
Cod: Selectați toate Private Sub btnLogin_Click # 40; ByVal expeditor Ca System.Object, ByVal e Ca System.EventArgs # 41; Mânere btnLogin.Click
ftp = nou clsFTP
ftp.RemoteHost = txtFTPAddress.Text
ftp.RemoteUser = txtUserName.Text
ftp.RemotePassword = txtPassword.Text
ftp.RemotePort = 21
Dacă ftp.Login # 40; # 41; apoi
MsgBox # 40; "! Intra de succes" # 41;
End If
end Sub
Sa întâmplat? Am văzut un mesaj?
Acum, verificați fișierul de descărcare:
Adăugați butonul handler de descărcare (o am btnDownload)
Cod: Selectați toate Private Sub btnDownload_Click # 40; ByVal expeditor Ca System.Object, ByVal e Ca System.EventArgs # 41; Mânere btnDownload.Click
ftp.ChangeDirectory # 40; "date" # 41;
ftp.DownloadFile # 40; "myfile.csv", "C: \ TEMP \ myfile.csv" # 41;
end Sub
myfile.csv și C: \ TEMP \ myfile.csv înlocuit cu real!
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
Toate slelat, așa cum ați spus
Dar există două întrebări:
dacă este necesar să se conecteze FTP.dll?
Am atât de atât de atât de încercat.
Conectează-te - nu a recunoscut clasa ftp privata Ca clsFTP
„Există o eroare de sistem“
nu o eroare de sistem, krnechno și eroare VS
Sunteți un proiect este deschis?
Acest proiect, care este clsFTP - un proiect al tipului de clasa Biblioteca - iesi din ea dll.
Ai nevoie să fie începe un nou proiect sau de a folosi o pe cea veche. În orice caz, ar trebui să fie un proiect de aplicare a ferestrei - astfel de proiecte primesc exe. Numai astfel de proiecte pot fi „rula“
Ai avut, de asemenea, un proiect cu o formă. Unde este el?
Acum, despre conexiunea dll. Există 2 opțiuni.
1) vă deschide aplicația Windows, adăugați un link către FTP.dll
2) În proiectul deschis pentru Windows Application adăuga clase din proiect (add-> Add existent Item-> clsFTP.vb).
Acest 2 opțiuni complet egale. Voi descrie al doilea. Fă cum vrea.
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
bl.
Am realizat în opinia mea.
Stau în acest proiect, și nu într-un nou, chiar acum, voi încerca.
arcul scăzut pentru tine de la mine! Sunt un idiot! Omoară-mă, cineva! Sunt un idiot! Omoară-mă, cineva.
Și „Ordinul de răbdare“ de gradul II sunt un idiot! Omoară-mă, cineva! Sunt un idiot! Omoară-mă, cineva.
Există încă o mulțime de muncă (pentru mine)
Dar aceasta este doar una dintre cele 4 componente ale programului. Ceilalți sunt gata și lucrează ca proiecte separate. Și toate acestea vor trebui să fie puse împreună.
În orice, caz Esch din nou Multumesc
Eeee! Stai puțin! Ai mai mult de un fișier, mai multe fișiere CSV, toate acestea sunt necesare pentru a descărca. Nu le puteți apela unul câte unul pentru a descărca - este greșit!
În loc de o DownloadFile scrie doar un astfel de lucru:
Cod: Selectați toate Dim ca șir de s
Pentru fiecare s În ftp.GetFileList # 40; "* .csv" # 41;
Dacă s.Length> 0 Atunci
ftp.DownloadFile # 40; s "C: \ TEMP" s # 41;
End If
următor
Aici GetFileList transmis de masca returnează o matrice de nume de fișiere, pe care a găsit în directorul curent (care a fost expus în ChangeDirectory. „Pentru fiecare e în“ atinge pe una dintre aceste fișiere și pune-l în variabilei s. Downloadeaza DownloadFile s. Aici.
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
ftp.ChangeDirectory ( "Date")
s Dim ca STRING
Pentru fiecare s In ftp.GetFileList ( "*. Csv")
Dacă s.Length> 0 Atunci
ftp.DownloadFile (s, "C: \ TEMP" s)
End If
următor
.
o eroare și mă aruncă clasa de cod clsFTP în loc
Dacă (Nu (m_iRetValue = 150 sau m_iRetValue = 125)) Apoi
MessageString = m_sReply
Arunca New IOException (m_sReply.Substring (4))
End If (zhetraya săgeata de pe linia 362)
Face în timp ce (adevărat)
m_aBuffer.Clear (m_aBuffer, 0, m_aBuffer.Length)
m_iBytes = cSocket.Receive (m_aBuffer, m_aBuffer.Length, 0)
output.Write (m_aBuffer, 0, m_iBytes)
-Programul a făcut o oprire la acest loc:
Dacă s.Length> 0 Atunci
-măsuri suplimentare
-programul merge la linia următoare (ftp.DownloadFile (s, "C: \ TEMP" s))
-valoarea „s“ peste tot „total“
-următorul pas salt în codul clsFTP clasă și începe să-l lopata
-End Dacă se oprește la linia (362) clasa clsFTP
poate fi „Catch ex ca excepție“ pentru a încerca?
1) Ce este textul de eroare?
2) dacă există un folder în C: \ temp? Când aveți o descărcare normală fișier, în cazul în care să-l puneți? Ceea ce a fost scris în locul meu
ftp.DownloadFile ( "myfile.csv", "C: \ TEMP \ myfile.csv")
3) în timpul închiderii s = "total"? Nu "total.csv"?
Încercați acest lucru:
După scriere ChangeDirectory
Cod: Selectați toate Dim arr # 40; # 41; Ca String
arr = ftp.GetFileList # 40; # 41 "* csv.";
Oprire la linia următoare și rola variabila arr în ceas. Uite, cât de multe și care elemente în matrice.
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)
1), 2), „- există întotdeauna ordinea
3) este totală, acest fișier (fără extensia și 0kb) lzhit am în dosarul C: \ TEMP
eroare:
O eroare de tip unhandled Regăsirea „System.IO.IOExeption“ originea în acest proiect
Informații suplimentare: Fole „total“ nu a fost găsit sau problema premission
Sunt aici încă auzit de timeout de 30 de secunde prin FTP
Iar atunci când ia în considerare faptul că pot descărca 700 modem Kb. poate DSSE problema?
Watcher Watch si probabil la fel.
Când opriți, deschideți sau Debug-> Windows Watch, un Debug-> Windows-> Localnicii (fereastra DGE arată valorile tuturor variabilelor locale)
Că fișierul total este în C: \ temp - nu este surprinzător. El e acolo pentru descărcare. Și este FTP? De ce spun „nu a fost găsit“
În ceea ce privește injectarea unui modem - Nu știu, dar mă îndoiesc că există un timeout.
În general, toate acestea sunt ciudat. Am check-in ftp local - lucrări, descărcări toate txt-fișierele pe care le am acolo.
Câți dintre voi aveți csv-fișier?
Aflați - mijloace pentru a descoperi ceea ce știi deja. <.> Teach - aceasta înseamnă amintind alții că ei știu la fel de bine ca și tine. <.> Cel mai bun lucru pe care îl învață la ceea ce te cel mai mult pentru a învăța. (Bach R.)