Вопрос № 45895: Здравствуйте, уважаемые эксперты.
Есть image на форме. я работаю с image.canvas.pixels[].
Так вот нужно по нажатию кнопки очищать этот image. Каким наиболее быстрым способом это можно сделать?
Возможно ли это сделать не перебирая все точ...Вопрос № 45908: Здравствуйте уважаемые эксперты!
Не подскажите как организовать поиск определённого текста по нескольки текстовым файлам? Желательно с примером.
Зараннее большое спасибо!...Вопрос № 45913: Уважаемые товарищи эксперты!У меня к вам 2 вопроса:как в x:Integer поместить числовое значение компонента TEdit?
Каким образом ограничить ввод текста в TEdit только цифрами?...Вопрос № 45919: Как определить моему приложению полный путь ярлыка, которым оно запущено(Delhpi5; желательно для любой ОС, но достаточно для XP).
Я написал приложение, которое выполняется, инсталлируется и деинсталлируется одним и тем же exe-шником. Не могу реш...Вопрос № 45940: Написал ф-цию, которая возвращает значение типа TStrings,
При попытке обработать его возникает ошибка.
Подскажите как все сделать правильно....Вопрос № 45949: Здравствуйте !!! Имеется строка string f:='45*X*X*X*X+10*X*X*X+86*X*X+49*X+88' и функция
function Func(x:Real): Real;
begin
Func:=strtofloat(f); // Trim(f)
end;
Как сделать так чтобы эта строка f преобразовывалась в функцию 45*X...
Вопрос № 45.895
Здравствуйте, уважаемые эксперты.
Есть image на форме. я работаю с image.canvas.pixels[].
Так вот нужно по нажатию кнопки очищать этот image. Каким наиболее быстрым способом это можно сделать?
Возможно ли это сделать не перебирая все точки изображения?
Отвечает: Ерёмин Андрей
Здравствуйте, Lichkaty Alexander!
Можно делать разными способами:
1) PatBlt(Image1.Canvas.Handle,0,0,Image1.ClientWidth,Image1.ClientHeight,WHITENESS);
2) Image1.Canvas.Brush.Color := ClWhite;
Image1.Canvas.FillRect(Canvas.ClipRect);
3) Image1.Picture.Bitmap.Canvas.Brush.Color := ClWhite;
Image1.Picture.Bitmap.Canvas.FillRect(Canvas.ClipRect);
4) Image1.Picture.Bitmap.FreeImage; (полностью освобождает память)
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: DeVampir
Здравствуйте, Lichkaty Alexander!
Попробуйте нарисовать на всей очищаемой области прямоугольник методом Rectangle
(можно и FillRect, но он не прорисовывает нижнюю и правую границы), предварительно задайте цвета Brush и Pen - такими же, как и у фона, (не забудьте, потом выставить их обратно, если нужно!) Думаю будет быстрее перебора. Описание методов читайте в Хелпе - там все понятно!
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 1-ый класс)
Ответ отправлен: 11.06.2006, 21:17
Вопрос № 45.908
Здравствуйте уважаемые эксперты!
Не подскажите как организовать поиск определённого текста по нескольки текстовым файлам? Желательно с примером.
Зараннее большое спасибо!
Отправлен: 11.06.2006, 15:41
Вопрос задал: Mihanick (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Mihanick!
1) [Тривиально] Лучше всего, пожалуй, сделать это через TStringList.
В примере внизу предполагается, что в переменной s лежит слово, которое вы ищете, а в массиве строк filnames[] лежат имена файлов по которые вы перебираете по переменной i.
2) [Нетривиально] Можно использовать консольную команду find, запустив ее через WinExec и сохранив результат в файл или, лучше, именованный канал.
Перенаправление вывода консольных комманд осуществляется с помощью '>>'
Когда разберетесь с именованными каналами или придумаете, как халявно читать результаты работы консоли (мне тогда расскажите, пожалуйста ;-), можно будет сделать первым способом =)
Приложение:
Ответ отправил: Сухомлин Кирилл Владимирович (статус: 9-ый класс)
Ответ отправлен: 12.06.2006, 05:38 Оценка за ответ: 5 Комментарий оценки: Первый ответ, так что 5! Спасиб!
Вопрос № 45.913
Уважаемые товарищи эксперты!У меня к вам 2 вопроса:как в x:Integer поместить числовое значение компонента TEdit?
Каким образом ограничить ввод текста в TEdit только цифрами?
Отправлен: 11.06.2006, 17:33
Вопрос задал: Ustas (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Jadd
Здравствуйте, Ustas!
в integer запихнуть строку - нечего делать: StrToInt - функция конвертации. Например,
s: string;
i: integer;
i:=StrToInt(s);
В Вашем случае: i:=StrToInt(Edit1.Text);
Только надо быть уверенным, что в строке точно все цифры. По поводу разрешения-неразрешения. Определяем событие onKeyPress Для TEdit; Дальше оно должно быть примерно таким:
if not (Key in ['0'..'9', #8]) then
begin
Key := #0;
MessageBeep(MB_OK);
end;
Вот такие вот дела.
Успехов.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 11.06.2006, 17:48 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Ustas!
Вообще-то, есть такой хороший компонент, как TMaskedEdit - для него не надо наворачивать собственных обработчиков OnKey...
Ответ отправил: Сухомлин Кирилл Владимирович (статус: 9-ый класс)
Ответ отправлен: 12.06.2006, 05:26 Оценка за ответ: 5 Комментарий оценки: Приму к сведению, вам тоже спасибо
Отвечает: Serg_6667
Здравствуйте, Ustas!
по первому вопросу все говорит пример в приложении. на нажатие кнопки происходит присваивание
по второму вопросу тоже, но лучше использовать maskedit. Просто обрабатывается событие OnEnter
Приложение:
Ответ отправил: Serg_6667 (статус: 2-ой класс)
Ответ отправлен: 14.06.2006, 18:38 Оценка за ответ: 5
Вопрос № 45.919
Как определить моему приложению полный путь ярлыка, которым оно запущено(Delhpi5; желательно для любой ОС, но достаточно для XP).
Я написал приложение, которое выполняется, инсталлируется и деинсталлируется одним и тем же exe-шником. Не могу решить проблему отличия запуска приложения из ПУСКПРОГРАММЫ..., например, ярлыками "Выполнение..." и "Удаление...", которые бы открывали разные панели диалогов при запуске приложения. Скорее всего это должно быть ShellApi. Перечитал кучу литературы бумажной и электронной, но ничего не нашел - скорее всего не хватило ума и знаний, поэтому обращаюсь к Вам. Заранее благодарен.
Отвечает: Tamashev Denis M
Здравствуйте, Брылкин Константин Юрьевич!
Поиши в инете !
Например известная игра Counter-Strike !
Запускаеца от .exe Half-Life !
в разширении просто вписывается -game cstrike !
Вот и ты зделай чтоб запускать -start
для удаления -unistall !
А для практики ничего подсказать немогу !
Ответ отправил: Tamashev Denis M (статус: 2-ой класс)
Ответ отправлен: 11.06.2006, 19:56
Отвечает: DeVampir
Здравствуйте, Брылкин Константин Юрьевич!
В создаваемых ярлыках пропишите различные параметры (например, -r (для запуска), -u (для удаления)) А при запуске читайте их с помощью функции ParamStr (function ParamStr(Index: Integer): string;) ей надо указать номер параметра (у вас будет 1) и она выдаст вам его содержимое в строке (ее сравниваете с возможными и определяете что запускать). Нулевой параметр будет именем запущенного файла.
А посчитать параметры можно фугкцией ParamCount (function ParamCount: Integer;)
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 1-ый класс)
Ответ отправлен: 11.06.2006, 21:47
Вопрос № 45.940
Написал ф-цию, которая возвращает значение типа TStrings,
При попытке обработать его возникает ошибка.
Подскажите как все сделать правильно.
Приложение:
Отправлен: 11.06.2006, 22:20
Вопрос задал: Mo-skin (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Mo-skin!
// для примера:
function MyStrings: Tstrings;
var
i:integer;
begin
//Вот тут изменения :)
MyStrings:=TStringList.Create;
//Конец изменений :)
For i:=1 to 10 do
begin
MyStrings.Add(FloatToStr(i));
end;
end;
MyStrings не создан, а Вы к нему обращаетесь - вот тут и ошибочка.
--------- Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 11.06.2006, 22:33 Оценка за ответ: 5 Комментарий оценки: Ага, все понял!
Отвечает: Татьяна
Здравствуйте, Mo-skin!
Ну так вы просто не создаете экземпляр класса, см. приложение, так должно работать
Приложение:
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 11.06.2006, 22:34 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ1
Отвечает: DeVampir
Здравствуйте, Mo-skin!
Ошибка возникает потому что вы к функции (а не к переменной) обращаетесь как к массиву. Попробуйте создать переменную tmp типа TStrings, потом присвоить ей результат функции и добавить строку из tmp в ListBox1
Хотя, не пойму зачем все это делать? Может лучше создать дочерний класс от TStrings и в нем написать функцию заполнения, а потом просто вызывать ее из объектов.
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 1-ый класс)
Ответ отправлен: 11.06.2006, 22:42
Вопрос № 45.949
Здравствуйте !!! Имеется строка string f:='45*X*X*X*X+10*X*X*X+86*X*X+49*X+88' и функция
function Func(x:Real): Real;
begin
Func:=strtofloat(f); // Trim(f)
end;
Как сделать так чтобы эта строка f преобразовывалась в функцию 45*X*X*X*X+10*X*X*X+86*X*X+49*X+88
чтобы затем можно было передать параметр Х и корректно её расчитывать. Функция StrToFloat не помогает,
У меня выскакивает ошибка '45*X*X*X*X+10*X*X*X+86*X*X+49*X+88' is not valid floating point value
Отправлен: 11.06.2006, 23:35
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Jadd
Здравствуйте, Rewer8!
ну и правильно Вам пишет. При конвертации strtofloat воспринимает эту строку как строку, т.к. есть символы *,+ и Х. Чтобы правильно работало, надо пропарсить строку, т.е. разбить на операнды и операции. Затем, проанализировать порядок операций в соответсвие с правилами математики. Ну и тд. В сети много исходников таких вот "трансляторов" выражений. Успехов.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 11.06.2006, 23:47
Отвечает: Gh0stik
Здравствуйте, Rewer8!
Вам нужно использовать обратную польскую запись, т.е. разобрать формулу на составные части в соответствии с правилами и порядком дяйствия арефметических операций.
Так же ОЧЕНЬ вам рекомендую книгу:
Автор: Архангельский А.Я.
Название: Приемы программирования в Delphi
Кол-во страниц: 784.
В ней Вы найдете более подробное описание работы с польской записью. Так же там приведен листинг программы написаной на Delphi.
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаються события на земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 12.06.2006, 10:39