Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2012, 21:55   #1
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
Смущение Перевод кода из Delphi на C++

Доброго вечера. Пожалуйста, помогите портировать код с Delphi на C++. Его не очень много, но есть некоторые компоненты, которых не могу найти и сам код в некоторых моментах не понятен(.

Пишу в Embarcadero RAD 2010 C++. Эта программа представляет из себя небольшой авто-апдейтер файлов с сервера. Никак не могу найти нормальной статьи по созданию апдейтера на C++, по коду подходит больше этот, но с делфи плохо дружу =(

Код:
procedure GetIntetFile(URL, SavetoFile: string);
var
 TM: TMemoryStream;
begin
 try
  TM:= TMemoryStream.Create;
  Form1.idhttp1.Get(URL,TM);
  finally
  TM.SavetoFile(SavetoFile);
  end;
  TM.Free;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
GetIntetFile('http://ваш_сайт/wh.dll','c:\wh.dll');
end;

form1.Memo1.Lines.Add('Файл загружается');
 form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
  sleep(300);
  form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
form1.ProgressBar1.Position:=form1.ProgressBar1.Position+50;
  form1.ProgressBar1.Position:=0;
form1.Memo1.Lines.Add('Загрузка завершена, ищите файл в c:\wh.dll');

procedure GetIntetFile(URL, SavetoFile: string);
var
 TM: TMemoryStream;
begin
 try
  TM:= TMemoryStream.Create;
  Form1.idhttp1.Get(URL,TM);
  form1.Memo1.Lines.Add('Файл загружается');
  form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
  sleep(300);
  form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
  finally
  TM.SavetoFile(SavetoFile);
  form1.ProgressBar1.Position:=form1.ProgressBar1.Position+50;
  form1.ProgressBar1.Position:=0;
    form1.Memo1.Lines.Add('Загрузка завершена, ищите файл в c:\wh.dll');
  end;
  TM.Free;
end;

var
version:string;
begin
version:='1.0';//наша версия
memo1.Lines.Add('Ваша версия updater = '+version);
GetIntetFile2('http://ваш_сайт/versionupdater.txt','c:\windows\upd.txt');
memo2.Lines.LoadFromFile('c:\windows\upd.txt');
if memo2.Text<>version then    //Если версия другая то
begin
memo1.Lines.Add('обнаружена новая версия updater  = '+memo2.Text);
memo1.Lines.Add('Для закачки нажмите на кнопку обновить updater');
end   //Если версия такая же
else memo1.Lines.Add('обновлений не обнаружено');
end;

procedure GetIntetFile2(URL, SavetoFile: string);
var
 TM: TMemoryStream;
begin
 try
  TM:= TMemoryStream.Create;
  Form1.idhttp1.Get(URL,TM);
  finally
  TM.SavetoFile(SavetoFile);
form1.Memo1.Lines.Add('Успешно');
  end;
  TM.Free;
end;

var
version:string;
begin
version:='1.0';//наша версия
memo1.Lines.Add('Ваша версия updater = '+version);
GetIntetFile2('http://ваш_сайт/versionupdater.txt','c:\windows\upd.txt');
memo2.Lines.LoadFromFile('c:\windows\upd.txt');
if memo2.Text<>version then    //Если версия другая то
begin
memo1.Lines.Add('обнаружена новая версия updater  = '+memo2.Text);
memo1.Lines.Add('Закачка производится в c:\updaternew.exe');
GetIntetFile2('http://ваш_сайт/updater.exe','c:\updaternew.exe');
end   //Если версия такая же
else memo1.Lines.Add('обновлений не обнаружено');
end;
mego4el вне форума Ответить с цитированием
Старый 29.12.2012, 22:27   #2
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

большинство разделителей между методами и свойствами . на ->.
так же в с++ нет Create или Destroy;
вместо них необходимо new или delete

f = new TFileStream("ghdfg", fmCreate);

все переменные на vcl классы пишутся так

TFileStream* f;

во всех строках 'dfdfd' меняем кавычки на "fdfsf"

delete f;

//--------
вот например первая функция
Код:
void GetIntetFile(const String& URL, const String& SaveToFile)
{
   TMemoryStream* Stream = new TMemoryStream();
   // вместо делфяковской трушки можно ассерт вставить
   // а можно ничего не смотреть.
   if(Stream)
   {
      Form1->idhttp1->Get(URL, Stream);
      Stream->SaveToFile(SaveToFile);
      delete Stream;
   }
   else //ошибка
}
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 29.12.2012 в 22:34.
Perchik71 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода из Delphi в VBA prem1era Microsoft Office Access 1 15.05.2012 12:39
перевод кода с Delphi sergo555 Общие вопросы C/C++ 1 12.11.2011 20:32
Перевод кода с c#(предположительно) на delphi Даниил_глазко Общие вопросы Delphi 4 28.10.2011 13:58
Перевод кода с C++ на Delphi atagilov Общие вопросы Delphi 5 22.06.2011 22:09
Перевод кода с Fortran-77 на Delphi unhide Помощь студентам 3 20.05.2008 14:27