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

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


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 249
от 24.11.2003, 20:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1128
Отправлено ответов: 2353
Активность: 208.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

samum2000
Статус: Доверительный
Общий рейтинг: 128.36
[Подробней >>]
Boriss
Статус: Опытный
Общий рейтинг: 142.1
Телефон: (8342) 324312
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.54
URL: Пристанище неодинокого программиста
[Подробней >>]
 
sir henry
Статус: Опытный
Общий рейтинг: 160.6
[Подробней >>]
URiS
Статус: Профессиональный
Общий рейтинг: 116.99
URL: Бесплатный любительский софт, игры
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1118. Такая проблема. Надо управлять компонентом shockwaveflash, компонентом scrollbar! Переход на фрей, я... (ответов: 1)
Вопрос № 1119. Здрасте. Прошу, объясните мне, деревянному, что не так? В процедуре FormClose создаётся файл. В п... (ответов: 2)
Вопрос № 1120. Доброе время суток!! К вопросу 1105.Извините если непонятно выразился.Да нужно опросить состояние дж... (ответов: 3)
Вопрос № 1121. Здравствуйте, все. Нужно срочно. посоветуйте кто может. Результат SQL запроса через Query выводится ... (ответов: 1)
Вопрос № 1122. Здравствуйте. Помогите пожалуйста. Пишу программу с базой данных, все ок, но при поиске фамилии выда... (ответов: 1)
Вопрос № 1123. Здравствуйте, уважаемые эксперты !!! 1) Помогите решить проблему. Мне нужно округлить время в... (ответов: 4)

Вопросов: 6, ответов: 12


 Вопрос № 1118

Такая проблема.
Надо управлять компонентом shockwaveflash, компонентом scrollbar!
Переход на фрей, я могу, прокрутку полосы могу! А все вместе НЕТ!
Реши делать это с помощью потков, попробовал, не получается.
Вот мне нужна помощь!



Вопрос отправлен: 19.11.2003, 21:39
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Доброе время суток, Кирилл!
Зачем потоки, Кирилл? И что конкретнее не получается? У меня вроде все работает (с дополнениями от 18 ноября вообще без проблем!). Единственная проблема в том, что ScrollBar менее приспособлен для управления, чем TrackBar, оттого и двигается скачками.
Напиши подробнее - что именно не получается.

Ответ отправлен: 21.11.2003, 13:48
Отправитель: samum2000


 Вопрос № 1119

Здрасте.
Прошу, объясните мне, деревянному, что не так? В процедуре FormClose создаётся файл. В процедуре FormShow он открывается. Но почему именно тут значение FileSize(f)<>0 равно FALSE. Файл создан, в нём есть символы, размер не равен 0. Или Delphi глючат?? .....или я? Спать пора.
Спасибо всем.


Приложение:


Вопрос отправлен: 20.11.2003, 01:58
Отправитель: Rotten (ROTTEN@intbel.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Доброе время суток, Rotten!
Во-первых, Вам давали прекрасный совет - ЗАБЫТЬ о {$I+-} -> try .. except. Зря им пренебрегаете.
Во-вторых, у Вас получилось: if IOresult <> 0 then CloseFile !!
3!!!) См. руководства: В РУССКОЯЗЫЧНЫХ по русски написано: "Для текстовых файлов функция FileSize не используется" !!!!!!!!!
Отсюда вывод: используйте рекомендованное While NOT EOF(f)

Ответ отправлен: 21.11.2003, 09:28
Отправитель: Boriss


Отвечает Артём Шегеда

Приветствую Вас, Rotten!

Внимательно читаем справку Delphi:
Call FileSize to determine the size of the file specified by the file variable F. To use FileSize, the file must be open. If the file is empty, FileSize(F) returns 0.
Note: FileSize can't be used on a text file.

Невозможно определить размер текстового файла. Используй функцию EOF()

Ответ отправлен: 20.11.2003, 14:22
Отправитель: Артём Шегеда


 Вопрос № 1120

Доброе время суток!!
К вопросу 1105.Извините если непонятно выразился.Да нужно опросить состояние джойстика т.е.положение осей и состояние кнопок.
С уважением Антон.



Вопрос отправлен: 20.11.2003, 20:53
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Здравствуйте, антон!
Для начала надо в Uses добавить модуль, отвечающий за мультимедиа - MMSYSTEM.
Если теперь определить переменную Joy типа TJoyInfo, то можно выполнить следующий код:
begin
joygetpos(joystickid1,@joy);
trackbar1.position := joy.wypos;
trackbar2.position := joy.wxpos;
radiobutton1.checked := (joy.wbuttons and joy_button1)>0;
radiobutton2.checked := (joy.wbuttons and joy_button2)>0;
end;
Я надеюсь из примера все понятно.


