Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 66
1

idhttp в потоке получает пустой txt файл

11.08.2013, 02:19. Показов 2989. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Пишу обновлялку для программы.
Собственно, если код вставлен в FormCreate - все работает.
Если же вставить в поток - нет.
Код unit потока
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
unit updatemodule;
 
interface
 
uses
  System.Classes,shellapi,idhttp,system.SysUtils,Dialogs,messages;
 
type
  TUpdateToolModule = class(TThread)
  protected
    procedure Execute; override;
    procedure DoWork;
  end;
 
implementation
 
{
  Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);
 
  and UpdateCaption could look like,
 
    procedure Update.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end;
 
    or
 
    Synchronize(
      procedure
      begin
        Form1.Caption := 'Updated in thread via an anonymous method'
      end
      )
    );
 
  where an anonymous method is passed.
 
  Similarly, the developer can call the Queue method with similar parameters as
  above, instead passing another TThread class as the first parameter, putting
  the calling thread in a queue with the other thread.
 
}
 
{ Update }
 
procedure TUpdateToolModule.Execute;
var TM: TMemoryStream;
    f,f2: TextFile;
    str,str2: string;
    TM2,TM3:TMemoryStream;
    request:integer;
    idhttp1:Tidhttp;
begin
  NameThreadForDebugging('UpdateTool');
  Synchronize(DoWork);
end;
 
procedure TUpdateToolModule.DoWork;
var TM: TMemoryStream;
    f,f2: TextFile;
    str,str2: string;
    TM2,TM3:TMemoryStream;
    request:integer;
    idhttp1:Tidhttp;
begin
  try
  TM:= TMemoryStream.Create;
  idhttp1.get('http://files.diskanet.ru/1/e/eebef6f6/version.txt',TM);
  finally
  TM.SavetoFile('version.txt');
  end;
  TM.Free;
  idhttp1.Free;
  AssignFile(f,ExtractFilePath(ParamStr(0))+'version.txt');
  reset(f);
  while not eof(f) do begin
                      readln(f, str);
                      end;
closefile(f);
if strtoint(str)>26 then begin
                                         showmessage('Скачивается обновление програмы');
                                         TM2:=TMemoryStream.Create;
                                         idhttp1.Get('http://files.diskanet.ru/1/6/65bcf083/file.txt',TM2);
                                         TM2.SaveToFile('file.txt');
                                         AssignFile(f2,ExtractFilePath(ParamStr(0))+'file.txt');
                                         reset(f2);
                                         while not eof(f2) do begin
                                         readln(f2, str2);
                                         end;
                                         closefile(f2);
                                         TM3:=TMemoryStream.Create;
                                         idhttp1.Get(str2,TM3);
                                         TM3.SaveToFile('update.exe');
                                         ShellExecute(0,PChar('open'),PChar(ExtractFilePath(ParamStr(0))+'update.exe'),Nil,Nil,1);
                                         end
 
 
end;
 
end.
Добавлено через 4 минуты
В папке с ПО попадает файл version.txt в котором ничего нет и размер 0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2013, 02:19
Ответы с готовыми решениями:

Создайте txt-файл с именем yandex_74592cbadf7492e5.txt с произвольным содержимым (можно пустой)
1. Создайте txt-файл с именем yandex_74592cbadf7492e5.txt с произвольным содержимым (можно пустой)...

Создать/удалить пустой файл 1.txt на html
Подскажите код кнопок чисто на html без php чтобы просто создать и удалить файл 1.txt Можно с...

Программа получает входные данные из файла input.txt. Файл содержит строки, содержащие математические действия
Помогите написать программу Программа получает входные данные из файла input.txt. Файл содержит...

На рабочем столе следы вируса - txt файл Youdata! и пустой диск D
На рабочем столе следы вируса - txt файл Youdata!!! и пустой диск D Пользователи с адм. правами...

23
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 66
11.08.2013, 04:18  [ТС] 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от northener Посмотреть сообщение
не уменьшит эти 10 секунд
без апдейта в форме загрузка меньше секунды
Цитата Сообщение от esculap_ra Посмотреть сообщение
Давай сорец.
заливаю на сервер, отправлю в ПМ очень скоро
Цитата Сообщение от cotseec Посмотреть сообщение
хозяин-барин
скорее всего синапс и подключу
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
11.08.2013, 04:31 22
Цитата Сообщение от crystalcfg Посмотреть сообщение

заливаю на сервер, отправлю в ПМ очень скоро
скорее всего синапс и подключу
дашь ссылку на сайт - посмотрю. код серверного обработчика, ну и сорцы. тут походу как и моя закинутая тема. правда там вообще без обработки на сервере. Просто прога ищет файл с именем "годмесяцчисло.txt", который старше, чем у него уже записано в конфигуре. Ну файлы обновляшек (текстовая база данных) я сам готовлю
и вылаживаю в спец-папку.
0
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 66
11.08.2013, 04:32  [ТС] 23
Цитата Сообщение от esculap_ra Посмотреть сообщение
код серверного обработчика,
никакого серверного обработчика. все делается на уровне клиента
кинул сорцы в пм
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.08.2013, 15:15 24
Цитата Сообщение от crystalcfg Посмотреть сообщение
Цитата Сообщение от northener Посмотреть сообщение
не уменьшит эти 10 секунд
без апдейта в форме загрузка меньше секунды
Но поток тут ни при чем. Загрузка выполняется не в нем, а в главном потоке приложения. Так что поток можно смело выбросить на помойку.
0
11.08.2013, 15:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2013, 15:15
Помогаю со студенческими работами здесь

Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные
Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные.

Дан пустой текстовый файл 123.txt, записать в него пять строк введенных с клавиатуры
здравствуйте, помогите пожалуйста с задачей. вот задача Дан пустой текстовый файл 123.txt,...

IdHTTP->Get в потоке и прогрессом
Есть код: TIdHTTP *HTTP = new TIdHTTP(NULL); if (HTTP) { try { HTTP->ConnectTimeout =...

Отправка вайла в потоке idhttp
Ребят, загрузчик файлов на сервер через idhttp + idmultipartformdata работает на ура. Но есть...

Функция idhttp.get возвращает пустой текст
Вот эта функция: s:=idhttp1.get('http://volnorez.com/');Помогите.

Отправка картинки IdHTTP POST в потоке TMemoryStream
Получаю я картинку(капча) в поток(TMemoryStream) посредством запроса. Потом мне нужно эту картинку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru