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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 19:34   #1
spydark91
Форумчанин
 
Регистрация: 01.06.2011
Сообщений: 215
По умолчанию взрыв мозга уже..(работа со строкой)

помогите пожалуйста доделать,а то взрыв мозга уже
Код:
unit Unit4;

interface

uses
  Classes,sysutils,idhttp,forms;

type
  msginformation=record
    date,time,name:string;
  end;
  TGetMsg = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure add;
    procedure addinfo;
  public
  readystr{,newreadystr},nottostr:string;
  msginfa:msginformation;
  end;


implementation
uses unit1;

procedure TGetMsg.add;
begin
form1.RichEdit1.text:=readystr;
end;

procedure TGetMsg.addinfo;
begin
form1.Memo2.Lines.Add(msginfa.date);
form1.Memo2.Lines.Add(msginfa.time);
form1.Memo1.Lines.Add(msginfa.name);
end;

procedure TGetMsg.Execute;
var
idhttp:Tidhttp;
p,ap,i:integer;
str,pp,str2,workstr:string;
begin
nottostr:='';
pp:='';
idhttp:=tidhttp.create(nil);
idhttp.HandleRedirects:=true;
while true do
begin
try
str:=idhttp.Get('http://www.путь.txt');
if nottostr<>str then
begin
readystr := StringReplace(Str, '[eos]', #13#10, [rfReplaceAll]);
readystr := StringReplace(readystr, '[eo]', #13#10, [rfReplaceAll]);
str2:=str;


//копирую дату
msginfa.date:='  '+copy(readystr,1,pos(' ',readystr)-1);
delete(readystr,1,pos(' ',readystr));
//копирую время
msginfa.time:='  '+copy(readystr,1,pos('_',readystr)-1);
delete(readystr,1,pos('_',readystr));
//копирую имя
msginfa.name:=copy(readystr,1,pos('_',readystr)-1);
delete(readystr,1,pos('_',readystr));


nottostr:=str;
if form1.RichEdit1.Text<>readystr then
    Synchronize(add);
end;
except
application.messagebox('problems get','');
end;
sleep(700);


end;
end;

end.
я получаю строку,содержащюю шаблоны и записываю ее в str,потом разбиваю на строки и выделяю дату,время и имя,они записаны в строке в таком порядке ГОД ВРЕМЯ_НИК_ТЕКСТ(например 18.09.2011 19:23:32_Ваня_меня зовут ваня ) и эта строка например повторяется 5 раз

я выделяю время,годи и имя только с первой строки этим кодом,помогите сделать чтобы я все выделял

Последний раз редактировалось spydark91; 18.10.2011 в 19:42.
spydark91 вне форума Ответить с цитированием
Старый 19.10.2011, 09:48   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
и эта строка например повторяется 5 раз
Код:
//копирую дату
msginfa.date:='  '+copy(readystr,1,pos(' ',readystr)-1);
delete(readystr,1,pos(' ',readystr));
//копирую время
msginfa.time:='  '+copy(readystr,1,pos('_',readystr)-1);
delete(readystr,1,pos('_',readystr));
//копирую имя
msginfa.name:=copy(readystr,1,pos('_',readystr)-1);
delete(readystr,1,pos('_',readystr));
1. повторить этот код 5 раз.
2. включить код в цикл с указанным числом повторений.
Код:
for j:=1 to 5 do begin
..............
end;
3. включить код в цикл с проверкой наличия данных
Код:
while (что-то проверили) do begin
  if (что-то нашли) then 
     .............
  else break;
end;
4. воспользоваться наконец тем что мы все-таки имеем информацию о строках.
Код:
readystr := StringReplace(Str, '[eos]', #13#10, [rfReplaceAll]);
readystr := StringReplace(readystr, '[eo]', #13#10, [rfReplaceAll]);
str2:=str;
здесь мы имеем ОДНУ большую строку в которой есть символы (группы символов #13#10) , которые все редакторы текстов интерпретируют кок переход на новую строку.
Код:
list:=TstringList.Create;
lst.text:=str;
вот теперь мы действительно имеем какое-то количество строк которые мы можем посчитать list.Count и даже посмотреть по одиночке list.Strings[0]. Теперь возвращаемся к пункту 2 с нужными изменениями.

Код:
if form1.RichEdit1.Text<>readystr then //вот это тоже должно быть внутри процедуры Add 
выполняться внутри Synchonize
    Synchronize(add);
end;
Код:
procedure TGetMsg.addinfo;
begin
if form1.RichEdit1.Text<>readystr then
  form1.Memo2.Lines.Add(msginfa.date);
  form1.Memo2.Lines.Add(msginfa.time);
  form1.Memo1.Lines.Add(msginfa.name);
end;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.10.2011 в 09:55.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строкой в С++ X_RaY Помощь студентам 1 10.10.2011 18:27
Работа со строкой FrostoS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.01.2011 17:20
FCK/CK editor!! пол мозга уже скушал mrgrudge PHP 8 03.11.2010 18:52
работа со строкой Андрей.12 Помощь студентам 1 15.02.2010 09:14
работа со строкой. D_E_N Общие вопросы Delphi 4 25.10.2009 16:19