Вопрос № 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!
Я пользуюсь для извлечения ресурсов вот таким кодом - проверено работает (если правильно "упихано" :)).
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 минуты назад....
Спасибо.
Отвечает: 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 отображения статуса процеса наподобии светодиода(зеленый-активный/красный-остановлено) или что нить наподобии.
Отвечает: Ерёмин Андрей
Здравствуйте, Шмаров Сергей!
Для этой цели вполне подойдёт стандартный 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.
Либо тоже самое можно сделать программно:
И теперь чтобы занести весь список выделенных файлов допустим в поле 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