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

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


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

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

Выпуск № 827
от 01.06.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 464, Экспертов: 81
В номере:Вопросов: 5, Ответов: 8


Вопрос № 88725: Здравствуйте уважаемые эксперты. Каков алгоритм(именно словесное описание) для того чтобы в считанном тексте подсчитать количество гласных символов? Подскажите пожалуйста....
Вопрос № 88726: Здравствуйте уважаемые!У меня к вам вопрос по StringGrid .Что бы сделать таблицу с разными по ширине величинами колонок надо каждой задать значение свойства ColWidths[i],а не поможете ли с кодом, который бы находил в каждой колонке самое длинное слов...
Вопрос № 88784: Здравствуйте эксперты, при выполнении комынды erase(fl) вылезает ошибка error 32, что это?...
Вопрос № 88837: Делаю тестову программу, нужно чтобы пользователь не смог закрыть программу во время её работы, а именно мне нужно чтобы во время программы: 1.на заднем плане вместо рабочего стола был фон 2. чтобы отсутствовали кнопки свернуть, развернуть,...
Вопрос № 88839: при подключении к сети {if not ClientSocket1.Active then ClientSocket1.Active:=true;} если на сервере не запущена программа принимающая сообщения от клиента, появляется окно с ошибкой ошибка Asynchronous socket error 10061, что сделать чтобы эта ...