Ответ отправлен: 23.11.2003, 17:20
Отправитель: samum2000


Отвечает sir henry

Добрый день, антон!
С помощью WinAPI.
Например, позицию джйстика можно получить функцией:
JoyGetPos(JoyID, JoyInfo);
Там довольно много функций для джойстика, информация передается через структуру JoyInfo:
typedef struct {
UINT wXpos;
UINT wYpos;
UINT wZpos;
UINT wButtons;
} JOYINFO;
Думаю, здесь все ясно и без объяснений :).


Ответ отправлен: 21.11.2003, 09:30
Отправитель: sir henry


Отвечает Boriss

Здравствуйте, антон!
Есть статья Наталии Елмановой по работе с джойстиками: http://citforum.ru/programming/advice/advice07.shtml

Ответ отправлен: 21.11.2003, 09:36
Отправитель: Boriss


 Вопрос № 1121

Здравствуйте, все.
Нужно срочно. посоветуйте кто может. Результат SQL запроса через Query выводится в DBGrid. User кликает по строчке в Gride открывается окно с подробностями этой записи как узнать ключевой поле щелкнутой записи, т.е. как узнать какую запись он щелкнул.



Вопрос отправлен: 20.11.2003, 21:02
Отправитель: GAV (ton_g@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, GAV!
Очень сумбурно сформулирован вопрос :).
1. Ключевое поле не зависит от записи. Ключевое поле - это когда по определенному полю есть индекс.
2. "как узнать какую запись он щелкнул" - что Вы имеете в виду? Узнать номер записи? В DBase таблицах это не трудно, а в других - бессмысленно :). Тем более, если используется SQL запрос.

Ответ отправлен: 21.11.2003, 09:36
Отправитель: sir henry


 Вопрос № 1122

Здравствуйте. Помогите пожалуйста.
Пишу программу с базой данных, все ок, но при поиске фамилии
выдает такую строку.
DATASOURCE1 : Curcular datalinrs are not allowed.
а в листинге показывает на строку,
DataSource1.DataSet := Query1 ; // отобразить результат
выполнения задания
Вот если можете помочь вышлите на адрес lists@email.ru
Спасибо



Вопрос отправлен: 21.11.2003, 05:48
Отправитель: Игорь

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Приветствую Вас, Игорь!
Нельзя таким образом присваивать.

Ответ отправлен: 21.11.2003, 09:50
Отправитель: sir henry


 Вопрос № 1123

Здравствуйте, уважаемые эксперты !!!
1) Помогите решить проблему. Мне нужно округлить
время в большую сторону. Например, если время 10.10.10,
то оно округляется до 10.11.00, то есть прошедшие
секунды преврашаются в минуты. Если делать так,
то выводяться просто нули везде, то есть 00.00.00.

ShowMessage(TimeToStr(Round(Time)));
ShowMessage(TimeToStr(Trunc(Time)));

2) Пишу программу с Базой Данных (Delphi 6,
Рaradox 7, TQuery) и заметил, что если нажать Reset
или просто зависнет Винда в лучшем случае потеряются
последние введенные данные, а то и вся База Данных
становится чистой и стерильной :). Как мне это
излечить и что делать в такой ситуации ???
3) Каким образом можно вывести константы нажатых
клавиш вида VK_NUMLOCK, VK_SCROLL, VK_CAPITAL.
4) Хочу запустить Word, открыть в нем документ
(шаблон) и в нужные места вставить нужный текст. В общем
делаю отчет. А как там указать эти нужные места, то есть
метки я не знаю. Подскажите кто знает ОЧЕНЬ, нужно. Делаю
так - см. приложение.
5) Я тут еще написал свой небольшой текстовый
редактор и хочу сделать одну вещь: как запустить второй
экземпляр моего редакотра, НО С ТОЧНО ТАКИМ ЖЕ
РЕДАКТИРУЕМЫМ ФАЙЛОМ ??? Там ведь наверное как-то через
Handle надо, но я этого не разу не делал, так что прошу
у Вас помощи.
procedure TForm1.Button1Click(Sender: TObject);
var W: Variant;
begin
W:=CreateOleObject('Word.Basic');
WordApplication1.Visible:=True;
W.FileOpen('C:MyDoc.doc');
W.EditGoto('Num');
W.Insert('Некоторый текст');
W:=UnAssigned;
WordApplication1.Disconnect;
end;
P.S.: Извините на глупые вопросы.
Заранее большое спасибо. С уважением SATAN aka NAPALM.



