Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.04.2016, 02:03
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Поток срабатывает со второго раза

Здравсвуйте!

Пытаюсь в потоке парсить вк и выводить ответ в stringlist. Поток срабатывает со второго раза, с первого выдается ошибка:

Если проигнорить ошибку, и еще раз ткнуть кнопку - работает.

Если запускать без delphi, чисто с exe файла, то ошибки нет, но так или иначе поток отрабатывает только со второго нажатия.
Что я намудрил не так?))

код:
Код:
{ TMyThread }
procedure TMyThread.Execute;
 var
  i,PoSi: integer;
 S : string;
 artist, title   : TStrings;
begin
   MusicResponse:=Utf8ToAnsi(send('GET', 'https://api.vk.com/method/audio.get?owner_id='+userid+'&need_user=0&count='+inttostr(TrackCount)+'&'+token));
   Form1.sMemo2.Text:=MusicResponse ;
   TrackCount:=Form1.sTrackBar1.Position;
   S:=Form1.sMemo2.Text;
   artist:= TStringList.Create;
   title:= TStringList.Create;
   url:= TStringList.Create;
   url.Clear;
   s:= Form1.SMemo2.Text;
   prs(s, '"artist":"', '","', artist);
   prs(s, '"title":"', '","', title);
   prs(s, '"url":"', '?', url);
   Form1.SListBox1.TabWidth := 200;
       for i := 0 to artist.Count-1 do
       begin
          Form1.SListBox1.Items.Add(artist[i]+' - '+title[i]);
          SSSS:=url.Strings[i];
         while pos('\',ssss)<>0 do
         delete(ssss,pos('\',ssss),1);
         url.Strings[i]:=SSSS;
       end;
   artist.Free;
   title.Free;
   url.Text:=AnsiLowerCase(url.Text);
       Terminate;
end;

Последний раз редактировалось Gareth, 15.04.2016 в 07:33.
Ответить с цитированием
  #2  
Старый 15.04.2016, 07:54
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

простейший пример работы с VCL из потока. естественно работает с первого раза:

Код:
type
  TNumLockThread = class(TThread)
  private
    procedure Synch;
  protected
    procedure Execute; override;
  end;
...
procedure TNumLockThread.Execute;
var
  i: Integer;
begin
  for i:=1 to 5 do
  begin
    Synchronize(Synch);
    Sleep(250);
  end;
end;

procedure TNumLockThread.Synch;
begin
  Form1.Memo1.Lines.Add(IntToStr(GetTickCount));
end;

запуск:

Код:
TNumLockThread.Create(False);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Gareth (15.04.2016)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter