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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2014, 05:34   #1
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
Вопрос Как загрузить переменную типа string в XMLDocument1.LoadFromStream(); или XMLDocument1.LoadFromFile(); ?

Как загрузить переменную типа string в XMLDocument1.LoadFromStream(); или XMLDocument1.LoadFromFile(); ?

Код:
var
  response:string;
begin
  response:=send('GET', 'http://site.ru/example.xml');
  XMLDocument1.LoadFromStream(response); // но тут получаю ошибку - Incompatible types: 'TStream' and 'String'
end;
FleXik вне форума Ответить с цитированием
Старый 11.08.2014, 06:57   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

tstringstream существует.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.08.2014, 07:45   #3
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Пепел Феникса, пример пожалуйста
FleXik вне форума Ответить с цитированием
Старый 11.08.2014, 09:03   #4
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Код:
function StringToStream(const AString: string): TStream;
begin
  Result := TStringStream.Create(AString);
end;
вот функция, но мне ее нужно переделать под код который в 1 посте этой темы. т.е чтобы использовалось без функции...
FleXik вне форума Ответить с цитированием
Старый 11.08.2014, 09:32   #5
StriderX
Форумчанин
 
Регистрация: 21.04.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от FleXik Посмотреть сообщение
[CODE]...
вот функция, но мне ее нужно переделать под код который в 1 посте этой темы. т.е чтобы использовалось без функции...
Вот прям из исходников дельфей :
Код:
procedure TXMLDocument.LoadFromXML(const XML: AnsiString);
var
  StringStream: TStringStream;
begin
  StringStream := TStringStream.Create(XML);
  try
    LoadFromStream(StringStream);
  finally
    StringStream.Free;
  end;
end;
Надо только AnsiString поменять на нужное.
Через функцию не рекомендуется запрашивать объекты, в таком виде нарушается правило: кто создал, тот и убивает. То есть, чтобы функция стала рабочей, должен появиться некий менеджер стримов, который будет их уничтожать.
StriderX вне форума Ответить с цитированием
Старый 11.08.2014, 10:36   #6
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

StriderX, конкретный пример с моим кодом?
FleXik вне форума Ответить с цитированием
Старый 11.08.2014, 10:51   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var
  response:TStringStream;
begin
  response:=TStringStream(send('GET', 'http://site.ru/example.xml'));
  XMLDocument1.LoadFromStream(response);
  response.free;
end;
Цитата:
конкретный пример с моим кодом?
Ай-ай-ай. стыдоба. мог бы хотя бы по инету порыться или почитать хелп...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2014, 10:53   #8
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Stilet, я делал по другому, не канало, спс большое, весы кликнул, а есть че для юникода?

Stilet, кстати, у тебя там ошибка в коде (тут ошибка -response:=TStringStream.....), но тем не менее я исправил и работает, спасибо.

Последний раз редактировалось Stilet; 11.08.2014 в 13:53.
FleXik вне форума Ответить с цитированием
Старый 11.08.2014, 13:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а есть че для юникода?
Ну допустим использовать LoadFromFile(), сохранив скачанное в файл.
Я для такого юзаю не компонент а сам интерфейс, поэтому не скажу что там с юникодом.
Цитата:
кстати, у тебя там ошибка в коде
Бывает )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по XMLDocument1 - Delphi 7 -Jack- Общие вопросы Delphi 3 30.06.2012 03:39
Как преобразовать переменную типа textfile в string ? 239 Помощь студентам 1 04.11.2011 20:26
Как умножить переменную типа byte на integer или extended (Delphi 7) IronFire Помощь студентам 2 23.10.2010 18:04
к переменной типа integer присвоить переменную string Kigmatig Помощь студентам 7 29.01.2010 21:55
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57