Вопрос отправлен: 21.11.2003, 12:28
Отправитель: SATAN aka NAPALM

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Добрый день, SATAN aka NAPALM!
1. Вам придется самому проверять - если количество секунд больше нуля, то обнулять их и добавлять одну минуту (т.е. надо добавлять к твоему числу 1/1440)
3. Не понятно, что именно ты хочешь - поймать нажатие клавиши и написать что была нажата VK_NUMLOCK или ты просто хочешь знать состояние этих клавиш (вкл/выкл).
5. Зачем Handle? Можно просто запустить твою программу и передать ей в коммандной строке имя того же файла, который открыт у тебя (ведь любой редактор должен уметь обрабатывать параметры коммандной строки, даже маленький):
var
path: array [1..100] of char;
begin
StrPcopy(path, 'C:path_to_your_programproga.exe -имя_твоего_файла');
winexec(path,SW_Restore);
end;

Ответ отправлен: 23.11.2003, 17:21
Отправитель: samum2000


Отвечает sir henry

Добрый день, SATAN aka NAPALM!
1. Если округлять именно в таком формате (ЧЧ.ММ.СС), то сначало нужно перевести в строку, а потом округлять.
Время в Дельфи - это число типа 123456789.987654321, где до запятой идет дата, а после запятой идет время. Поэтому написав Round(Time) вы свое время переведете в ноли.
2. Не в том форуме задан вопрос :).
Советы универсальные:
а) Не нажимайте во время работы программы кнопку RESET;
б) Поставьте себе такую Windows, которая не вешается - WinNT, Win2000, WinXP; :)))
в) А если серьезно, то от этого спасает только наличие резервных копий Базы Данных :).
3. ShowMessage(IntToStr(VK_NUMLOCK));
4. Я, честно говоря, уже не помню, как найти нужное место в документе Word'а. Давно уже забросил писать отчеты в Word'e - слишком тяжела и неповоротлива программа. Легче всего, если отчет нужен именно в формате Office и его предполагается потом редактировать, загонять отчеты в Excel. Там лист уже разлинован на клетки, поэтому указать нужную клетку, куда всунуть свои данные - проблема детсадовская.
Если отчет не предполагается редактировать, то очень просто его изготовить в html виде - обычный текстовый файл, вситавляются нужные тэги, браузеры есть на всех компах. Я все свои отчеты делаю в html виде.
5. Вопрос поставлен не ясно. Должен ли второй экземпляр программы просто открывать то-же файл или открывать его в том-же виде, как в первом экземпляре программы?
Если первое, то файл должен быть в режиме совместного доступа при открытии, тогда его можно открыть еще в чем угодно. Перегрузить содержимое файла в буфер и редактировать его.


Ответ отправлен: 21.11.2003, 13:59
Отправитель: sir henry


Отвечает URiS

Здравствуйте, SATAN aka NAPALM!
1) Тип TDateTime - это то же самое, что и Double, но работать с ним этими функциями нельзя.
Вижу единственный выход - преобразовывать в строку, а потом уже работать со строкой.
3) Следующий код выведет тебе мессагу "1", если Num включен и "0" - если нет:
ShowMessage(inttostr(getkeystate(VK_NUMLOCK)));
5)
Я бы при запуске проги проверил сначала - есть ли копия. Если есть, то посылаем ей сообщение, на которое первая копия отправляет имя редактируемого файла. Работа с сообщениями есть в моём перехватчике клавиатуры на моём сайте...

Моя рассылка: comp.soft.prog.urisprog


Ответ отправлен: 22.11.2003, 10:49
Отправитель: URiS


Отвечает Boriss

Приветствую Вас, SATAN aka NAPALM!
1) "Ручками" TDateTime - double хранит дату и время. Целая часть = количество дней с 30 дек. 1899, а дробная - время дня. Или работать как с полями записи
2) Наверно глупый совет - но либо блок бесперебойного питания или чаще сохранять, но это ... . TSQLConnection поддерживает механизм транзакций
3) Не ясен вопрос. Справку по ним получите по "key-down messages". Если сообщение типа "Вы нажали ...", то там же
4) Проще всего иметь шаблон документа в виде Strings
5) Делается это с помощью CreateProcess. Либо справка, либо учебник - если не разберетесь - можно посмотреть архивы рассылки или спросить еще раз

Ответ отправлен: 24.11.2003, 12:16
Отправитель: Boriss



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (30)
C / C++ (23)
Perl (4)
Builder / Delphi (19)
Pascal (21)
Basic / VBA (7)
Java / JavaScript (11)
PHP (14)
Криптография (7)
WinAPI (11)
Пользователю
Windows 95/98/Me (42)
Windows NT/2000/XP (57)
"Железо" (37)
Поиск информации (22)
Администратору
Windows NT/2000/XP (36)
Linux / Unix (15)
Юристу
Гражданское право (12)
Семейное право (9)
Трудовое право (10)
КоАП (7)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное