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

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


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

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

Выпуск № 449
от 20.04.2006, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 308, Экспертов: 67
В номере:Вопросов: 6, Ответов: 11


Вопрос № 40306: Здравствуйте, эксперты! Есть такая проблема: я написал прогу, которая при старте windows проверяет не наступил ли случаем понедельник. Если наступил, то выводит в Мемо текст из файла мемо.txt (файл находится в каталоге рядом с исполня...
Вопрос № 40315: Уважаемые! Спасите! Замучился искать документацию по midi-формату, может у кого есть ссылки? или инфа? Интересует структура файла, и как можно издать midi-звук из delphi, не пользуясь готовым файлом? Желательно по русски,<...
Вопрос № 40323: Добрый вечер. Помогите решить вопрос. Есть на форме memo1, memo2, memo3, Edit1 и кнопка. В каждый из Мемо загружаю разный текст. Нужно произвести поиск. Т.е. ввожу в Edit например слово «Коля», проверяется сначала memo1, если текст не най...
Вопрос № 40332: Здравствуйте! Подскажите, пожалуйста, как сделать хороший help к приложению? Может, есть какие-нибудь программы, которые упростят задачу?...
Вопрос № 40338: Здравствуйте! Подскажите, пожалуйста, как при создании отчета в Excel сразу вывести его на печать, не показывая? Заранее спасибо!!!...
Вопрос № 40341: Здравствуйте! Подскажите как правильно сделать вычисление циклом От центра окружности с заданным колличеством точек и смещением 1-ой точки, нужно найти каждую координату точки по осям X и Y Вывести в мемо. procedure TForm1.Bu...

Вопрос № 40.306
Здравствуйте, эксперты!
Есть такая проблема:
я написал прогу, которая при старте windows проверяет не наступил ли случаем
понедельник. Если наступил, то выводит в Мемо текст из файла мемо.txt
(файл находится в каталоге рядом с исполняемой программой)
Если я засовываю ярлик в автозагрузку, то проблем не возникает, а если пишу в реестр windows, то она она при загрузке ищет файл мемо.txt в профиле юзера(%userprofile%) и говорит что его там нет (и, действительно, нет!)
Очень надо запускать через реестр, чтобы всякие юзеры не выкинули ярлык из автозагрузки.
Абсолютный путь к файлу писать очень не желательно,
текст может часто меняться(писать его внутри проги не надо)
Вопрос: что делать?
(Delphi7, WinXP)
Отправлен: 14.04.2006, 20:41
Вопрос задал: Mo-skin (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Mo-skin!
Просто вычисляйте абсолютный путь во время выполнения программы. Если я правильно понял, текстовый файл находится в каталоге с программой. Тогда всё просто:

Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'memo.txt');


Видимо, при запуске Windows указывает текущую директорию как %userprofile%.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 14.04.2006, 20:50
Оценка за ответ: 5

Отвечает: Tamashev Denis M
Здравствуйте, Mo-skin!
Вопрос неочень понял !
Вот код прописания в реестор в раздел авто загрузки !

var
REG:Tregistry;
begin
REG:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
ReG.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersionRun',true);
REg.WriteString('programma','C:Windowshello.exe');
reg.Free;

//Добавти Registry в uses !!!
Ответ отправил: Tamashev Denis M (статус: 2-ой класс)
Ответ отправлен: 14.04.2006, 20:52
Оценка за ответ: 3

Отвечает: Diman_A
Здравствуйте, Mo-skin!
Ты не написал, как ты загружаешь файл. Если он у тебя постоянно в каталоге программы и имеет постоянное имя, можно получить путь к нему так:
ExtractFilePath(Application.ExeName) + 'мемо.txt'
По поводу автозапуска из реестра: в журнале "Хакер" #81 (качай с www.wisesoft.ru) есть статья "Методы автозапуска". В ней описано большинство способов автозагрузки.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 15.04.2006, 06:23
Оценка за ответ: 5


Вопрос № 40.315
Уважаемые!
Спасите!
Замучился искать документацию по midi-формату,
может у кого есть ссылки?
или инфа?
Интересует структура файла, и как можно издать midi-звук из delphi,
не пользуясь готовым файлом?
Желательно по русски,
help Microsoft Multimedia Programmer's Reference есть, но я с англицким не дружу!
Help! Help! Help!
Отправлен: 14.04.2006, 22:49
Вопрос задал: Mo-skin (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bochvarov NikB
Здравствуйте, Mo-skin!
Посмотри www.alan-warriner.co.uk у него фрии TMidiGen.
Ответ отправил: Bochvarov NikB (статус: 7-ой класс)
Ответ отправлен: 15.04.2006, 03:23
Оценка за ответ: 5


Вопрос № 40.323
Добрый вечер.
Помогите решить вопрос. Есть на форме memo1, memo2, memo3, Edit1 и кнопка.
В каждый из Мемо загружаю разный текст. Нужно произвести поиск.
Т.е. ввожу в Edit например слово «Коля», проверяется сначала memo1, если текст не найдет memo2, потом memo3. Если в каком-то из memo этот текст найден, то нужно чтобы появлялось сообщение типо: «Коля» найден в Memo2.

С Уважением, Максим
Отправлен: 15.04.2006, 00:42
Вопрос задал: Maximus (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Полховский Александр Владимирович
Здравствуйте, Maximus!
Поиск текста в memo осуществляйте функцией Pos для всех memo по очереди перебором строк в цикле for (ну или в каком удобнее).

for n:=1 to memo1.Lines.Count do
if Pos(edit1.Text, memo1.Lines[n-1])>0
then application.messageBox(pansichar('"'+edit1.Text+'" найдено в memo1'), 'Ура !');

for n:=1 to memo2.Lines.Count do
if Pos(edit1.Text, memo2.Lines[n-1])>0
then application.messageBox(pansichar('"'+edit1.Text+'" найдено в memo2'), 'Ура !');
for n:=1 to memo3.Lines.Count do
if Pos(edit1.Text, memo3.Lines[n-1])>0
then application.messageBox(pansichar('"'+edit1.Text+'" найдено в memo3'), 'Ура !');
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 15.04.2006, 02:31

Отвечает: Mo-skin
Здравствуйте, Maximus!
Предлагаю сделать так:
информацию о том, что Коля в мемо2, а так-же что он начинается
с третьего символа 5-й строки выводить в Edit2
Короче смотри пример - там все понятно должно быть,
только мемо у меня всего два , думаю, третий сам припишешь!

Приложение:

---------
Чем больше женщину мы меньше,- тем меньше больше мы ее!

Ответ отправил: Mo-skin (статус: 1-ый класс)
Ответ отправлен: 15.04.2006, 12:54


Вопрос № 40.332
Здравствуйте! Подскажите, пожалуйста, как сделать хороший help к приложению? Может, есть какие-нибудь программы, которые упростят задачу?
Отправлен: 15.04.2006, 04:50
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Diman_A
Здравствуйте, Андрющенко Вячеслав Васильевич!
Если тебе нужна справка в chm формате, то попробуй прогу htm2chm http://yarix.by.ru/htm2chm-3.0.9.3-en.exe Ссылку не проверял, если битая, то просто поищи на сайте http://yarix.by.ru/. Она компилирует ранее сделанные html-ки в chm. Только html нужно делать не в word-е, а то размер получается больше, чем надо.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 15.04.2006, 06:23

Отвечает: AnD1
Здравствуйте, Андрющенко Вячеслав Васильевич!
Посмотрите здесь - статья как и на чем сделать help - http://www.xakep.ru/magazine/xs/053/048/1.asp
Ответ отправил: AnD1 (статус: 4-ый класс)
Ответ отправлен: 15.04.2006, 15:18


Вопрос № 40.338
Здравствуйте! Подскажите, пожалуйста, как при создании отчета в Excel сразу вывести его на печать, не показывая? Заранее спасибо!!!
Отправлен: 15.04.2006, 09:04
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Нашел пример (проверял аналогичный для WORDа, думаю этот тоже должен работать).
Пример взят из справки программы Delphi World 6 (http://delphiworld.narod.ru/) -
скачай - не пожалеешь.

Приложение:

Ответ отправил: Устинов Сергей Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 15.04.2006, 12:14


Вопрос № 40.341
Здравствуйте!
Подскажите как правильно сделать вычисление циклом
От центра окружности с заданным колличеством точек и смещением 1-ой точки,
нужно найти каждую координату точки по осям X и Y
Вывести в мемо.

procedure TForm1.Button1Click(Sender: TObject);
var
t: real; // Колличество точек
g: real; // Градусы для смещения 1-ой точки
m: real; // Минуты
s: real; // Секунды
xx: real; // Координата Х центра окружности
yy: real; // Координата Y центра окружности
c: integer; // челое число
d: integer; // дробное число
r: real; // Радиус
n: real;
v: real; // вычисления
xxa: real; // вычисления
yya: real; // вычисления
begin
// получить исходные данные из полей ввода
xx:= StrToFloat(Edit1.Text); // Координата Х центр окружности
yy:= StrToFloat(Edit2.Text); // Координата Y центр окружности
g:= StrToFloat(Edit3.Text); // Градусы (смещение 1-ой точки)
m:= StrToFloat(Edit4.Text); // Минуты
s:= StrToFloat(Edit5.Text); // Секунды
t:= StrToFloat(Edit6.Text); // Колличество точек
r:= StrToFloat(Edit7.Text); // Радиус
// предварительные преобразования
c:= Trunc(t); // это целая часть числа t
d:= Trunc(t/2) mod 10000; // это дробная часть числа t
// вычисление
v:=360/t+((g+(m/60+(s/3600)))*pi/180);// Угол от колличества точек
for n = 1 to t
then
// begin
xx:= r*cos(v);// Радиус на косинус угла v
//xxa:= xx+1; // Шаг на следующую точку по х
yy:= r*sin(v);// Радиус на синус угла v
//yya:= yy+1; // Шаг на следующую точку по y

// вывод результата
Memo1.Lines.Add(FloatToStrF(xxa,yya,ffFixed,5,4) + '');// вывод по осям X и Y
end;
//end;
Отправлен: 15.04.2006, 10:27
Вопрос задал: Serhik_z (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Ерёмин Андрей
Здравствуйте, Serhik_z!
Если я правильно понял, нужно рассчитать координаты каждой из точек окружности... В этом случае на помощь приходит геометрическое уравнение окружности:
X2 + Y2 = R2.
Соответственно, просчёта никаких градусов и не нужно.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 15.04.2006, 15:45

Отвечает: Полховский Александр Владимирович
Здравствуйте, Serhik_z!
Вам нужно находить координаты точки, имеющей определёное смещение относительно оси Y.
Для начала найдём интервал в градусах, на который будет увеличиваться смещение:

deltaD:=360/N;//N - количество точек

Теперь выведем формулу для рассчёта координат:

X=xx+R*cos(g+deltaD*t);
Y=yy+R*sin(g+deltaD*t);

Если мы используем все углы в градусах, то для делфи это будет выглядеть так (в делфи параметрами функций sin и cos являются углы в радианах, а не в градусах):

xxa:=xx+R*cos(pi*(g+deltaD*t)/180);
yya:=yy+R*sin(pi*(g+deltaD*t)/180);

Цикл берём от 1 до N:

for t:=0 to N-1 do
begin
xxa:=xx+R*cos(pi*(g+deltaD*t)/180);
yya:=yy+R*sin(pi*(g+deltaD*t)/180);
memo1.Lines.Add(FloatToStrF(xxa)+' : '+Floattostr(yya));
end;

Только t объявляйте как целочисленную, ибо это количество точек, что не может быть дробным числом. Если же имеется в виду количесиво целых отрезков, на которые надо поделить окружность, то возможен вариант и с t:real. Тогда нужно разбить t на целую часть и на дробную часть (как Вы и сделали), цикл пустить по целому значению, а после цикла подсчитать ещё одно значение для исходного t (т.е. дробного), либо для нулевого смещения (результат будет таким же).
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 17.04.2006, 18:37
Оценка за ответ: 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.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное