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

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


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

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

Выпуск № 426
от 28.03.2006, 02:05

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


Вопрос № 38178: Уважаемые, эксперты! Кто-нибудь знает какой-нибудь бесплатный компонент для построения древовидной, иерархической структуры. Как, например, реализовано при построении гениалогического дерева, или например структура пирамиды... Очень нужно. Заранее ог...
Вопрос № 38207: День добрый господа "Присяжные и заседатели" Ставилась такая задача: изменить рисунки в Cards.dll и скопировать его обратно. при копировании обратно в папку system32 старая Dll восстанавливалась из кэша а при удалении ее от туда выскаки...
Вопрос № 38216: Здраствуй народ. Пользуюсь TJvDateEdit. Как отследить изменение даты, когда она выбрана из календаря?...
Вопрос № 38238: Доброе время суток Не могли бы Вы помочь мне со следущей програмкой У меня задание: На кнопке(которая на форме) щелчок при этом - форма закрашивается случайным цветом Так вот мне наобходимо использовать randomize??? Если да то как...
Вопрос № 38239: Здравствуйте уважаемые эксперты! Я хотел бы узнать как наибыстрейшим способом осуществить поиск строки в текстовом файле, содержащим около 240000 слов. Я пробовал перебором, но если строка находится в конце файла то это занимает минимум секунд 5....
Вопрос № 38251: Здравствуйте. К сожаленю я так и не получил ответ на свой вопрос...но я попробую взять измором :) Так вот, я написал программу-тест, она читает вопросы из файла, причем файл устроен так 1 строка - сам вопрос 2 строка - 1 вариа...
Вопрос № 38254: ПОмогите чем можете... Код программы, ссылки или прочее, что может мне помочь в создании и кодировке алгоритма игры "Крестики-Нолики" на поле больше чем 3 на 3... Тоесть неплохо былобы мне организовать алгоритм который будет эмулир...
Вопрос № 38259: Значит есть такой простенький вопрос. Хотелось бы прочитать подробное описание функции copy... Дело в том, что мне необходимо строку вида например '123 455..n', где неопределнное количество символов n, преобразовать на выходе в две переменные s:='123...

