Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 932
от 22.09.2007, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 463, Экспертов: 74
В номере:Вопросов: 4, Ответов: 7


Вопрос № 102263: Здравствуйте, уважаемые эксперты! Каким образом можно сделать так, чтобы процесс моего приложения невозможно было завершить (чтобы программа блокировала), как, например, в касперском....
Вопрос № 102273: Сдравствуйте эксперты подскажите как в Delphi реализовать разбивку строки на слова, допустим в масив. Т.е. "Hello world" mas[1]=hello mas[2]=world...
Вопрос № 102276: Здравствуйте, Уважаемые Эксперты! Вопрос на тему глобальных переменных. Ответьте, пожалуйста, как будет более правильно, с точки зрения программиста, написать код - как в примере 1 или в примере 2? И объясните, пожалуйста, поподробнее для чего нужен ...
Вопрос № 102290: Здравстуйте, пришел я к Вам вот с такой проблемой, написал патчик что бы открывал файл находил нужное значение, после заменял его и сохранял. Все хорошо, но объём файлов тоесть их количество которое надо про патчить довольно велико, вот, ...

Вопрос № 102.263
Здравствуйте, уважаемые эксперты!
Каким образом можно сделать так, чтобы процесс моего приложения невозможно было завершить (чтобы программа блокировала), как, например, в касперском.
Отправлен: 16.09.2007, 22:12
Вопрос задал: Megalamer (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Narsereg
Здравствуйте, Megalamer!

Не уверен, но скорее всего потребуется 2 процесса, которые будут проверять работу друг друга. И в случае завершения запускать.
Ответ отправил: Narsereg (статус: 1-ый класс)
Ответ отправлен: 17.09.2007, 09:43
Оценка за ответ: 3
Комментарий оценки:
Это и без того понятно. речь шла об одном процессе, который бы блокировал попытку завершения его работы.


Вопрос № 102.273
Сдравствуйте эксперты подскажите как в Delphi реализовать разбивку строки на слова, допустим в масив. Т.е. "Hello world" mas[1]=hello mas[2]=world
Отправлен: 17.09.2007, 00:42
Вопрос задал: Whitesnake (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Whitesnake!
Такой впрос уже задавался (87601). Вот код для разбивки строки в массив:
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
A: array of string;
n, i: integer;
begin
s := 'hello world';
s := s + ' ';
n := 0;
repeat
setlength(A, n + 1); //устанавливаем длину массива
a[n] := Copy(s, 0, Pos(' ', s) - 1);
Delete(s, 1, Length(a[n] + ' '));
Inc(n);
until s = '';
dec(n);
for i := 0 to n do
showmessage(a[i]);
end;

Приложение:

Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 17.09.2007, 05:15
Оценка за ответ: 5

Отвечает: Esi
Здравствуйте, Whitesnake!
Вот пример.

procedure Tfm(str:string);
var i: integer;
mas: array of string;
begin
Setlength(mas,0];
i:=1; //Хотя нумерация в массивах начинается с нуля.
while pos(' ',str)<>0 do begin
Setlength(mas,i];
mas[i]:=copy(str,1,pos(' ',str)-1);
str:=copy(str,pos(' ',str)+1,length(str));
inc(i);
end;
mas[i]:=str;
end;
Ответ отправил: Esi (статус: 2-ой класс)
Ответ отправлен: 17.09.2007, 07:27


Вопрос № 102.276
Здравствуйте, Уважаемые Эксперты! Вопрос на тему глобальных переменных. Ответьте, пожалуйста, как будет более правильно, с точки зрения программиста, написать код - как в примере 1 или в примере 2? И объясните, пожалуйста, поподробнее для чего нужен обработчик OnExit, и обязательно ли использовать обработчик OnExit, когда используешь глобальные переменные. Заранее всем спасибо!!!:-)

Приложение:

Отправлен: 17.09.2007, 01:46
Вопрос задала: Алена (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алексей Акишин
Здравствуйте, Алена!
Как правило обработчик OnExit используется для проверки введенных данных либо других каких-то условий. С глобальными переменным он связи в приципе не имеет.
В приложении дан пример 1 с использованием OnExit, пример 2 без него.

Приложение:

---------
Что бы ни делать - лишь бы ничего не делать!

Ответ отправил: Алексей Акишин (статус: 3-ий класс)
Ответ отправлен: 17.09.2007, 04:04
Оценка за ответ: 4

Отвечает: sir henry
Здравствуйте, Алена!
Отвечу Вам с точки зрения теории.
Глобальные переменные нужны тогда, когда у Вас есть какие-то данные, которые Вы изменяете в процессе работы программы и эти данные используются в нескольких процедурах.
Вообще рекомендуется глобальными переменными не увлекаться. Например, если Вы используете иерахический вызов процедур, т.е. из одной процедуры вызывается другая, то данные во вторую процедуру передаются в качестве параметров.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 17.09.2007, 05:48
Оценка за ответ: 4

Отвечает: Esi
Здравствуйте, Алена!
Обработчик OnExit используется тогда, когда осуществляется выход из компонента, то есть компонент теряет фокус. Если напишите программу в этот обработчик, то перед тем, как потерять фокус выполнится эта программа.
Что же касается примеров, то в первом примере (правильный) выводиться сумма в edit3.
Во втором (неправильный) - в процедуре TForm1.Edit1Exit значение a будет присвоено, тогда, когда введёте какое-то значение в edit1 и перейдете, например вводить edit2; В процедуре TForm1.Edit2Change переменной b будет присвоено каждый раз, когда вносите изменения в edit2.
Примечание. В обоих примерах можно обойтись без переменной с: Edit3.Text:=IntToStr(a+b);
Ответ отправил: Esi (статус: 2-ой класс)
Ответ отправлен: 17.09.2007, 07:56
Оценка за ответ: 5


Вопрос № 102.290
Здравстуйте,
пришел я к Вам вот с такой проблемой,
написал патчик что бы открывал файл находил нужное значение, после заменял его и сохранял.
Все хорошо, но объём файлов тоесть их количество которое надо про патчить довольно велико, вот, как бы и сам вопрос:
Как бы так изловчиться, что бы он патчил все файлы в указанной папке с определенным расширением?
Если можно привидите конкретный пример как это можно реализовать.
Отправлен: 17.09.2007, 10:00
Вопрос задал: Ищенко Евгений Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Narsereg
Здравствуйте, Ищенко Евгений Владимирович!

var
searchResult : TSearchRec;

begin
if FindFirst('*.log (или какое там расширение?)', faAnyFile, searchResult) = 0 then
begin
repeat
ShowMessage('Имя файла = '+searchResult.Name);
ShowMessage('Размер файла = '+IntToStr(searchResult.Size));
until FindNext(searchResult) <> 0;
FindClose(searchResult);
end;
end;
Ответ отправил: Narsereg (статус: 1-ый класс)
Ответ отправлен: 17.09.2007, 10:09
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60 от 22.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное