Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > конвертирую из шарпа в ++


Автор: rthsobakas 14.4.2010, 21:55
Код

private void FTPUploadFile(String^ filename)
        {
            FileInfo fileInf = gcnew FileInfo(filename);
            String^ uri = "ftp://" + "ftp.narod.ru" + "/" + fileInf.Name;
            FtpWebRequest reqFTP;
            // Create FtpWebRequest object from the Uri provided
            reqFTP = (FtpWebRequest)FtpWebRequest::Create(gcnew Uri("ftp://" + "ftp.narod.ru" + "/" + fileInf.Name));
            // Provide the WebPermission Credintials
            reqFTP.Credentials = gcnew NetworkCredential("hotel-vega", "1/2ivanov");
            // By default KeepAlive is true, where the control connection is not closed
            // after a command is executed.
            reqFTP.KeepAlive = false;
            // Specify the command to be executed.
            reqFTP.Method = WebRequestMethods::Ftp::UploadFile;
            // Specify the data transfer type.
            reqFTP.UseBinary = true;
            // Notify the server about the size of the uploaded file
            reqFTP.ContentLength = fileInf.Length;
            // The buffer size is set to 2kb
            int buffLength = 2048;
            Byte[] buff = gcnew byte[buffLength];
            int contentLen;
            // Opens a file stream (System.IO.FileStream) to read the file to be uploaded
            FileStream fs = fileInf.OpenRead();
            try
            {
                // Stream to which the file to be upload is written
                Stream strm = reqFTP.GetRequestStream();
                // Read from the file stream 2kb at a time
                contentLen = fs.Read(buff, 0, buffLength);
                // Till Stream content ends
                while (contentLen != 0)
                {
                    // Write Content from the file stream to the FTP Upload Stream
                    strm.Write(buff[], 0, contentLen);
                    contentLen = fs.Read(buff[], 0, buffLength);
                }
                // Close the file stream and the Request Stream
                strm.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
              MessageBox.Show(ex.Message, "Upload Error");
            }
        }


куча ошибок вылетает. Причем некоторые хз как исправить н-р связанные с Byte[].
ну вот
Цитата

>: error C2143: синтаксическая ошибка: отсутствие ";" перед "private"
1>: error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>: error C2065: filename: необъявленный идентификатор
1> : error C2512: System::IO::FileInfo::FileInfo: нет подходящего конструктора по умолчанию
1>: error C2512: System::Net::FtpWebRequest::FtpWebRequest: нет подходящего конструктора по умолчанию
1> : error C2440: приведение типов: невозможно преобразовать 'System::Net::WebRequest ^' в 'System::Net::FtpWebRequest'
1> Для преобразования требуется конструктор или оператор пользовательского преобразования, который не может использоваться const_cast или reinterpret_cast
1> error C2582: функция 'operator =' недоступна в 'System::Net::FtpWebRequest'
1> warning C4091: : пропускается слева от 'unsigned char', когда ни одна переменная не объявлена
1>error C2143: синтаксическая ошибка: отсутствие ";" перед "["
1> error C3409: пустой блок атрибута не допускается
1> error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "buff"
1>error C2065: buff: необъявленный идентификатор
1> error C2061: синтаксическая ошибка: идентификатор "byte"
1> error C3673: System::IO::FileStream: у класса нет конструктора копии
1>error C3622: System::IO::Stream: класс, объявленный как "abstract", не предусматривает создание экземпляров
1>        d:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll: см. объявление 'System::IO::Stream'
1> error C3673: System::IO::Stream: у класса нет конструктора копии
1> error C2065: buff: необъявленный идентификатор
1> error C2059: синтаксическая ошибка: ]
1> error C2065: buff: необъявленный идентификатор
1> error C2059: синтаксическая ошибка: ]
1> error C2065: buff: необъявленный идентификатор
1>error C2059: синтаксическая ошибка: ]
1> error C2725: System::Exception: невозможно выдать или перехватить управляемый объект по значению или ссылке
1>: error C2316: System::Exception: не может быть перехвачен, поскольку деструктор и (или) конструктор копии недоступны
1> error C2143: синтаксическая ошибка: отсутствие ";" перед "."
1> : error C2143: синтаксическая ошибка: отсутствие ";" перед "."



и ещё эту ф-ию в С++ можно загнать в зону конструктора?

Код
public:
        img(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //

        }

    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.


просто в примере на шарпе туды и загнали. 

Автор: KuMa1104 14.4.2010, 23:44
Вбил вашу первую строчку в гугл и тут же видно ошибку. 
Нужно так.
Код

FileInfo^ fi1 = gcnew FileInfo( path );

И так далее. 
Если вы не знаете C# это не повод тут же переписывать на знакомый C+.
Зачем вам это!
Оставьте это всё в отдельном модуле на C# И обращайтесь к нему в вашей программе.

Автор: rthsobakas 15.4.2010, 10:16
Цитата

Оставьте это всё в отдельном модуле на C# И обращайтесь к нему в вашей программе. 


каким образом?  

Автор: jonie 15.4.2010, 10:45
лучше почитать книжку http://www.ozon.ru/context/detail/id/3422178/ например такую. Или почитать рихтера или троелсона, в них есть ответы в главах "Работа с унаследованным кодом" или подобных

Автор: rthsobakas 1.10.2010, 19:04
http://topic.csdn.net/u/20100614/12/eff49608-4aea-4bea-b034-23f38c037ada.html тут описана ошибка с исключением. От китайцев больше толку чем от некоторых на русских форумах smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)