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

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


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

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

Выпуск № 803
от 08.05.2007, 04:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 465, Экспертов: 93
В номере:Вопросов: 7, Ответов: 15


Вопрос № 85057: Как извлечь exe файл из ресурса своей программы? Упихать его туда както получилось ) а вот вытаскивается 0 байт......
Вопрос № 85093: Здраствуйте. У меня на форме есть компонент Tchart, который получает каждую секунду числовое значение и строит по ним график. На горизонтальной оси откладывается дата/время. На вертикальной - полученные значения. Как мне обратиться к числово...
Вопрос № 85126: Здравствуйте, уважаемые эксперты! мне надо создать записную книжку с поиском. в Database Desktop я ввожу параметры таблицы (всех колонок), а потом когда открываю в Делфи эту таблицу, никаких параметров не остается и заполняется только одна строка, на...
Вопрос № 85138: Здравствуйте. Подскажите пожалуйста компонент для Д7 отображения статуса процеса наподобии светодиода(зеленый-активный/красный-остановлено) или что нить наподобии....
Вопрос № 85153: Сори за беспокойствие... летом буду участвовать в конкурсу программистов. Мне надо зделать Новую-полезную прогу.(На делфи7) Не знаю что делать...хотел зделать базу данных работающый в сети (как SQL).что вы на это скажите.плз посоветуйте ...
Вопрос № 85155: Можно ли при помощи компонента OpenDialog открыть несколько медиа файлов одновременно? (например для создания плей листа для медиа проигрователя)...
Вопрос № 85164: Здравствуйте. К сожалению ответы на вопрос №84888 мне не помогли. Сейчас привожу тот же вопрос, но в другой, более развернутой, формулировке: При щелчке мыши по форме, рисуется большой кружок, причем поверх всех контролов и заголовка фор...

Вопрос № 85.057
Как извлечь exe файл из ресурса своей программы? Упихать его туда както получилось ) а вот вытаскивается 0 байт...
Отправлен: 02.05.2007, 09:16
Вопрос задал: monah (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PGM
Здравствуйте, monah!

Я пользуюсь для извлечения ресурсов вот таким кодом - проверено работает (если правильно "упихано" :)).

var
XRes : Integer;
XResP : Pointer;
XResS : Integer;
XMS : TFileStream;

try
XRes := FindResource(hInstance,PChar('UPDATE'),RT_RCDATA);
if XRes = 0 then GlobalError(ERROR2+SysErrorMessage(GetLastError));

XResS := SizeOfResource(hInstance,XRes);
XRes := LoadResource(hInstance,XRes);
if XRes = 0 then GlobalError(ERROR3+SysErrorMessage(GetLastError));

XResP := LockResource(XRes);
try
if XResP = nil then GlobalError(ERROR4+SysErrorMessage(GetLastError));

XMS := TFileStream.Create(sTempPath+UPDATE_FILE, fmCreate);
with XMS do begin
Write(XResP^,XResS);
Free;
end;

UnLockResource(XRes);
Debug('Extract from resources OK');
finally
FreeResource(XRes);
end;
except
Error('Extract from resources');
end;
Ответ отправил: PGM (статус: 6-ой класс)
Ответ отправлен: 02.05.2007, 10:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое. Работа с ресурсами показана очень хорошо. И универсально.

Отвечает: Gh0stik
Здравствуйте, monah!

1) Создаем файл ресурса в котором хранится исходный ехе-файл.
а) Создаем текстовый файл допустим exe.rc
Который содержит например такую строку:
EXER RCDATA calc.exe
EXER - название нашего ресурса, которое мы будем использовать в программе.
calc.exe - файл который мы упаковываем в ресурс.
б) Компилируем сам ресурс путем такой команды: brcc32.exe exe.rc
в) Должен создастся файл exe.res

2) Подключаем ресурс к проекту путем приписывания такой строки:
............
implementation
{$R exe.res}
............


3) После компиляции проекта файл ресурса будет "вшит" в него.
4) Чтобы извлечь ехе-файл достаточно написать такую процедуру:
procedure TForm1.Button1Click(Sender: TObject);
var rs: TResourceStream;
begin
rs:=TResourceStream.Create(hinstance, 'EXER', RT_RCDATA);{обращаемся к ресурсу по имени}
try
rs.SaveToFile('1.exe'); {сохраняем "добытый" файл под соответствующим именем}
finally
rs.Free;
end;
end;


