Видел многопоточные программы в логах действия которых отображается действие n-ого потока. Например: [1]Thread: пишет... [2]Thread: рисует... [1]Thread: рисует... [2]Thread: пишет... Как узнать какой именно поток делает данные действия? Или при запуске потоков надо их синхронизировать и каждому дать номер?
нубо вопрос, но как в delphi7 правильно сохранять проекты, а то сохраняю, открываю и выдает ошибку. приходится код в блокноте хранить)
В потоке сделай поле с каким нибудь именем (например, Number) и при создании потока заноси его номер в эту переменную. Потом в основном коде, который выполняет поток, при наступлении некоторых моментов делай дополнительные вызовы функций, которые обновляли бы лог. Тут да, нужна синхронизация.
Доброго всем времени суток) Подскажите пожалуйста книгу по Object Pascal. Желательно чтобы как можно подробней объяснялся процесс создания классов ну и тому подобное.
http://www.intuit.ru/department/pl/intdelphi/ Как раз для новичка. Из книг читай потом Архангельского, Кэнту, Фаронова
Прохожу авторизацию, но как отправить сообщение по нажатию кнопки не могу догнать. Привидите плиз пример отправки сообщения... Код авторизации: HTML: procedure TForm1.Button1Click(Sender: TObject); var Http : TidHttp; CM : TidCookieManager; Data : TStringList; StrPage, UserID, UserName : String; i : integer; begin try Http := TIdHTTP.Create(Self); Data := TStringList.Create; CM := TidCookieManager.Create(Http); Http.AllowCookies := true; Http.CookieManager := CM; Http.HandleRedirects := true; Http.Request.Host:='livejournal.com'; Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3'; Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; Http.Request.Referer:='http://www.livejournal.com/'; Data.Add('mode=login'); Data.Add('user=' + Edit1.Text); Data.Add('password=' + Edit2.Text); StrPage := Http.Post('http://www.livejournal.com/login.bml?ret=1', Data); finally Data.Free; CM.Free; Http.Free; end; if Pos('<input class="logoutlj_hidden" id="user" name="user" type="hidden" value="'+Edit1.Text,StrPage) <> 0 then ShowMessage('Авторизация прошла успешно') else ShowMessage('Авторизация провалилась'); Memo1.Lines.Text := StrPage; end;
HTML: function sis (a,c:Integer):string; var i:Integer; begin I:=0; repeat i:=i+1; Result[i]:=inttostr((a)mod(c))[1]; a:=(a)div(c); until a>c; end; ругается на строчку HTML: Result[i]:=inttostr((a)mod(c))[1]; только вот на что именно понять не могу. ведь компилируется, но когда начинаешь выполнять, выдаёт ошибку. посоветуйте.
Какбэ сначала надо выделить память под строку, она же пустая. Setlength(result, Length(result) +1); Код который я привел неоптимизирован, но если выделений памяти будет немного то сойдет ну как что, IntToStr возвращает строку string, [1] - первый символ этой строки
вот про память поподробнее, что то то я неслышал что память под строчку надо выделять, что можно выделять знаю, что нужно нет.
Ну вот ты объявил переменную s: string На данный момент она пустая, т.е. обращение s[1], s[2] и т.д.- некорректное, т.к. память под эти символы не выделена. Получим acess violation, и хотя ты не написал какая у тебя ошибка я полагаю что именно эта. А вот если сделать SetLength(s, 2) то можно обращаться к [1] и [2] (но правда они будут пустые) а вот к [3] уже нет. Присвоение типа s := 'ok'; тоже выделяет память под два символа и заодно заносит символы Для примера, на кнопке сделай такой обработчик: Сначала вызови так, а потом убери SetLength и разницу поймешь В-общем, работать со строками надо также как с динамическими массивами
Есть текст вида PHP: <option value="avtoinst">avtoinstruktor.in.ua (avtoinst)</option><option value="avtostek">avtosteklo.kh.ua (avtostek)</option> Как мне спарсить оттуда сайты avtoinstruktor.in.ua, avtosteklo.kh.ua?