Delphi

Как в Delphi 7 отправить файл на ftp сервер

:confused: Кто-нибудь, подскажите, как в Delphi 7 отправить файл на ftp сервер

там есть инди компоненты, с их помощью это сделать крайне легко... у меня есть исходник, но под билдером

Да, я знаю про эти компоненты. Но если ты не против, я хотела бы посмотреть твой исходник, пусть и на билдере. Я пишу в Delphi, но видимо я где то допустила ошибку, может посмотришь?

Вот, без всяких компонентов. Работает в Винде и в Линуксе:
Код:
void sendFTP(String ftp_host, String ftp_user, String ftp_pass) { FILE *ff = fopen("ftp_command.txt","w"); ftp_user.Cat(""); if(fputs(ftp_user, ff)<0) { WriteInLogFile("!XML_LOG.txt","Error - fputs(ftp_user, ff)"); } ftp_pass.Cat(""); if(fputs(ftp_pass, ff)<0) { WriteInLogFile("!XML_LOG.txt","Error - fputs(ftp_pass, ff)"); } String filename = "data.xml"; String strMessage = NFormat("send %s", filename); if(fputs(strMessage, ff)<0) { WriteInLogFile("!XML_LOG.txt","Error - fputs(strMessage, ff)"); } if(fputs("quit", ff)<0) { WriteInLogFile("!XML_LOG.txt","Error - fputs("quit", ff)"); } fclose(ff); strMessage = NFormat("ftp -s:%s %s", "ftp_command.txt", ftp_host); UINT dw = WinExec(m_strMessage, SW_SHOW/*SW_HIDE*/); }

Код:
#include <stdlib.h> #include <stdio.h> #include <sysstat.h> ну вот такой есть вариант отправки... живой... из рабочей программы: void __fastcall TMainForm::LoadLog2Server() { AnsiString InMass[512]; struct ffblk ffblk; int Index = 0; for(int i = 0; i < 512; i++) InMass[i] = ""; AnsiString S = Application->ExeName.SubString(1, Application->ExeName.LastDelimiter("\") - 1); TIniFile *inFile = new TIniFile(S + "\Setup.ini"); TIdFTP* FTP = new TIdFTP(NULL); FTP->Host = inFile->ReadString("NETSRV", "FTP_IP", "10.30.10.14"); FTP->User = inFile->ReadString("NETSRV", "FTP_USER", "naryad"); FTP->Password = inFile->ReadString("NETSRV", "FTP_PWD", "hf,jnfcyfhzlfvb"); delete inFile; AnsiString Src = Application->ExeName.SubString(1, Application->ExeName.LastDelimiter("\")); try{ if(FileExists(Src + "Log\" + "*.log")){ AnsiString Adr = Src + "Log\" + "*.log"; int done = findfirst(Adr.c_str(), &ffblk, 0); InMass[0] = AnsiString(ffblk.ff_name); Index++; while(!done){ done = findnext(&ffblk); InMass[Index] = AnsiString(ffblk.ff_name); if(InMass[Index] == InMass[Index - 1]){ InMass[Index] = ""; break; } Index++; } FTP->Connect(true); try{ FTP->ChangeDir("Log"); }catch(...){ FTP->MakeDir("Log"); FTP->ChangeDir("Log"); } try{ FTP->MakeDir(User->Login); }catch(...){} FTP->ChangeDir(User->Login); for(int i = 0; i < Index; i++){ FTP->Put(Src + "Log\" + InMass[i], InMass[i], false); } } }catch(...){} FTP->Disconnect(); delete FTP; }

Цитата:
Сообщение от Redis
Вот, без всяких компонентов. Работает в Винде и в Линуксе:
Код:
void sendFTP(String ftp_host, String ftp_user, String ftp_pass){ FILE *ff = fopen("ftp_command.txt","w"); ftp_user.Cat(""); if(fputs(ftp_user, ff)<0) {WriteInLogFile("!XML_LOG.txt","Error - fputs(ftp_user, ff)"); } ftp_pass.Cat(""); if(fputs(ftp_pass, ff)<0) {WriteInLogFile("!XML_LOG.txt","Error - fputs(ftp_pass, ff)"); } String filename = "data.xml"; String strMessage = NFormat("send %s", filename); if(fputs(strMessage, ff)<0) {WriteInLogFile("!XML_LOG.txt","Error - fputs(strMessage, ff)"); } if(fputs("quit", ff)<0) {WriteInLogFile("!XML_LOG.txt","Error - fputs("quit", ff)"); } fclose(ff); strMessage = NFormat("ftp -s:%s %s", "ftp_command.txt", ftp_host); UINT dw = WinExec(m_strMessage, SW_SHOW/*SW_HIDE*/);}
прикольно... надо будет списать сей способ...