5) В результате мы получим исходный файл ехе.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 02.05.2007, 11:25
Оценка за ответ: 5
Комментарий оценки:
Очень просто и наглядно, спаибо. Пункты 1, 2 и 3 я выполнил самостоятельно, но комуто может пригодится. Плюс попробую работу с потоком ресурса.


Вопрос № 85.093
Здраствуйте.
У меня на форме есть компонент Tchart, который получает каждую секунду числовое значение и строит по ним график. На горизонтальной оси откладывается дата/время. На вертикальной - полученные значения.
Как мне обратиться к числовому значению по дате? Например, узнать - какое значение пришло 2 минуты назад....
Спасибо.
Отправлен: 02.05.2007, 15:22
Вопрос задал: Зверев Макс (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: Georg
Здравствуйте, Зверев Макс!
Так примените TDbСhart,и все вопросы с поиском и количеством значений отпадают сами собой.
Данные должны хранится в базе данных (извините за тавтологию).
Удачи!
Ответ отправил: Georg (статус: 4-ый класс)
Ответ отправлен: 04.05.2007, 14:27


Вопрос № 85.126
Здравствуйте, уважаемые эксперты! мне надо создать записную книжку с поиском. в Database Desktop я ввожу параметры таблицы (всех колонок), а потом когда открываю в Делфи эту таблицу, никаких параметров не остается и заполняется только одна строка, на вторую не переходит! что не так?
Отправлен: 02.05.2007, 19:00
Вопрос задал: Elina (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Diman Soldatov / DES
Здравствуйте, Elina!
если просто и быстро используй компонет DBnavigator для добовления данных в таблицу он авто матически переместит курсов на новую строку, также и навигацию осуществишь.
или можешь для добовления использовать Table1.append;
Ответ отправил: Diman Soldatov / DES (статус: 1-ый класс)
Ответ отправлен: 02.05.2007, 23:23

Отвечает: Johnny Superb
Здравствуйте, Elina!
Возможные проблемы:
1 Вы не заполнили поля DatabaseName И TableName в компоненте Table
2 Вы не перевели Таблицу в активное состояние (Table1.Active=true)
3 Вы не настроили связи с между DBGrid и DataSource
4 возможно Вы указали запрос в фильтр, выводящий только одну строку (например, Вы указали Table1.Filter="Id=1")
Ответ отправил: Johnny Superb (статус: 1-ый класс)
Ответ отправлен: 03.05.2007, 01:30


Вопрос № 85.138
Здравствуйте.
Подскажите пожалуйста компонент для Д7 отображения статуса процеса наподобии светодиода(зеленый-активный/красный-остановлено) или что нить наподобии.
Отправлен: 02.05.2007, 20:38
Вопрос задал: Шмаров Сергей (статус: 4-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Шмаров Сергей!
Для этой цели вполне подойдёт стандартный TShape (вкладка Additional). Устанавливаем фигуру (Shape) в stCircle и получаем индикатор. Закрашиваем через Brush.Color:
Shape1.Brush.Color:=clLime; //включено
Shape1.Brush.Color:=clRed; //выключено

И никаких сторонних компонент :-)
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 02.05.2007, 21:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо за оперативность и хороший ответ.
Но все же хотелось бы что то поизящнее.

Отвечает: василий1
Здравствуйте, Шмаров Сергей!

в сети есть такой проект JEDI - http://www.delphi-jedi.org/
после установки
вкладка JV HMI
Светодиод на вкладке называется JVLED
Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 05:21

Отвечает: Coupler
Здравствуйте, Шмаров Сергей!
Для этой цели можно использовать стандартный Image, загружая в него картинки по событию OnClick. У Image еще есть событие OnMouseDown, OnMouseUp и OnMouseMove. Думаю, они могут пригодиться Вам в создании светодиода поизящнее - можно реагировать на нажатиеотпускание мыши, на наведение и т.д.
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 06.05.2007, 15:03


Вопрос № 85.153
Сори за беспокойствие...
летом буду участвовать в конкурсу программистов.
Мне надо зделать Новую-полезную прогу.(На делфи7)
Не знаю что делать...хотел зделать базу данных работающый в сети (как SQL).что вы на это скажите.плз посоветуйте что можно зделать.
Мне 15лет. [censored] В конкурсе будут участвовать и хацкеры и программисты.15-24 лет.
Отправлен: 02.05.2007, 22:01
Вопрос задал: Шахрух (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: василий1
Здравствуйте, Шахрух!

Не знаю по какому принципу у вас будет проходить судейство, но склоняйтесь в сторону максимально оптимизированного кода и быстродействия. Как вариант напишите файловый сервер клиент серверное приложение позволяющее гонять большое по объему колво файлов по сети и через тырнет. Хороших, бесплатных подобных приложений в свободном доступе пока что не видел.
Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 05:29


Вопрос № 85.155
Можно ли при помощи компонента OpenDialog открыть несколько медиа файлов одновременно? (например для создания плей листа для медиа проигрователя)
Отправлен: 02.05.2007, 22:03
Вопрос задал: 3dcvir (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, 3dcvir!

Для этого Вам нужно изначально разрешить выделение нескольких файлов в OpenDialog. Для этого нужно свойство в диспетчере объекта OptionsofAllowMultiSelect изменить на true.
Либо тоже самое можно сделать программно:

OpenDialog1.Options:=OpenDialog1.Options+[ofAllowMultiSelect];

И теперь чтобы занести весь список выделенных файлов допустим в поле Memo1 нужно просто выполнить такой код:

if OpenDialog1.Execute then Memo1.Lines:=OpenDialog1.Files;

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 02.05.2007, 22:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое. Убедился что незнание всего-лишь одного свойства порождает целую проблему...

Отвечает: василий1
Здравствуйте, 3dcvir!

справка дельфи говорит что можно

Приложение:

Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 05:37
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Georg
Здравствуйте, 3dcvir!

!!!
Можно!
Измените ofAllowMultiSelect на true,

далее

if OpenDialog1.Execute then Memo1.Lines.Assing(OpenDialog1.Files);

Удачи!
Ответ является дублирующим!!! Плюс дан по истечении почти двух суток, после верно ответа!!! Edited by Gh0stik
Ответ отправил: Georg (статус: 4-ый класс)
Ответ отправлен: 04.05.2007, 14:52
Оценка за ответ: 4
Комментарий оценки:
Спасибо за совет.


Вопрос № 85.164
Здравствуйте.
К сожалению ответы на вопрос №84888 мне не помогли. Сейчас привожу тот же вопрос, но в другой, более развернутой, формулировке:

При щелчке мыши по форме, рисуется большой кружок, причем поверх всех контролов и заголовка формы. Дак вот вопрос, как при нажатии на кнопке Button1, все что было нарисовано, безвозвратно исчезло, как например, если форму свернуть и потом восстановить?
Очень надеюсь на Вашу помощь, т.к. эта проблема меня волнует уже больше года.

Приложение:

Отправлен: 02.05.2007, 23:00
Вопрос задал: Louken (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

Могу дать Вам два варианта решения:
1) Просто перерисовываем форму: Form1.Repaint;.
Но в данном способе есть один минус - не перерисовуется заголовок окна. :(

2) Просто скрываем форму и сразу же ее отображаем - визуально вы этого не заметите (просто маленький фокус):
ShowWindow(Handle,SW_HIDE);
ShowWindow(Handle,SW_SHOWNORMAL);


Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 02.05.2007, 23:16

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

сдвинул немного ваши фигуру ибо перерисовывать заголовок с помощью
form1.Repaint;
form1.Refresh;
не получается

Приложение:

Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 05:50

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

Зря вы все-таки мой совет не попробовали. Я взял ваш код и вставил вот такой. Все работает. Проверялось под XP & D6.

procedure TForm1.Button1Click(Sender: TObject);
begin
Repaint;
SendMessage(Handle, WM_NCPAINT, 0, 0);
end;
Ответ отправил: PGM (статус: 6-ой класс)
Ответ отправлен: 03.05.2007, 10:32


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

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

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

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

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

В избранное