Вопрос № 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
Здравствуйте уважаемые эксперты. Каков алгоритм(именно словесное описание) для того чтобы в считанном тексте подсчитать количество гласных символов? Подскажите пожалуйста.
Отвечает: Ерёмин Андрей
Здравствуйте, SunnyKiller!
Найти все гласные буквы можно с помощью цикла. Пробегаем по всему тексту и каждый из символов сравниваем с нужным набором (в данном случае это гласные буквы - "аеёиоуыэюя"). Кроме того, заводим-переменную счётчик. Перед началом поиска присваиваем ей значение 0, а при каждом нахождении символа из набора увеличиваем на единицу. В результате эта переменная и будет содержать число гласных букв в тексте.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Функция, находящая количество гласных букв в строке:
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; Правильно.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Делаю тестову программу, нужно чтобы пользователь не смог закрыть программу во время её работы, а именно мне нужно чтобы во время программы:
1.на заднем плане вместо рабочего стола был фон
2. чтобы отсутствовали кнопки свернуть, развернуть, закрыть окно программы
3.чтобы не работали сочетания клавиш ctr+alt+del, alt+tab, alt+F4 и т.д.
Теперь фон вместо десктопа - это содержимое Вашей формы, т.к. она теперь стала распахнутой на весь экран.
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, что сделать чтобы эта окно не вылазило.
Отвечает: Ерёмин Андрей
Здравствуйте, Сидоров Александр Александрович!
С помощью стандартного блока обработки ошибок: try
if not ClientSocket1.Active then
ClientSocket1.Active:=true;
except
MessageDlg('Ошибка соединения.',mtError[mbOk],0);
Exit
end;
Либо аналогичным образом через try..finally.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.