Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Drems
2 / 2 / 0
Регистрация: 23.01.2013
Сообщений: 123
#1

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

20.02.2017, 19:15. Просмотров 225. Ответов 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
Здравствуйте! Генерирую список чисел отдельной программой и потом загружаю в свой софт таким видом. var Form1: TForm1; MyList:...

Как загрузить прикрепленный файл к почте - Delphi
Используя Инди10?? idp: TIdPOP3; idmsg: TIdMessage; idp.Host := edHost.Text; idp.Port := StrToInt(edPort.Text); ...

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

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

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

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

18
krapotkin
2663 / 2539 / 640
Регистрация: 14.04.2014
Сообщений: 12,252
Записей в блоге: 7
20.02.2017, 22:10 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 / 0
Регистрация: 23.01.2013
Сообщений: 123
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
257 / 257 / 87
Регистрация: 05.06.2016
Сообщений: 1,245
Записей в блоге: 1
20.02.2017, 22:40 #4
Drems, кхе кхе...
URL - это адрес, в вашем случае это 'http://site/1.txt'
L - как не трудно догадаться TStringList
H - TIDhttp.
Строчку 2 можно удалить, у вас же не динамический TIDhttp
1
Drems
2 / 2 / 0
Регистрация: 23.01.2013
Сообщений: 123
20.02.2017, 22:45  [ТС] #5
Цитата Сообщение от cfbogd Посмотреть сообщение
Drems, кхе кхе...
URL - это адрес, в вашем случае это 'http://site/1.txt'
L - как не трудно догадаться TStringList
H - TIDhttp.
Строчку 2 можно удалить, у вас же не динамический TIDhttp
Извиняюсь за нубство.
0
Миниатюры
Как загрузить файл в стринглист с сервера  
cfbogd
botsik
257 / 257 / 87
Регистрация: 05.06.2016
Сообщений: 1,245
Записей в блоге: 1
20.02.2017, 22:48 #6
Drems, H - идентификатор (имя) компонента. У вас имя IDhttp1 . А в коде H. Соответственно нужно поменять название компонента в коде на IDhttp1
1
Drems
2 / 2 / 0
Регистрация: 23.01.2013
Сообщений: 123
20.02.2017, 22:56  [ТС] #7
Цитата Сообщение от cfbogd Посмотреть сообщение
Drems, H - идентификатор (имя) компонента. У вас имя IDhttp1 . А в коде H. Соответственно нужно поменять название компонента в коде на IDhttp1
Блин, точно.
0
Qwetyui
29 / 30 / 9
Регистрация: 30.12.2015
Сообщений: 322
Завершенные тесты: 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
2663 / 2539 / 640
Регистрация: 14.04.2014
Сообщений: 12,252
Записей в блоге: 7
21.02.2017, 09:52 #9
ну, "всё" довольно условное
во-первых, создание idhttp на лету более правильно. ибо следующий вопрос будет на форуме "форма замерзает во время idhttp.get, что делать", и нужно будет отправлять создавать отдельный поток. а там все-равно переписывать
во-вторых, полученный StringList все равно нужно будет где-то Free ))
ну и использование глобальных переменных в функции это вообще плохой тон
так что количество кода толком не изменилось
1
Drems
2 / 2 / 0
Регистрация: 23.01.2013
Сообщений: 123
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
2663 / 2539 / 640
Регистрация: 14.04.2014
Сообщений: 12,252
Записей в блоге: 7
22.02.2017, 22:28 #11
во-первых, уберите стр 10:
Цитата Сообщение от Drems Посмотреть сообщение
smemo1.Lines:=(L);
во-вторых, объясните, что вам на самом деле надо
сравнение файлов - довольно простая вещь
загрузить один файл, другой файл, сравнить побайтно

а у вас 20 строк кода
значит, что-то другое вам нужно? как догадаться?
0
Drems
2 / 2 / 0
Регистрация: 23.01.2013
Сообщений: 123
22.02.2017, 22:36  [ТС] #12
Цитата Сообщение от krapotkin Посмотреть сообщение
во-вторых, объясните, что вам на самом деле надо
сравнение файлов - довольно простая вещь
загрузить один файл, другой файл, сравнить побайтно
а у вас 20 строк кода
значит, что-то другое вам нужно? как догадаться?
Нужно узнать есть ли текст из файла 2 в файле 1. Мемо там вообще не нужно. Это я для себя.
0
krapotkin
2663 / 2539 / 640
Регистрация: 14.04.2014
Сообщений: 12,252
Записей в блоге: 7
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 / 0
Регистрация: 23.01.2013
Сообщений: 123
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
2663 / 2539 / 640
Регистрация: 14.04.2014
Сообщений: 12,252
Записей в блоге: 7
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
22.02.2017, 22:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2017, 22:59
Привет! Вот еще темы с ответами:

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

Как проверить, существует ли файл и загрузить его в memo? - Delphi
Как проверить, существует ли файл, и если да, то нужно загрузить его в мемо Делал так:b := tstringlist.Create; a :=...

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

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


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

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

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