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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2010, 03:14   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию TStringStream в String

Здравствуйте.
Необходимо провести сравнение TStringStream с String. Вышел из проблемы так
Код:
var
   s:TStringStream;
   s2:TstringStream;
begin
   s:=TStringStream.Create;
   s2:=TStringStream.Create;
   try
      s2.WriteString('date');
      if s =s2 then
         begin
           .................
         end;
   finally
      s.Free;
      s2.Free;
   end;
можно ли как то сделать это менее громоздко
Lokos вне форума Ответить с цитированием
Старый 25.08.2010, 03:23   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Цитата:
можно ли как то сделать это менее громоздко
Можно:
Код:
var
   s:TStringStream; s2:TstringStream;
begin
   s:=TStringStream.Create; s2:=TStringStream.Create;
   try
      s2.WriteString('date');
      if s =s2 then begin ................. end;
   finally
      s.Free; s2.Free;
   end;
Ну что, так лучше?

Скажите, ну куда вам короче? Вы же все правильно сделали.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 25.08.2010, 03:41   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Блин, чет я уже видать к утру туплю.
Цитата:
сравнение TStringStream с String
Может вы имели в виду вот это:
Код:
var
  s: String;
  SS: TstringStream;
begin
   s := 'date';
   SS := TStringStream.Create ('date');
   try
      if s = SS.ReadString (ss.Size) then
         begin
           ShowMessage ('ЛАДЫ');
         end;
   finally
      SS.Free;
   end;
end;
Ибо, во-первых, вы пытаетесь сравнить TStringStream с TStringStream.
Во-вторых, TStringStream.Create у меня потребовал входной параметр.
Ну а в-третьих, вы сравниваете s2 с неинициализированным s.
Sibedir вне форума Ответить с цитированием
Старый 25.08.2010, 03:42   #4
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от ex.cluz Посмотреть сообщение
Можно:
Код:
var
   s:TStringStream; s2:TstringStream;
begin
   s:=TStringStream.Create; s2:=TStringStream.Create;
   try
      s2.WriteString('date');
      if s =s2 then begin ................. end;
   finally
      s.Free; s2.Free;
   end;
Ну что, так лучше?

Скажите, ну куда вам короче? Вы же все правильно сделали.
Ну я думал возможно какое то преобразование есть.
И почему то сравнение не происходит(
Lokos вне форума Ответить с цитированием
Старый 25.08.2010, 03:51   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Какое преобразование? Преобразование чего?
Вам что с чем сравнить надо?
Sibedir вне форума Ответить с цитированием
Старый 25.08.2010, 03:57   #6
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Какое преобразование? Преобразование чего?
Вам что с чем сравнить надо?
Преобразование TStringStream в String. Что то типо IntToStr или DateToStr и т.д.
Ну сравнение у меня по какой то причине не происходит вот полный код
Код:
procedure TForm1.ServerExecute(AContext: TIdContext);
var
   s:TStringStream;
   s2:String;
begin
   s:=TStringStream.Create;
   try
      AContext.Connection.IOHandler.ReadStream(s);
      s.Position:=0;
      memo1.lines.LoadFromStream(s);
      s2:=('date');
      if s2=s.ReadString(s.Size) then
         begin
            s.Clear;
            s.WriteString('Дата на сервере'+DateToStr(Date));
            s.Position:=0;
            AContext.Connection.IOHandler.Write(s,s.Size,true);
         end;
   finally
      s.Free;
   end;
еще есть вопросик данный метод
Код:
memo1.lines.loadfromsteam(s);
обнуляет все memo и добавляет строчку этого можно как то избежать
Lokos вне форума Ответить с цитированием
Старый 25.08.2010, 04:13   #7
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Вопрос решен. Изменил код вот так
Код:
procedure TForm1.ServerExecute(AContext: TIdContext);
var
   s:TStringStream;
   s2:String;
begin
   s:=TStringStream.Create;
   try
      AContext.Connection.IOHandler.ReadStream(s);
      s.Position:=0;
      memo1.lines.LoadFromStream(s);
      s2:=('date');
      s.Position:=0;
      if s2=s.ReadString(s.Size) then
         begin
            s.Clear;
            s.WriteString('Дата на сервере'+DateToStr(Date));
            s.Position:=0;
            AContext.Connection.IOHandler.Write(s,s.Size,true);
         end;
   finally
      s.Free;
   end;
Lokos вне форума Ответить с цитированием
Старый 25.08.2010, 04:25   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

О. ну здрасте. Залез в TStringStream и о чудо. Свойство там есть такое - DataString называется. Через него и можно читать всю строку целиком.
Код:
if 'date' = s.DataString then
Кстати, у вас наверное D2010. Чет я смотрю TStringStream у нас малость поразному работает.

Цитата:
обнуляет все memo и добавляет строчку этого можно как то избежать
Избежать чего: обнуления или добавления?
Может это поможет
Код:
memo1.lines.LoadFromStream(s);
Заменить на
Код:
memo1.lines.Add(s.DataString);
P.S: Еще одна такая фраза "для телепатов" и я вам больше не помошник.
Sibedir вне форума Ответить с цитированием
Старый 25.08.2010, 04:34   #9
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
Подмигивание

Цитата:
Сообщение от Sibedir Посмотреть сообщение
О. ну здрасте. Залез в TStringStream и о чудо. Свойство там есть такое - DataString называется. Через него и можно читать всю строку целиком.
Код:
if 'date' = s.DataString then
Кстати, у вас наверное D2010. Чет я смотрю TStringStream у нас малость поразному работает.


Избежать чего: обнуления или добавления?
Может это поможет
Код:
memo1.lines.LoadFromStream(s);
Заменить на
Код:
memo1.lines.Add(s.DataString);
P.S: Еще одна такая фраза "для телепатов" и я вам больше не помошник.
Извиняюсь за не точность вопроса.
Код:
memo1.lines.Add(s.DataString);
то что нужно большее спс
Lokos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Результат POST-запроса в TStringStream mc_12 Работа с сетью в Delphi 0 06.07.2010 14:49
Как из TStringStream загрузить Html код в WebBrowser? nikmay Общие вопросы Delphi 3 11.09.2009 16:29
получение от TServerSocket TStringStream-a (delphi) dyonysos Помощь студентам 1 30.08.2009 17:08
Работа с классом TStringStream в Borland C++ profi Общие вопросы C/C++ 2 26.07.2009 20:14
TStringstream VS Tstringlist Lich Работа с сетью в Delphi 2 06.01.2009 10:54