Вопрос № 38.178
Уважаемые, эксперты! Кто-нибудь знает какой-нибудь бесплатный компонент для построения древовидной, иерархической структуры. Как, например, реализовано при построении гениалогического дерева, или например структура пирамиды... Очень нужно. Заранее огромное Вам спасибо.
Отправлен: 22.03.2006, 07:35
Вопрос задал: xXx (статус: 5-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, xXx!
В поставке Дельфи, в палитре компонентов, есть компонент TTreeView - и бесплатный, и древовидный. Может быть Вы что-то другое имели в виду? Уточните в таком случае.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.03.2006, 08:01


Вопрос № 38.207
День добрый господа "Присяжные и заседатели"
Ставилась такая задача: изменить рисунки в Cards.dll и скопировать его обратно. при копировании обратно в папку system32 старая Dll восстанавливалась из кэша а при удалении ее от туда выскакивало окно что Dllка не родная и просила вставить диск с инсталяхой XP
Это копирование я хочу делать из своей инсталяхи написанной на Делфе , от сюда вытекает вопрос как обмануть винды (они же такие глупые) чтоб не пугать конечных пользователей измененной библиотеки непонятными и с виду опасными (для них) окошками

Вопрос может и не сюда но надеюсь кто поможет
Заранее спасибо
Отправлен: 22.03.2006, 12:52
Вопрос задал: Миронов Алексей Игоревич (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Diman_A
Здравствуйте, Миронов Алексей Игоревич!
Для этого нужно отключить System Files Protection (SFC). Сделать это можно в реестре:
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
SfcDisable (тип DWORD), параметр может принимать различные значения, например, утилита XP Tweaker для отключения SFC ставит значение hex:ffffff9d (4294967197) или 0 для включения.
Если не знаешь, как записывать инфу в реестр, пиши во внутреннюю почту.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 22.03.2006, 15:37
Оценка за ответ: 5
Комментарий оценки:
Должно помочь чтото вроде этого и искал
делать буд так
1. Отключаю SFC
2. Пишу файлы
3. Восстанавливаю старое значение

Спасибо

Отвечает: nimoid
Здравствуйте, Миронов Алексей Игоревич!
Еще как вариант можно попробовать заменять сразу 2 файла - один твой, а другой вот тут - C:WINDOWSsystem32dllcache
---------
Пишем баги на любые патчи :-]
Ответ отправил: nimoid (статус: 7-ой класс)
Ответ отправлен: 23.03.2006, 08:23


Вопрос № 38.216
Здраствуй народ. Пользуюсь TJvDateEdit. Как отследить изменение даты, когда она выбрана из календаря?
Отправлен: 22.03.2006, 14:18
Вопрос задал: Карасев Алексей Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Карасев Алексей Александрович!
Честно говоря, не вдумывался, но это либо событие OnAcceptDate(), либо OnChange(). Проверить можно экспериментально.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 22.03.2006, 17:19


Вопрос № 38.238
Доброе время суток
Не могли бы Вы помочь мне со следущей програмкой
У меня задание:
На кнопке(которая на форме) щелчок при этом - форма закрашивается случайным цветом
Так вот мне наобходимо использовать randomize???
Если да то как поместить туда цвета?
Благодарю!
Отправлен: 22.03.2006, 18:01
Вопрос задал: Sexy (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ataman N. N.
Здравствуйте, Sexy!
Можно так
----------------
randomize;
Form1.Color := Random(16777215);//16777215 - максимальный (белый) цвет
-----------------------------
или так
---------------------
var R, G, B: Byte;
begin
randomize;
R := Random(255);
G := Random(255);
B := Random(255);
Form1.Color := RGB(R, G, B);
end;
Ответ отправил: Ataman N. N. (статус: 10-ый класс)
Ответ отправлен: 22.03.2006, 18:54

Отвечает: Leshiy2006
Здравствуйте, Sexy! Примерно так:
Randomize;
Form1.Color:=RGB(random(255),random(255),random(255));
Ответ отправил: Leshiy2006 (статус: 5-ый класс)
Ответ отправлен: 22.03.2006, 22:34

Отвечает: Malysh
Здравствуйте, Sexy!
Как известно существует формат передачи цветов RGB. Т. е. он состоит из трех состовляющих красный, зеленый и синий. Каждая из этих состовляющих лежит в пределах 0..255. Поэтому логично делать три случайных состовляющих а потом делать Color:=RGB(r,g,b), где r,g,b-случайные в пределах 0..255.
Ответ отправил: Malysh (статус: Студент)
Ответ отправлен: 23.03.2006, 00:04

Отвечает: sir henry
Здравствуйте, Sexy!
В randomize цвет поместить нельзя, эта процедура всего-лишь запускает генератор псевдослучайных чисел. Можно использовать этот генератор для выбора случайного цвета:
Randomize; {Запускаем генератор}
r := Random(255); {Генерируем красную компоненту цвета в пределах 0..255}
g := Random(255); {Генерируем зеленую компоненту цвета в пределах 0..255}
b := Random(255); {Генерируем голубую компоненту цвета в пределах 0..255}
Form1.Color := RGB(r, g, b); {Формируем цвет формы на основе этих трех компонент}
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.03.2006, 06:20

Отвечает: Lexus
Здравствуйте, Sexy!

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
form1.color:=rgb(random(256),random(256),random(256));
end;

Для задания цвета используется функция RGB которая "собирает" цвет из состовляющих: красного, зеленого, синего. Значения могут быть от 0 до 255. В данном случае случайные числа из этого диапозона
Ответ отправил: Lexus (статус: 2-ой класс)
Ответ отправлен: 23.03.2006, 06:24


Вопрос № 38.239
Здравствуйте уважаемые эксперты!
Я хотел бы узнать как наибыстрейшим способом осуществить поиск строки в текстовом файле, содержащим около 240000 слов. Я пробовал перебором, но если строка находится в конце файла то это занимает минимум секунд 5. Не подскажите какой-нибудь быстрый и рабочий код.
Отправлен: 22.03.2006, 18:24
Вопрос задал: Yxo (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лучников Ю.В.
Здравствуйте, Yxo!

Если вы работаете с собственным текстовым файлом (какая либо текстовая БД), то для начала было бы неплохо структурировать данные для более оптимального поиска. Статьи по структурам данных вы можете найти здесь.

По поиску вам пригодятся соответствующие алгоритмы.
Их реализации с описанием вы можете найти здесь.

Успехов!
Ответ отправил: Лучников Ю.В. (статус: Практикант)
Ответ отправлен: 22.03.2006, 19:27

Отвечает: Cheater76
Здравствуйте, Yxo!
Посмотри ссылочку может что поможет
http://www.delphirus.com.ru/modules.php?name=Pages&pa=showpage&pid=749
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 22.03.2006, 19:33

Отвечает: sir henry
Здравствуйте, Yxo!
Дело в том, что если Вы используете однократый поиск, то никакого более быстрого способа, чем перебор слов не существует в принципе. Если же Ваш поиск повторяется неоднократно, то здесь уже можно получить довольно значительный выигрыщ по времени, за счет того, что при первом поиске все слова, содержащиеся в файле, индексируются и уже повторный поиск проводится не в файле. а в индексе, а поскольку индекс будет выстроен скажем по алфавиту,слово Вы найдете очень быстро.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.03.2006, 06:30


Вопрос № 38.251
Здравствуйте.
К сожаленю я так и не получил ответ на свой вопрос...но я попробую взять измором :)

Так вот, я написал программу-тест, она читает вопросы из файла, причем файл устроен так
1 строка - сам вопрос
2 строка - 1 вариант ответа
3 строка - 2 вариант ответа
4 строка - номер правильного варинта ответа
........и так весь файл

У меня в программе досадный баг - если пользователь прошел тест до конца(а в первый раз он почемуто проходится до конца), то запустив тест снова он проходит до предпоследнего вопроса, а на последнем вопросе виснет...
Я уже замучился листать код...немогу увидеть видимо очевидную ошибку...помогите пожалуйста.

Выкладываю головной модуль(на всякий случай) и модуль где реализован сам тест - в нем и ошибка (кажется в процедуре read_file - т.к. меняя значение i на i -1 тест работает, только последний вопрос естественно не читается).

Приложение:

Отправлен: 22.03.2006, 20:43
Вопрос задал: Denton (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Denton!
Я сильно извиняюсь, если мой ответ Вам покажеться не совсем в тему, но почему Вы упорно отказываетесь использовать таблицу базы данных? Тогда бы реализация Вашей задачи превротилась бы в сплошное наслаждение. Судите сами:
- количество строк в таблице равно количеству вопросов. При этом никаких дополнительных расчетов, чтобы отделить вопрос от ответа не надо;
- каждая строка таблицы делится на 4 столбца - вопрос, 1-ый вариант ответа, 2-ой вариант ответа, правильный ответ. Каждый выводится в собственном окошке;
- чтобы выбирать случайным образом вопрос, понадобится очень простая конструкция - Random(Количество_строк_в_таблице);
- можно завести специальную колонку в таблице, где ставить пометку, выбирался такой вопрос или еще нет;
- соответственно в еще одной колонке или даже отдельной таблице можно хранить оценки за ответы, а потмо анализировать их на предмет повышения или понижения уровня знаний.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.03.2006, 07:25

Отвечает: Zubex
Здравствуйте, Denton!
Очевидная ошибка у Вас в том, что инициализацию массива нулями вы делаете с единицы, а не с нуля... Поэтому нулевой элемент массива у вас остается единицей, в последующем из-за этого Вы попадаете в бесконечный цикл в get_element (while a[m]=1 do m:=random(i);)
Как будущий программист учитесь массив считать с нуля...
Удачи!
PS. Времени мало, но кой чего я поправил и вышлю на мыло
---------
Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 6-ой класс)
Ответ отправлен: 23.03.2006, 11:13


Вопрос № 38.254
ПОмогите чем можете... Код программы, ссылки или прочее, что может мне помочь в создании и кодировке алгоритма игры "Крестики-Нолики" на поле больше чем 3 на 3...

Тоесть неплохо былобы мне организовать алгоритм который будет эмулировать искуственный интелект играющего в эту игру....

Вот собственно и все просьба. Спасибо за внимание!
Отправлен: 22.03.2006, 21:18
Вопрос задал: Пизний Владимир Владимирович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгения
Здравствуйте, Пизний Владимир Владимирович!
http://kvant.mccme.ru/1994/01/krestiki_i_noliki.htm
http://program.rin.ru/razdel/html/960-1.html
Ответ отправила: Евгения (статус: 2-ой класс)
Ответ отправлен: 22.03.2006, 22:06

Отвечает: Malysh
Здравствуйте, Пизний Владимир Владимирович!
Я когда-то писал подобную простенькую прогу на С++, когда учился. Ее скоре всего надо доделать. Но она работает. Попробуй перевести в Delphi, думаю это бедет не сложно.

Приложение:

Ответ отправил: Malysh (статус: Студент)
Ответ отправлен: 22.03.2006, 23:51


Вопрос № 38.259
Значит есть такой простенький вопрос. Хотелось бы прочитать подробное описание функции copy... Дело в том, что мне необходимо строку вида например '123 455..n', где неопределнное количество символов n, преобразовать на выходе в две переменные s:='123' и s2:='455'. Вроде делаю с первым s, работает, а вот пробую получить s2 и у меня выходит ' 455'. Помогите плиз.
Отправлен: 22.03.2006, 22:24
Вопрос задал: CJ (статус: Практикант)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, CJ!
Хорошо бы еще код в студию. Просто возьмите и сделайте s := Trim(s) и s2 := Trim(s2); это уберет лишние пробелы.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Ответ отправлен: 22.03.2006, 22:35

Отвечает: sir henry
Здравствуйте, CJ!
Пробел убирается функцией Trim(), а вообще надо опимизировать определение первого символа искомой подстроки, вот и все.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.03.2006, 06:33

Отвечает: Diman_A
Здравствуйте, CJ!
Вот описание ф-ии copy:
------------------------------------------------------------
Функция Copy
------------------------------------------------------------
Функция: Возвращает для строки подстроку.
Описание: Соpy(s : string; индекс : integer; счетчик :
integer)
Тип результата: Строковый (string).
Примечания: Параметр s - выражение строкового типа.
Па-раметры "индекс" и "счетчик" являются выражениями целого
типа. Функция Соpy возвращает строку, число символов которой
соответствует параметру "счетчик" и которая начинается с
символа строки s, номер которого задан параметром "индекс".
Если значение параметра "индекс" превышает длину строки, то
возвращается пустая строка. Если параметр "счетчик" задает
больше символов, чем остается в строке, начиная с символа
"индекс", то возвращается только остаток строки.
Пример:
var
s : string;
begin
s := 'ABCDEF';
s := Copy(s,2,3) { 'BCD' }
end.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 23.03.2006, 10:26


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное