Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
#1

Как загрузить файл в стринглист с сервера - Delphi

20.02.2017, 19:15. Просмотров 277. Ответов 18
Метки нет (Все метки)

Здравствуйте. Мне уже подсказывали на форуме как это сделать, но я так и не разобрался. Как загрузить файл в стринглист прямо из потока не сохраняя его на диск. Мой код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
 m : TMemoryStream;
Stream:TMemoryStream;
 L, Tmp : TStringList;
begin
m := TMemoryStream.Create;
 L := TStringList.Create;
  Stream:=TMemoryStream.Create;
IdHttp1.Get('http://site/1.txt', m);
L := TStringList.Create;
L.LoadFromStream(m);
 sMemo1.Text := L.Text;
 L.Text := StringReplace(L.Text, '.', '', [rfReplaceAll]);
 L.Text := StringReplace(L.Text, ',', '', [rfReplaceAll]);
 Tmp := TStringList.Create;
 Tmp.Delimiter := ' ';
 Tmp.DelimitedText := L.Text;
 if Tmp.IndexOf(sEdit1.Text) < 0
  then ShowMessage('No') else ShowMessage('Yes!');
 L.Free;
 Tmp.Free;
end;
Не работает. Знаю что ошибка где то на поверхности.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2017, 19:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как загрузить файл в стринглист с сервера (Delphi):

Данные в стринглист
Здравствуйте! Генерирую список чисел отдельной программой и потом загружаю в...

как в delphi загрузить файл wmf
procedure TForm1.Button4Click(Sender: TObject); begin try If...

Как загрузить прикрепленный файл к почте
Используя Инди10?? idp: TIdPOP3; idmsg: TIdMessage; idp.Host :=...

Как загрузить файл перетаскиванем на кнопку
Всем привет, в общем нужно загрузить файл в memo, но не просто загрузить, а...

Как загрузить текстовый файл Unicode в Delphi?
Помогите пожалуйста! Мне нужно загружать текстовые файлы в Delphi. Проблема в...

Как загрузить текстовый файл Unicode в Delphi?
Помогите пожалуйста! Мне нужно загружать текстовые файлы в Delphi. Проблема в...

18
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
20.02.2017, 22:10 #2
Лучший ответ Сообщение было отмечено Drems как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
L:=TStringList.Create;
H:=TIDHttp.Create(nil);
try
L.text := H.Get(URL);
...
finally
L.free;
H.free;
end;
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
20.02.2017, 22:19  [ТС] #3
Цитата Сообщение от krapotkin Посмотреть сообщение
DelphiВыделить код
1
2
3
4
5
6
7
8
9
L:=TStringList.Create;
H:=TIDHttp.Create(nil);
try
L.text := H.Get(URL);
...
finally
L.free;
H.free;
end;
Что в var писать? а то еррорит
0
cfbogd
botsik
258 / 258 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
20.02.2017, 22:40 #4
Drems, кхе кхе...
URL - это адрес, в вашем случае это 'http://site/1.txt'
L - как не трудно догадаться TStringList
H - TIDhttp.
Строчку 2 можно удалить, у вас же не динамический TIDhttp
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
20.02.2017, 22:45  [ТС] #5
Цитата Сообщение от cfbogd Посмотреть сообщение
Drems, кхе кхе...
URL - это адрес, в вашем случае это 'http://site/1.txt'
L - как не трудно догадаться TStringList
H - TIDhttp.
Строчку 2 можно удалить, у вас же не динамический TIDhttp
Извиняюсь за нубство.
0
Миниатюры
Как загрузить файл в стринглист с сервера  
cfbogd
botsik
258 / 258 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
20.02.2017, 22:48 #6
Drems, H - идентификатор (имя) компонента. У вас имя IDhttp1 . А в коде H. Соответственно нужно поменять название компонента в коде на IDhttp1
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
20.02.2017, 22:56  [ТС] #7
Цитата Сообщение от cfbogd Посмотреть сообщение
Drems, H - идентификатор (имя) компонента. У вас имя IDhttp1 . А в коде H. Соответственно нужно поменять название компонента в коде на IDhttp1
Блин, точно.
0
Qwetyui
29 / 30 / 19
Регистрация: 30.12.2015
Сообщений: 331
Завершенные тесты: 2
21.02.2017, 08:43 #8
Drems, все проще.
Delphi
1
2
3
4
5
function GetSLfromServer(URL: string): TStringList;
begin
  result := TStringList.create;
  result.text := IdHttp1.Get(URL);
end;
ВСЕ!
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
21.02.2017, 09:52 #9
ну, "всё" довольно условное
во-первых, создание idhttp на лету более правильно. ибо следующий вопрос будет на форуме "форма замерзает во время idhttp.get, что делать", и нужно будет отправлять создавать отдельный поток. а там все-равно переписывать
во-вторых, полученный StringList все равно нужно будет где-то Free ))
ну и использование глобальных переменных в функции это вообще плохой тон
так что количество кода толком не изменилось
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
22.02.2017, 21:19  [ТС] #10
Цитата Сообщение от krapotkin Посмотреть сообщение
ну, "всё" довольно условное
во-первых, создание idhttp на лету более правильно. ибо следующий вопрос будет на форуме "форма замерзает во время idhttp.get, что делать", и нужно будет отправлять создавать отдельный поток. а там все-равно переписывать
во-вторых, полученный StringList все равно нужно будет где-то Free ))
ну и использование глобальных переменных в функции это вообще плохой тон
так что количество кода толком не изменилось
Спасибо большое. Ваш код работает. Мне теперь нужно прочитать текст из файла на сервере и сравнить его текс с файлом на компе, не много получается. Мой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.sButton1Click(Sender: TObject);
var
 m : TMemoryStream;