Вопрос № 88.725
Здравствуйте уважаемые эксперты. Каков алгоритм(именно словесное описание) для того чтобы в считанном тексте подсчитать количество гласных символов? Подскажите пожалуйста.
Отправлен: 26.05.2007, 22:22
Вопрос задал: SunnyKiller (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ерёмин Андрей
Здравствуйте, SunnyKiller!
Найти все гласные буквы можно с помощью цикла. Пробегаем по всему тексту и каждый из символов сравниваем с нужным набором (в данном случае это гласные буквы - "аеёиоуыэюя"). Кроме того, заводим-переменную счётчик. Перед началом поиска присваиваем ей значение 0, а при каждом нахождении символа из набора увеличиваем на единицу. В результате эта переменная и будет содержать число гласных букв в тексте.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 26.05.2007, 22:27
Оценка за ответ: 5

Отвечает: Устинов С.Е.
Здравствуйте, SunnyKiller!

Функция, находящая количество гласных букв в строке:

function GlCount(s: string):integer;
var i,count:integer;
M:set of char;
begin
M:=['а','е','ё','и','о','у','ы','э','ю','я'];
count:=0;
for i:=1 to Length(s) do if LowerCase(s[i])[1] in M then inc(count);
GlCount:=count;
end;

Использовать можно так:

showmessage(inttostr(GlCount(Edit1.Text)));


Удачи!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 27.05.2007, 12:35
Оценка за ответ: 5


Вопрос № 88.726
Здравствуйте уважаемые!У меня к вам вопрос по StringGrid .Что бы сделать таблицу с разными по ширине величинами колонок надо каждой задать значение свойства ColWidths[i],а не поможете ли с кодом, который бы находил в каждой колонке самое длинное слово и по нему задавал бы ширину колонки и так по всей таблице.
Отправлен: 26.05.2007, 22:37
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, GAZOT!
Ширину текста можно узнать с помощью функции TextWidth() объекта Canvas. Код для автоматического определения ширины см. в приложении. Единственное неудобство - к найденному максимальному значению нужно прибавить несколько единиц, т.к. текст не прижат вплотную к линиям сетки, а на некотором расстоянии отстоит от неё. Опытным путём получилось, что значение +5 как раз кстати. Удачи!

Приложение:

---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 26.05.2007, 22:52
Оценка за ответ: 5
Комментарий оценки:
спасибо за быстрый ответ

Отвечает: Louken
Здравствуйте, GAZOT!

Есть в инете такой проект - DelphiWorld:
http://delphiworld.narod.ru/dw.html
В котором 5005 статей на разную тему. Все статьи можно бесплатно себе скачать.
Есть там и ответ на Ваш вопрос:
http://delphiworld.narod.ru/base/stringgrid_cols_autosize.html
Советую Вам начинать поиск ответа на Ваши вопросы, сначало, с просмотра статей на DelphiWorld.
PS
Надеюсь мой ответ не будет воспринят как реклама.
Ответ отправил: Louken (статус: 3-ий класс)
Ответ отправлен: 26.05.2007, 23:48
Оценка за ответ: 5
Комментарий оценки:
спасибо за хороший совет уже скачал


Вопрос № 88.784
Здравствуйте эксперты, при выполнении комынды erase(fl) вылезает ошибка error 32, что это?
Отправлен: 27.05.2007, 12:48
Вопрос задал: Tribak (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: Ерёмин Андрей
Здравствуйте, Tribak!
Ошибка ввода/вывода (I/O, #32), вероятно, возникает из-за того, что вы не закрыли файл перед вызовом команды Erase(), а это требование обязательно. Пример:
var f: file;
begin
assignfile(f,'C:1.txt');
reset(f);
...
erase(f); <<
closefile(f); <<
end;
Неправильно!

var f: file;
begin
assignfile(f,'C:1.txt');
reset(f);
...
closefile(f); <<
erase(f); <<
end;
Правильно.

---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 27.05.2007, 13:17
Оценка за ответ: 5


Вопрос № 88.837
Делаю тестову программу, нужно чтобы пользователь не смог закрыть программу во время её работы, а именно мне нужно чтобы во время программы:
1.на заднем плане вместо рабочего стола был фон
2. чтобы отсутствовали кнопки свернуть, развернуть, закрыть окно программы
3.чтобы не работали сочетания клавиш ctr+alt+del, alt+tab, alt+F4 и т.д.
Отправлен: 27.05.2007, 18:14
Вопрос задал: Сидоров Александр Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: DimonSoft
Здравствуйте, Сидоров Александр Александрович!

В первую очередь проставьте у формы следующие свойства...

WindowState=wsMaximized
Formstyle="fsStayOnTop"
Borderstyle="bsNone"

Теперь фон вместо десктопа - это содержимое Вашей формы, т.к. она теперь стала распахнутой на весь экран.

Alt+F4 отключается примерно так (самый простой вариант)...

procedure TForm1.Form1Click(Sender:TObject);
begin
Form1.Tag:=1;
end;

procedure TForm1.Form1CloseQuery(Sender:TObject; var CanClose:Boolean);
begin
CanClose:=(Form1.Tag=1);
end;

Свойство Tag должно быть при старте программы равно нулю. В данном случае используется событие формы OnCloseQuery. Для того, чтобы завершить работу с программой было возможно, по щелчку на форме свойству Tag присваивается 1.

С Ctrl+Alt+Del и Alt+Tab можно справиться только в Windows 9x. Для этого воспользуйтесь функцией SystemParametersInfo() так...

SystemParametersInfo(97,Word(True),nil,0); //Для отключения сочетаний
SystemParametersInfo(97,Word(False),nil,0); //Для включения сочетаний
Вместо 97 можете написать константу SPI_SCREENSAVERRUNNING (она как раз равна 97).

В Windows 2000/XP реализовать подобные вещи сложно. Мне известно, что отключить Alt+Tab можно с использованием функций управления несколькими рабочими столами, но они не поддерживаются старыми ОС, поэтому придётся создавать два отдельных EXE-файла. Ctrl+Alt+Del отключить почти нереально, можно положить на форму TTimer с небольшим интервалом и по таймеру проверять, не появилось ли окно диспетчера задач, и, если появилось, закрывать есть (функциями FindWindow() и SendMessage() соответственно).

По части последнего могу только сказать, что в MicroSoft сделали всё возможное, чтобы обеспечить весёлую жизнь программисту. Дам парочку ссылок: http://www.DimonSoft.ueuo.com/OS.php - это по поводу Windows, а на самом сайте в разделе "Программы" я выложил программу-шутку, которая делает приблизительно то, что Вам надо (кроме поддержки Windows 2000/XP).

С уважением, Оношко Дмитрий.

P.S. Если захотите выкачать программу, будьте готовы к тому, что ссылки, возможно, устарели, поэтому при случае пишите с просьбой обновить.
Ответ отправил: DimonSoft (статус: 2-ой класс)
Ответ отправлен: 27.05.2007, 21:04

Отвечает: Dragon
Здравствуйте, Сидоров Александр Александрович!
ctr+alt+del можно отключить так:

в uses добавляем Registry

procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg:=TRegIniFile.Create();
Reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem', true);
reg.WriteInteger('DisableTaskMgr', 1);
reg.Free;
end;

для включения неоходимо поменять 1 на 0 в строке
reg.WriteInteger('DisableTaskMgr', 1);
Ответ отправил: Dragon (статус: 2-ой класс)
Ответ отправлен: 27.05.2007, 21:23


Вопрос № 88.839
при подключении к сети {if not ClientSocket1.Active then ClientSocket1.Active:=true;} если на сервере не запущена программа принимающая сообщения от клиента, появляется окно с ошибкой
ошибка Asynchronous socket error 10061, что сделать чтобы эта окно не вылазило.
Отправлен: 27.05.2007, 18:32
Вопрос задал: Сидоров Александр Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Сидоров Александр Александрович!
С помощью стандартного блока обработки ошибок:
try
if not ClientSocket1.Active then
ClientSocket1.Active:=true;
except
MessageDlg('Ошибка соединения.',mtError[mbOk],0);
Exit
end;

Либо аналогичным образом через try..finally.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 27.05.2007, 18:50
Оценка за ответ: 5


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

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

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

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

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


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


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

В избранное