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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2016, 05:26   #1
alekseih09
 
Аватар для alekseih09
 
Регистрация: 09.09.2014
Сообщений: 5
По умолчанию Чтение INI файла с WEB сервера и загрузка данных в ValueListEditor

Приветствую уважаемые! Прошу помощи. Суть такова: Есть сайт, где лежит INI файл и программа, которая должна считать этот INI и вывести данные в ValueListEditor. При нахождении INI в каталоге с программой всё получается, а вот через интернет никак. Я понимаю, что может это и пустяк для многих, но не для меня, только учусь. Прошу помощи...
Вот кусок кода:
Код:
  My:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'file.ini');
  for i:= 1 to My.ReadInteger('Row','Count',0) - 1 do
  begin
  Name1:=My.ReadString('Channel','Name'+inttostr(i),'');
  Url1:=My.ReadString('Channel','Url'+inttostr(i),'');
  ValueListEditor1.InsertRow(Name1,Url1,true);

Последний раз редактировалось Alex11223; 25.10.2016 в 08:44.
alekseih09 вне форума Ответить с цитированием
Старый 25.10.2016, 08:44   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так возьмите любой HTTP клиент (Indy, Synapse) и сохраните в файл.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.10.2016, 10:39   #3
alekseih09
 
Аватар для alekseih09
 
Регистрация: 09.09.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так возьмите любой HTTP клиент (Indy, Synapse) и сохраните в файл.
Вы наверное не правильно меня поняли, а скорее я не так задал вопрос. Лишние файлы не нужны. Загружать и сохранять в файл мне не нужно. Нужно удалённо открыть, считать, поместить считанное в нужное и закрыть. Ну это как вы запускаете программу у которой есть конфигурационный INI, который находится рядом с исполняемым файлом, соответственно программа запускается с теми параметрами, которые указаны в INI. Так вот мне нужно, чтоб этот INI находился в сети (например на сайте), а не рядом и программа соответственно читала и выводила содержимое удалённого INI куда нужно, в моём случае это ValueListEditor.
Спасибо, что откликнулись!
alekseih09 вне форума Ответить с цитированием
Старый 25.10.2016, 10:51   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну GET запрос с помощью HTTP клиента вам все равно сделать надо, полученную строку конечно можно и не сохранять в файл.

Но TIniFile (и даже TMemIniFile) вроде бы умеет работать только с файлами, других стандартных классов для работы с ini в Дельфи вроде бы нет.
Можно просто временный файл (в temp папке ОС) создать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.10.2016, 10:55   #5
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Код:
uses IdHTTP;

. . .

function GetURLFile(const Addr: String): String;
begin
  with TIdHTTP.Create(nil) do
  begin
    with Request do
    begin
      Accept := 'text/html, */*';
      AcceptLanguage := 'ru';
      AcceptCharSet := 'windows-1251';
      UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)';
      CacheControl := 'no-cache';
    end;
    Result := Get(Addr);
    Free
  end
end;

. . .
  ShowMessage(GetURLFile('http://yandex.ru'));
. . .
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 25.10.2016, 10:56   #6
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

А дальше уже самостоятельно нужно парсить строку.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 25.10.2016, 15:11   #7
alekseih09
 
Аватар для alekseih09
 
Регистрация: 09.09.2014
Сообщений: 5
По умолчанию

Спасибо за помощь всем, кое что пригодилось. Сейчас с кодировками разберусь и поделюсь с вами своим решением. Сейчас кракозябры вместо русского текста выводятся в ValueListEditor.

Вот как я решил свою проблему:
Бросил на форму Memo1 в свойствах visible = False
А от кракозябр избавился создав на сайте file.php с которого и читал нужные мне данные

Код:
  Memo1.Lines.text:=idHTTP1.Get('тут адрес сайта/file.php');//Загружаем file.php в Memo1
  Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName) + 'file.txt');//Создаём файл file.txt и заносим текст из Memo1
  My:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'file.txt');
  for i:= 1 to My.ReadInteger('Row','Count',0) - 1 do
  begin
  Name1:=My.ReadString('Channel','Name'+inttostr(i),'');
  Url1:=My.ReadString('Channel','Url'+inttostr(i),'');
  ValueListEditor1.InsertRow(Name1,Url1,true);
  IdHTTP1.Disconnect;
  end;
   DeleteFile(ExtractFilePath(Application.ExeName) + 'file.txt');//Удаляем созданный file.txt
  end;

Последний раз редактировалось alekseih09; 25.10.2016 в 16:38.
alekseih09 вне форума Ответить с цитированием
Старый 25.10.2016, 17:19   #8
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

alekseih09, а кто говорил, что файл не надо сохранять на диск?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 25.10.2016, 17:25   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

GUI-то зачем мучить ради сохранения файла? Взяли б хотя бы TStringList.

И вместо папки программы я бы использовал темп папки ОС (есть функции для их получения).

И зачем IdHTTP1.Disconnect в цикле? (да и вообще вроде бы не нужен он)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.10.2016, 17:30   #10
alekseih09
 
Аватар для alekseih09
 
Регистрация: 09.09.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от 7in Посмотреть сообщение
alekseih09, а кто говорил, что файл не надо сохранять на диск?
Так он после выполнения удаляется. Следов нет.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
GUI-то зачем мучить ради сохранения файла? Взяли б хотя бы TStringList.

И вместо папки программы я бы использовал темп папки ОС (есть функции для их получения).

И зачем IdHTTP1.Disconnect в цикле? (да и вообще вроде бы не нужен он)
IdHTTP1.Disconnect в цикле вы правы не нужен. А вообще цель моя достигнута, пусть и немного другим путём. А с TStringList попробую.

P.S. В каждой трудности вижу возможности. Кстати, могу предложить свою работу, над которой сейчас работаю для тестов и на ваш суд. Очень хочется услышать мнение профессионалов.

Последний раз редактировалось alekseih09; 25.10.2016 в 17:37.
alekseih09 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из ini файла SP1K3_CSGO Общие вопросы C/C++ 0 02.04.2016 14:10
Загрузка ini файла Михаил Юрьевич Общие вопросы Delphi 7 20.11.2014 11:42
чтение ini файла Жека_ Общие вопросы C/C++ 4 01.05.2011 08:52
Состав файла php.ini при установке сервера Kreadlling PHP 4 26.04.2011 13:11
Чтение с INI файла. Baaandit Общие вопросы Delphi 3 26.11.2009 17:15