Stream:TMemoryStream;
 L, Tmp,K : TStringList;
begin
L:=TStringList.Create;
 K:=TStringList.Create;
L.text := IdHTTP1.Get('http://site.ru/file1.txt');
smemo1.Lines:=(L);
 sMemo1.Text := L.Text;
 L.Text := StringReplace(L.Text, '.', '', [rfReplaceAll]);
 L.Text := StringReplace(L.Text, ',', '', [rfReplaceAll]);
 Tmp := TStringList.Create;
 Tmp.Delimiter := ' ';
 Tmp.DelimitedText := L.Text;
K.LoadFromFile('file2.txt');
 if Tmp.IndexOf(K.text) < 0
  then ShowMessage('No') else ShowMessage('Yes!');
 L.Free;
 Tmp.Free;
 K.Free;
end;
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
22.02.2017, 22:28 #11
во-первых, уберите стр 10:
Цитата Сообщение от Drems Посмотреть сообщение
smemo1.Lines:=(L);
во-вторых, объясните, что вам на самом деле надо
сравнение файлов - довольно простая вещь
загрузить один файл, другой файл, сравнить побайтно

а у вас 20 строк кода
значит, что-то другое вам нужно? как догадаться?
0
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
22.02.2017, 22:36  [ТС] #12
Цитата Сообщение от krapotkin Посмотреть сообщение
во-вторых, объясните, что вам на самом деле надо
сравнение файлов - довольно простая вещь
загрузить один файл, другой файл, сравнить побайтно
а у вас 20 строк кода
значит, что-то другое вам нужно? как догадаться?
Нужно узнать есть ли текст из файла 2 в файле 1. Мемо там вообще не нужно. Это я для себя.
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
22.02.2017, 22:39 #13
Delphi
1
2
3
4
L1.text:=H.Get(URL);
L2.LoadFromFile(Filename);
if pos(l2.text,l1.text)>0 then
  showMessage('Нашел')
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
22.02.2017, 22:50  [ТС] #14
Delphi
1
2
3
4
5
6
7
8
9
L:=TStringList.Create;
H:=TIDHttp.Create(nil);
try
L.text := H.Get(URL);
...
finally
L.free;
H.free;
end;
Сможете совместить с этим кодом.
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
22.02.2017, 22:59 #15
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
L1:=TStringList.Create;
L2:=TStringList.Create;
H:=TIDHttp.Create(nil);
try
L1.text:=H.Get(URL);
L2.LoadFromFile(Filename);
if pos(l2.text,l1.text)>0 then
  showMessage('Нашел');
finally
L1.free;
L2.free;
H.free;
end;
1
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
22.02.2017, 23:12  [ТС] #16
Цитата Сообщение от krapotkin Посмотреть сообщение
L1:=TStringList.Create;
L2:=TStringList.Create;
H:=TIDHttp.Create(nil);
try
L1.text:=H.Get(URL);
L2.LoadFromFile(Filename);
if pos(l2.text,l1.text)>0 then
* showMessage('Нашел');
finally
L1.free;
L2.free;
H.free;
end;
Сделал по вашему примеру такой код. Но он не работает. Дает нет всегда.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.sButton1Click(Sender: TObject);
var
 m : TMemoryStream;
Stream:TMemoryStream;
 L, Tmp, K : TStringList;
begin
m :=TMemoryStream.Create;
L:=TStringList.Create;
K:=TStringList.Create;
try
L.text := IdHTTP1.Get('http://site/file1.txt');
K.LoadFromFile('file2.txt');
if pos(L.text,K.text)>0 then
  ShowMessage('Да')
  else ShowMessage('Нет');
finally
L.Free;
 K.Free;
end;
end;
 
 
end.
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
23.02.2017, 04:57 #17
ну, код-то правильный )))
только непонятно, что в файлах
вы ищете то что пришло из интернета внутри file2.txt
его там нет
и что?
0
Drems
2 / 2 / 2
Регистрация: 23.01.2013
Сообщений: 131
23.02.2017, 12:42  [ТС] #18
Цитата Сообщение от krapotkin Посмотреть сообщение
ну, код-то правильный )))
только непонятно, что в файлах
вы ищете то что пришло из интернета внутри file2.txt
его там нет
и что?
Он там есть, проверил. Однако прога выдает нет, то есть где то ошибка)
0
krapotkin
3297 / 2937 / 1015
Регистрация: 14.04.2014
Сообщений: 14,261
Записей в блоге: 13
23.02.2017, 16:12 #19
его
там
нет
.

например, может, там есть символ перевода строки которого нет, или пробел
берёте и в отладчике смотрите содержимое
L1.text, L2.text посимвольно
1
23.02.2017, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2017, 16:12
Привет! Вот еще темы с решениями:

Out of Memory, как загрузить большой файл в StringGrid?
Здравствуйте!!! Есть файл объемом 120 мб, который никак не загружается в...

Как проверить, существует ли файл и загрузить его в memo?
Как проверить, существует ли файл, и если да, то нужно загрузить его в мемо...

Как загрузить bin-файл из ресурсов, сразу в массив байт?
Сколько не прочел тем из поисковиков, везде предлагается через файловый поток...

Как в браузер загрузить HTML файл, который будет находиться на диске
Здравствуйте,дорогие форумчане! Прошу вас помочь мне. Значит, ситуация такова:...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru