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

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


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

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

Выпуск № 512
от 24.06.2006, 12:35

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


Вопрос № 46587: Здравствуйте у меня такая вот проблема.... procedure TForm1.Button1Click(Sender: TObject); var i : Integer; begin for i:=0 to RichEdit1.Lines.Count-1 do begin if StrPos(PChar(UpperCase(Edit1.Text)),PChar(...
Вопрос № 46632: Здравствуйте! Есть несколько вопросов: 1. Мне надо чтоб моя программы при запуске была не видна. Пробовал делать form1.hide в onShow формы? не работает. 2. RichEdit -> Когда заполняю его строками последняя строка всегда остаеться ...
Вопрос № 46647: Уважаемые эксперты! Такой вот вопрос: Delphi7, создаю новый проект приложения. Добавляю следующие компоненты - Lable1, Label2, Label3 (:TLabel - стандартные) Button1 (:TButton - тоже стандарт). В обработчике TForm1.ButtonClick(Sender:TObject...
Вопрос № 46649: Допустим у меня имеется 2 кнопкb, поле edit, и DBGrid. как получить активный урл из int explorer при клике на 1 кнопке и перенести в поле Edit, а при клике на второй кнопке перенести адрес из Edit в DBGrid?...
Вопрос № 46651: Здравствуйте уважаемые эксперты! у меня две базы DBF в одной записи заглавными буквами во-второй начинается с заглавной остальные строчные.из-за этого у меня не получается их сравнивать.программа на Delphi7. как сделать чтобы базу переделать так, что...
Вопрос № 46653: Доброго времени суток уважаемые эксперты. Пишу простенькое приложение, с несколькими формами(3), и не знаю как сделать приожение, чтобы при открытии 2й формы - 1я прекращала свое существование, а при открытии 3й - 2я. Какие свойства надо проп...
Вопрос № 46657: Здравствуйте уважаемые эксперты! Очень надо рисовать трехмерные графики на Делфи7, уже с неделю ищу что-нибудь по этому поводу - не могу найти, подскажите плиз, кто знает выход из данной ситуации )...

Вопрос № 46.587
Здравствуйте

у меня такая вот проблема....

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to RichEdit1.Lines.Count-1 do
begin
if StrPos(PChar(UpperCase(Edit1.Text)),PChar(UpperCase(RichEdit1.Lines[i])))<>nil then
begin
ShowMessage('УРЯЯ !!! Нашло !!!');
end;
end;
end;

проверяю - содержит ли строка RichEdit какуой-то текст Edit,
но если в RichEdit это написать большими буквами то не находит
вроде UpperCase поставил не помогает

Прикол в том, что если Например если в Edit вписать www а в RichEdit WwW то находит,
а если слово кирилицей написать, то не находит ццц - ЦцЦ
Отправлен: 18.06.2006, 17:24
Вопрос задал: source (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, source!
1) Зачем вы используете StrPos()? Можно ведь простой Pos() использовать. В принципе, разницы-то и нет, но вот результат... Зачем вы туда nil-то прикрутили? Это значение вообще не подходит к результату такой функции. Да и знак меньше "<" неуместен - номер позиции не может быть отрицательным. Перепишите условие так: "If (...) > 0 Then ...". Это будет действительно правильно.
2) Эти стандартные функции не работают с русским алфавитом, поэтому нужно написать свои. Подробнее >>
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 18.06.2006, 17:35

Отвечает: Савенко Вадим Иванович
Здравствуйте, source!
Так ведь для русских букв нужно использовать AnsiUpperCase, а UpperCase русских букв не понимает
Ответ отправил: Савенко Вадим Иванович (статус: 2-ой класс)
Ответ отправлен: 18.06.2006, 17:35
Оценка за ответ: 5


Вопрос № 46.632
Здравствуйте!

Есть несколько вопросов:
1. Мне надо чтоб моя программы при запуске была не видна. Пробовал делать form1.hide в onShow формы? не работает.
2. RichEdit -> Когда заполняю его строками последняя строка всегда остаеться пустой. Можно от этой строчки как нибуть избавиться?
(Если что подробно могу в мини форуме)
3. Как можно выводить в своей программе то что написанно в консоли.
напиример я запустил консольное приложение - мне надо скрыть окно консоли и вывести в RichEdit все что порограмма вернула.

Использую BDS 2006.

Заранее спасибо!
Отправлен: 18.06.2006, 23:31
Вопрос задал: Alexo (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Олекса aka SoW
Здравствуйте, Alexo!
Ваш код не действует потому, что вы прячете форму, хотя она еще не тобразилась на экране. Чтобы окно пряталось при запуске, нужно в коде проекта дописать несколько строк (см. приложение). Успеха!

Приложение:

---------
Вік живи - вік учись.

Ответ отправил: Олекса aka SoW (статус: 2-ой класс)
Ответ отправлен: 18.06.2006, 23:56

Отвечает: Злоумышленник
Здравствуйте, Alexo!
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.ShowMainForm := false;{Прячем главную форму}
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
---------
Стандарт есть легкоусвояемая форма, маскирующая присутствие или отсутствие содержания.
Ответ отправил: Злоумышленник (статус: 9-ый класс)
Ответ отправлен: 19.06.2006, 00:05
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Alexo!
2. По-моему - это особенность отображения всех компонентов из этой серии (TMemo, TRichEdit). Можно попробовать удалять последнюю строку. Или последний символ:
RichEdit1.SelStart := length(RichEdit1.Text) - 1;
RichEdit1.SelLength := 1;
RichEdit1.ClearSelection;
ну или что-то в этом духе. Может быть, можно сделать и по-другому - я знаю только такой способ.
3. Копайте в сторону FindWindowEx... хотя это скорее про визуальные формы, а не окна консоли. Впрочем, больше ничего посоветовать все равно не могу.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 19.06.2006, 00:58

Отвечает: Евгения
Здравствуйте, Alexo!
2. Это происходит, потому что в конце первой строки стоит перенос на другую строчку. Можно сделать так:
Перед началом использования
RichEdit1.Text:='';
Потом заполнить эту первую строчку отдельно:
Richedit1.lines[0]:='Начало:';
Потом остальные:
for i:=1 to 5 do
RichEdit1.lines.Add(inttostr(i));
Тогда в конце не будет пустой строчки.

Счастливо!
---------
Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?
Ответ отправила: Евгения (статус: 7-ой класс)
Ответ отправлен: 19.06.2006, 01:09
Оценка за ответ: 5
Комментарий оценки:
спасибо все работает!


Вопрос № 46.647
Уважаемые эксперты!
Такой вот вопрос: Delphi7, создаю новый проект приложения. Добавляю следующие компоненты - Lable1, Label2, Label3 (:TLabel - стандартные) Button1 (:TButton - тоже стандарт).
В обработчике TForm1.ButtonClick(Sender:TObject) пишу см. приложение.
После компиляции при нажатии на Button возникает интересная ситуация с Label.
Если не лень, проверьте сами, это не долго.
Не могу понять почему так получается.
За объяснения заранее благодарен.

Приложение:

Отправлен: 19.06.2006, 06:49
Вопрос задал: Cyrax (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 14)

Отвечает: Савенко Вадим Иванович
Здравствуйте, Cyrax!
Может быть Вы хотели вот это получить?
При нажатии получится строка 'Abcd606162'

Приложение:

Ответ отправил: Савенко Вадим Иванович (статус: 2-ой класс)
Ответ отправлен: 19.06.2006, 07:28
Оценка за ответ: 4

Отвечает: Маренич Владимир
Здравствуйте, Cyrax!
Даже без проверки можно сразу сказать, что Вы не совсем понимаете назначение функций Chr, Ord и организацию строк в Delphi... Читайте больше литературы.
Замечания:
1. Ord(60) всегда будет возвращать целое число 60. Т.е. Ord(60) эквивалентно 60. Другими словами абсолютно лишняя конструкция.
2. После st:='Abcd' строка будет иметь длину 4 символа и допустимо обращение к ее символам через индекс от 1 до 4 (st[1]...st[4]). А у Вас в цикле обращение к 60..62 символам, что должно вызвать исключение (обращение к не выделенной памяти).

Если Вы хотели получить результат '<=>d', то напишите так:
for i:=1 to 3 do st[i]:=Chr(i+59);
Здесь идет замена символов в строке.

Если Вы хотели получить результат 'Abcd<=>', то напишите так:
for i:=60 to 61 do st:=st+Chr(i);
Здесь идет добавление символов в конец строки.
Можно еще так:
SetLength(st, 7); //установка новой длины строки.
for i:=1 to 3 do st[i+4]:=Chr(i+59);

Всега помните, что строка - это миссив символов (char), т.е. похоже на объявление типа:
st: array[1..Length(st)] of char;
функция Length(st) возвращает текущую длину строки st.

Желаю удачи и творческих успехов.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 20.06.2006, 11:50
Оценка за ответ: 4


Вопрос № 46.649
Допустим у меня имеется 2 кнопкb, поле edit, и DBGrid. как получить активный урл из int explorer при клике на 1 кнопке и перенести в поле Edit, а при клике на второй кнопке перенести адрес из Edit в DBGrid?
Отправлен: 19.06.2006, 08:32
Вопрос задал: Ghora (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Ghora!
FindNextWnd(здесь 0 либо Application.Handle, 'Microsoft Internet Explorer');
А далее с помощью FindWindowEx() находите элемент для ввода URL на окне IE - хэндл его вы уже видите как получить.
Дерзайте!

Приложение:

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 19.06.2006, 10:51

Отвечает: chikanok
Здравствуйте, Ghora!
В приложении код модуля совершающий все эти действия,но DbGrid отображает содержимое Базы данных поэтому урл вводиться в саму базу через запрос!
На форме :Edit1,Button1,Button2,Query1;

То Сухомлин Кирилл Владимирович : Мутная функция!

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 19.06.2006, 23:52


Вопрос № 46.651
Здравствуйте уважаемые эксперты! у меня две базы DBF в одной записи заглавными буквами во-второй начинается с заглавной остальные строчные.из-за этого у меня не получается их сравнивать.программа на Delphi7. как сделать чтобы базу переделать так, чтобы начинались записи с заглавной а остальные были строчные?спасибо!
Отправлен: 19.06.2006, 08:54
Вопрос задал: Anatolyj (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 9)

Отвечает: Маренич Владимир
Здравствуйте, Anatolyj!
Добавте на TTable (в примере Table1) и настройте ее на таблицу, которую хотите исправить. Дальше вызовите процедуру из приложения. Не забудьте указать имена полей. Преобразуйте только символьные поля. Numeric, Logical и Date поля преобразовывать не надо.

Удачи.

Приложение:

Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 20.06.2006, 12:04
Оценка за ответ: 5


Вопрос № 46.653
Доброго времени суток уважаемые эксперты.
Пишу простенькое приложение, с несколькими формами(3), и не знаю как сделать приожение, чтобы при открытии 2й формы - 1я прекращала свое существование, а при открытии 3й - 2я.
Какие свойства надо прописывать для этого?
Отправлен: 19.06.2006, 09:12
Вопрос задал: Serpenser (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Shcherbakov Anton
Здравствуйте, Serpenser!
попытайтесь так: в обработчике onCreate второй формы вы вызываете Form1.Free;
Ответ отправил: Shcherbakov Anton (статус: 2-ой класс)
Ответ отправлен: 19.06.2006, 09:21

Отвечает: LanK
Здравствуйте, Serpenser!

Уф, один совет другого лучше... :)

Попытаюсь тоже ;) ...

Проблема в том, что Ваша 1ая форма является ГЛАВНОЙ. При её закрытии - закроется ПРИЛОЖЕНИЕ.

Поэтому совет Shcherbakov Anton - верен только для закрытия 2ой и 3ей форм.

Смотрите готовый проект в приложении:

Приложение:

---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!

Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 19.06.2006, 11:04


Вопрос № 46.657
Здравствуйте уважаемые эксперты! Очень надо рисовать трехмерные графики на Делфи7, уже с неделю ищу что-нибудь по этому поводу - не могу найти, подскажите плиз, кто знает выход из данной ситуации )
Отправлен: 19.06.2006, 09:23
Вопрос задал: Minor (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: Решетник Д
Здравствуйте, Minor!
Если у Вас есть время разбираться в графических АПИ (вроде DirectX, OpenGL), то можете для первого случая начать с компонента DelphiX, а во втором закачть очень хорошую доку по сабжу - http://www.pmg.org.ru/nehe/nehe.chm
А лучше всего (если задача не очень сложная, а просто рисовать графики), то НУЖНО рисовать через Windows GDI (на канвасе).
При этом использовать формулы преобразования 3Д в 2Д координаты. - подробно в delphiworld'e - delphiworld.narod.ru
"Существуют стандартные фомулы проецирования:

x` = x*FOV/z + xRes/2
y` = y*FOV/z + yRes/2


x`, y` - координаты искомой точки на плоскости;
x,y,z - координаты исходной точки в пространстве;
xRes,yRes - графическое разрешение экрана;
FOV - угол обзора камеры.
камера находится в (0;0;0), и направлена по оси z, такая камера называется "стандартной".

"
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 8-ой класс)
Ответ отправлен: 19.06.2006, 09:57
Оценка за ответ: 5
Комментарий оценки:
буду пробовать формулы проецирования

Отвечает: Харитонов Дмитрий Валентинович
Здравствуйте, Minor!
В седьмой версии компонента TeeChart вроде есть такая возможность. Могу сслыочку в приват скинуть, по понятным причинам.
Ответ отправил: Харитонов Дмитрий Валентинович (статус: 2-ой класс)
Ответ отправлен: 19.06.2006, 10:33
Оценка за ответ: 5
Комментарий оценки:
кидай, буду рад )


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное