Вопрос № 30929: Здорова.
Как в дельфи создать zip архив?...Вопрос № 30933: Здравствуйте уважаемые эксперты. Дан главный модуль программы
program Project1;
uses
ShellApi, Windows;
{$R res.res}
begin
{какой-то код}
end.
В файле ресурса res.res содержится иконка. Как ее воткнуть в экзешник?<b...Вопрос № 30941: Что я должен знать что быть профессионалом Delphi....Вопрос № 30943: Я кочу сделать проект но не смагу найте что то. Не поможите найти. Спасибо...Вопрос № 30946: Такая проблемма возникла. Написал программу, на форме компоненты, которые используют dll из System32.
Такой dll в system32 нет, поэтому написал чтобы из ресурса извлекала ее туда. Но видимо обращение к dll
идет сразу и приложение просто не ус...Вопрос № 30950: Я еще оаз по поводу dll.
В приложении прописано использовать ACS_LAME
Uses ... ACS_LAME...
этот ACS_LAME.pas использует lame.pas где прописано
{$IFDEF WIN32}
LAME_PATH = 'lame_enc.dll';
{$ENDIF}
Как сделать чтобы при запу...Вопрос № 30973: Здравствуйте снова.
Я очень начинающий дельфер.
По вашим советам скачал zipforge. Порыл хелп, но чёт так и не понял, как ее пользовать. Просьба привести в пример кусок кода (мне нужно добавить файл в архив) или может у кого есть русский хелп....Вопрос № 30975: Доброе время суток, Уважаемые эксперты!!!
Подскажите плиз,
Как В компонент WebBrowser загрузить страничку из текущего каталога, без указания полного пути???
У меня такая ситуация: ехе файл с браузером и страничка которую нужно загрузить, ...Вопрос № 30983: Моя проблема состоит в следующем..
Начальство дало указание написать прогу которая по связи с RS-232 будет производить тестирование канала аппаратуры ИКМ. Для написания взял модуль Comm32 (широко известный).
Процедура посылки у меня инкапсули...
Вопрос № 30.929
Здорова.
Как в дельфи создать zip архив?
Отправлен: 06.12.2005, 19:06
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Юрий Владимирович
Здравствуйте, 34076!
Очень советую: http://componentace.com/zip_component_zip_delphi_zipforge.htm
Ответ отправил: Лучников Юрий Владимирович (статус: 4-ый класс)
Отправлен: 06.12.2005, 19:43 Оценка за ответ: 5 Комментарий оценки: пасиба
Отвечает: Golden Spider
Здравствуйте, 34076!
Есть такая компонента ZipForge(примерно 1.5 mb)
лежит тут http://componentace.com/.
Перед закачкой нужно будет заполнить анкету, но ничего страшного в этом нет.
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 06.12.2005, 21:19 Оценка за ответ: 5 Комментарий оценки: пасиба
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 06.12.2005, 22:31 Оценка за ответ: 5 Комментарий оценки: пасиба
Отвечает: sir henry
Здравствуйте, 34076!
С помощью следующей функции:
ShellExecute(0. 'open', 'pkzip', 'имя_архива файлы_которые_пойдут_в_архив', NIL, SW_SHOW);
Вместо pkzip можете подставить какой-нибудь свой архиватор, который умеет делать zip файлы.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:00 Оценка за ответ: 5 Комментарий оценки: пасиба
Вопрос № 30.933
Здравствуйте уважаемые эксперты. Дан главный модуль программы
program Project1;
uses
ShellApi, Windows;
{$R res.res}
begin
{какой-то код}
end.
В файле ресурса res.res содержится иконка. Как ее воткнуть в экзешник?
Я делал так:
Application.Icon.LoadFromResourceName(hInstance,'IconName');
но тогда приходится подключать модуль Forms(иначе Delphi говорит - не знаю что такое Application), а это лишние 350 КВ ...
Отправлен: 06.12.2005, 20:11
Вопрос задал: Beginner (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Татьяна
Здравствуйте, Teapot!
обычно это можно сделать в свойствах проекта
Project->Options->Application->LoadIcon
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 06.12.2005, 20:20 Оценка за ответ: 4 Комментарий оценки: Все бы хорошо, но как только я удаляю блок Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; то эта опция становится недоступна. А удаление этого блока следет из того, что я исключаю из программы модуль Forms. Вот такая блин арифметика.
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Teapot!
Логично. Объект Application описан в данном модуле... И много чего еще - отсюда прибавка размера...
В твоем случае нужно пользовать WinAPI ... Сходи на msdn.microsoft.com - там поищи нужные функции...
Отвечает: Denis Hakimov
Здравствуйте, Teapot!
Можно использовать функцию LoadIcon(h: HInstance,n: PChar):HICON;stdcall;
которая позволяет загрузить из ресурса приложения иконку, пример в приложении.
Эта функция описана в модуле windows.pas так что проблем с размером программы не возникнет :).
Удачи!
Приложение:
Ответ отправил: Denis Hakimov (статус: 5-ый класс)
Отправлен: 06.12.2005, 20:32 Оценка за ответ: 5 Комментарий оценки: Спасибо! То что надо!
Отвечает: sir henry
Здравствуйте, Teapot!
Можете воспользоваться альтернативной функцией из WinAPI LoadIcon(). Загружает как из файла, так и из ресурса.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:07
Вопрос № 30.941
Что я должен знать что быть профессионалом Delphi.
Отправлен: 06.12.2005, 22:29
Вопрос задал: E.T.T (статус: Посетитель)
Всего ответов: 9 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss Здравствуйте, E.T.T!
Чтобы стать профессионалом, нужно много опыта. А знания без опыта - ничто, т.к. в этом случае обладатель знаний не умеет их применять и не знает мелких, но очень подковыристых ньюансов.
Из того, что нужно знать почти каждому программисту Delphi:
1. Язык Object Pascal - основные функции, типы данных, классы и др.
2. Хорошо бы знать WinAPI (целиком не возможно, но хотя бы основы)
3. Неплохо бы знать фундаментальные алгоритмы и структуры данных (есть много книг с аналогичным названием, в т.ч. и по Delphi).
Это основы, далее уже, в зависимости от области деятельности:
Графика - для игроделов,
БД - для разработчиков баз данных,
OLE, COM, .NET и др. технологии
Все познать никогда Вам не удастся потому, необходимо научиться находить материал и научиться им пользоваться, тогда в любой ситуации Вы сможете легко обойти преграду, найти и воспользоваться готовым кодом, компонентами, советами и т.п. и выполнить поставленную задачу. Это, в основном, приходит с опытом.
Удачи!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 06.12.2005, 22:58
Отвечает: Лучников Юрий Владимирович
Здравствуйте, E.T.T!
Профессионал не тот, кто ВСЕ знает, а тот, кто умеет найти нужную ему информацию и верно воспользоваться ей;)
Отвечает: Master135
Здравствуйте, E.T.T!
По моему мнению, единственное что может сделать вас спецом это опыт программирования разных задач. Ведь в программировании самое главное это оптимальный алгоритм, причем независимо от языка программирования.
--------- И пусть кто-то скажет что я не прав....
Ответ отправил: Master135 (статус: Студент)
Отправлен: 07.12.2005, 00:43
Отвечает: Romodos
Здравствуйте, E.T.T!
Чтобы стать профессионалом в Delphi, надо стать профи в программировании, т.е.
1.Иметь хорошую математическую подготовку.
2.Изучить алгоритмы программирования.
3.Иметь хорошую голову на плечах.
4.Учиться всему
5.Знать Pascal, Windows API, другие вещи, необходимые для написания программ, в зависимоти от области
Вот и всё!!
--------- FAQ me off!
Ответ отправил: Romodos (статус: Студент)
Отправлен: 07.12.2005, 06:09
Отвечает: Vbhjndjhtw
Здравствуйте, E.T.T!
Вот сайты на которых Вы почерпнёте много информации
http://www.delphimaster.ru
http://www.delphikingdom.com/map.asp
--------- Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 07.12.2005, 07:41
Отвечает: sir henry
Здравствуйте, E.T.T!
Что знать - зависит от решаемой задачи. А в общем - читайте книжки по языку и алгоритмам. В последнее время самое популярное направление - бухгалтерия, так что запишитесь еще на курсы бухгалтеров.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:15
Отвечает: Маренич Владимир
Здравствуйте, E.T.T!
1. Выучить PASCAL и объектно-ориентированное программирование
2. Научится работать с компонентами Delphi
3. Изучить работу вспомагательных классов и процедур/функций Delphi
4. Научиться работать с базами данных
5. Уметь реализовывать любые алгоритмы
6. Научиться создавать собственные компоненты
7. Изучить технологию OLE
8. и т.д. и т.д.
Программистами не рождаются - ими становятся. Только для этого нужен определенный талант, склад ума, желание, терпение и долгие годы работы.
Т.к. нужно не только много знать, но и уметь все это на практике. Удачи.
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 07.12.2005, 12:44 Оценка за ответ: 5
Отвечает: Golden Spider
Здравствуйте, E.T.T!
Хмм... Ну думаю как можно больше и лучше (не говоря уже об основах).
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 07.12.2005, 16:23
Отвечает: Ataman N. N.
Здравствуйте, E.T.T!
В первую очередь вы должны иметь опыт разработки разнообразных проектов. Профессионализм приходит с опытом.
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 07.12.2005, 18:35
Вопрос № 30.943
Я кочу сделать проект но не смагу найте что то. Не поможите найти. Спасибо
Отправлен: 06.12.2005, 22:34
Вопрос задал: E.T.T (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Ujin Antikvar
Здравствуйте, E.T.T!
Если не секрет то проэкт чего вы хотите создать??? И в чем нужна наша помощь???
--------- "Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт
Ответ отправил: Ujin Antikvar (статус: 4-ый класс)
Отправлен: 06.12.2005, 23:27
Отвечает: Лучников Юрий Владимирович
Здравствуйте, E.T.T!
Не понятна суть вопроса... Попытайтесь сформулировать его в более развернутой форме.
Отвечает: sir henry
Здравствуйте, E.T.T!
Теперь совершенно ясно, что программистом Вам не стать.
Во первых, у Вас проблемы с орфографией. Поверьте, Вы просто измучаетесь исправлять синтаксические ошибки в своей программе.
Во-вторых, Вы не знаете что Вам надо. Это уже случай клинический.
Извините, если обидел.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:19
Отвечает: Маренич Владимир
Здравствуйте, E.T.T!
Создание нового проекта осуществляется выбором меню FileNewApplication
Потом сохраняете его куда-нибудь.
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 07.12.2005, 12:21 Оценка за ответ: 1
Отвечает: Golden Spider
Здравствуйте, E.T.T!
А что именно вы не можете найте?
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 07.12.2005, 16:25
Отвечает: Ataman N. N.
Здравствуйте, E.T.T!
Сделайте проект моделирования колебаний мембраны, или вывод уравнения колебаний развивающегося флага.
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 07.12.2005, 18:33
Вопрос № 30.946
Такая проблемма возникла. Написал программу, на форме компоненты, которые используют dll из System32.
Такой dll в system32 нет, поэтому написал чтобы из ресурса извлекала ее туда. Но видимо обращение к dll
идет сразу и приложение просто не успевает скопировать эту dll туда - выдает ошибку, мол, dll не найдена и все!
Что-то надо сделать чтобы при запуске программы первым делом проводилась проверка dll и ее копирование - до того как
создадутся компоненты. Что посоветуете?
Отправлен: 06.12.2005, 22:56
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Denisss Здравствуйте, REFERI! Вы, наверное, пользуетесь комбинацией
procedure proc(...); external 'dll.dll';
Потому и не получается ничего.
В этом случае надо использовать процедуру, описанную в приложении.
Приложение:
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 06.12.2005, 23:11
Отвечает: Лучников Юрий Владимирович
Здравствуйте, REFERI!
Носить библиотеку с собой и линковать ее статически...
Ответ отправил: Лучников Юрий Владимирович (статус: 4-ый класс)
Отправлен: 06.12.2005, 23:36 Оценка за ответ: 2
Отвечает: sir henry
Здравствуйте, REFERI!
Функцию FileExists(), что же еще.
И применяйте позднее связывание, чтобы успеть скопировать dll, но лучше будет не заниматься фигней, а установить эту dll при установке Вашей программы.
Прошу Вас, воздержитесь от оценки ответа. Вы слишком неадекватны в своих оценках. Извините. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:23
Отвечает: Lector
Здравствуйте, REFERI!
Можно создавать компонент в динамическом режиме. Это можно делать и после копирования библиотеки.
--------- Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай, а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: Студент)
Отправлен: 07.12.2005, 11:02
Отвечает: Маренич Владимир
Здравствуйте, REFERI!
Единственное разумное решение, которое приходит в голову - это написать еще одно приложение-лаунчер, которое будет проверять наличие DLL, копировать его в SYSTEM32 при необходимости и после этого запускать основное приложение.
Одним EXE-шником не обойтись, т.к. запуск приложения и линковка используемых модулей производится операционной системой. И при отсутсвии неоходимых модулей приложение просто не запускается.
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 07.12.2005, 12:12
Отвечает: Golden Spider
Здравствуйте, REFERI!
Можно динамически загружать функцию (если я вас правильно понял).
implementation
type
Название=procedure (параметры);
procedure tform1.button1click(...
var
hcdll:Thandle;
proc:название;
begin
hcdll:=loadlibrary('...system32somedll.dll');
if hcdll<=HINSTANCE_ERROR then begin
{'А библиотеки то нет!?'}
exit;
end;
proc:=getprocadress(hcdll,'Нужная функция');
if not assigned(proc) then begin
{Нет такой функции}
exit;
end;
proc(параметры); {Use pleace :)}
freelibrary(hcdll);
end;
Попробуй...
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 07.12.2005, 16:45
Вопрос № 30.950
Я еще оаз по поводу dll.
В приложении прописано использовать ACS_LAME
Uses ... ACS_LAME...
этот ACS_LAME.pas использует lame.pas где прописано
{$IFDEF WIN32}
LAME_PATH = 'lame_enc.dll';
{$ENDIF}
Как сделать чтобы при запуске программы сначала скопировалась эта dll из запакованного ресурса,
а уже потом шло это обращение
{$IFDEF WIN32}
LAME_PATH = 'lame_enc.dll';
{$ENDIF}
?????
Отправлен: 06.12.2005, 23:32
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: sir henry
Здравствуйте, REFERI!
Не надо ее ни откуда копировать, просто установите эту DLL при установке Вашей программы.
Прошу Вас, воздержитесь от оценки ответа. Вы слишком неадекватны в своих оценках. Извините. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:27 Оценка за ответ: 5 Комментарий оценки: Просто рано поставил оценку в прошлый раз. Вы ведь потом помогли... У меня нет инсталлятора... Програмка небольшая, несложная, без меню... Короче инсталятор писать непойдет. Вот предложили Initialization сделать. Надо попробовать... А может Unit lame.pas переписать? Вставить туда этот Initialization и сделать там проверку на fileexists??? Надо
попробовать.
Отвечает: Lector
Здравствуйте, REFERI!
Попробуйте вставить блок Initialization в форму, которая содержит этот компонент.
--------- Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай, а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: Студент)
Отправлен: 07.12.2005, 11:05 Оценка за ответ: 5 Комментарий оценки: Мысля! Попробую. Спасибо!
Вопрос № 30.973
Здравствуйте снова.
Я очень начинающий дельфер.
По вашим советам скачал zipforge. Порыл хелп, но чёт так и не понял, как ее пользовать. Просьба привести в пример кусок кода (мне нужно добавить файл в архив) или может у кого есть русский хелп.
Отправлен: 07.12.2005, 11:40
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Golden Spider
Здравствуйте, 34076!
Зачем же Help взгляните в папку ZipForgeDemosDelphiAdvanced там пример по использованию основных функций (и AddFile тоже:)). По английски, но всё ястно.
Не разберетесь то мне прийдется освежать себе память.
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 07.12.2005, 22:28 Оценка за ответ: 5 Комментарий оценки: Я сам уже разобрался, но всеравно спасибо
Вопрос № 30.975
Доброе время суток, Уважаемые эксперты!!!
Подскажите плиз,
Как В компонент WebBrowser загрузить страничку из текущего каталога, без указания полного пути???
У меня такая ситуация: ехе файл с браузером и страничка которую нужно загрузить, находяться в одном каталоге , мне нужно ее загрузить не указывая полный путь. то есть я прописываю WebBrowser1.Navigate('index.htm'); но она у меня туда не грузиться пока я не пропишу к ней полный путь.
Возможен ли такой вариан вообще?
Заранее благодарен!!!!
Отправлен: 07.12.2005, 12:21
Вопрос задал: Andrey_666 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Andrey_666!
Попробуйте Nafigate('file://index.htm').
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 12:35 Оценка за ответ: 5
Отвечает: Zubex
Здравствуйте, Andrey_666!
А что Вам мешает дать полный путь? Напишите следующим образом:
WebBrowser1.Navigate(ExtractFilePath(ParamStr(0))+'index.htm')
или
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'index.htm')
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 3-ий класс)
Отправлен: 07.12.2005, 12:41 Оценка за ответ: 5
Ответ отправил: Schmak (статус: Студент)
Отправлен: 08.12.2005, 14:47 Оценка за ответ: 5
Вопрос № 30.983
Моя проблема состоит в следующем..
Начальство дало указание написать прогу которая по связи с RS-232 будет производить тестирование канала аппаратуры ИКМ. Для написания взял модуль Comm32 (широко известный).
Процедура посылки у меня инкапсулирована в поток и запускается при помощи метода Synchronize. Уже в нем собственно и выполняется процедура записи в порт - WriteCommData. Однако данные которые необходимо послать описаны типом PAnsiChar. Как мне преобразовать ИМЕННО байтовое значение (0-255) к данному типу (PAnsiChar)?
Отправлен: 07.12.2005, 14:47
Вопрос задал: Aplai (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Маренич Владимир
Здравствуйте, Aplai!
Если нужно посылать один байт даных, то можно исхитриться так:
type
TTempRec = packed record
Data: byte;
TheEnd: char;
end;
...
var X: TTempRec;
begin
X.Data:=MyByte;
X.TheEnd:=#0;
WriteCommData(PAnsiChar(@X));
...
Однако байт значением 0 отправить не получится, т.к. он является признаком конца строки
Лично я с портами в винде работаю через CreateFile, WriteFile, ReadFile (WinAPI)
Там можно всё!
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 07.12.2005, 14:56 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Aplai!
PAnsiChar это PChar.
Var
B: Byte;
P: PChar;
Begin
B:=200;
P:=PChar(IntToStr(B));
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 15:13 Оценка за ответ: 3 Комментарий оценки: Дело в том, что мне нужно послать ИМЕННО 1 байт. Теперь возьмем ваш вариант: B:=200; //B=200 temp:=IntToStr(B); // temp='200'; P:=PChar(temp);// P=#xx#xx#xx ???? т.е. 3 байта+признак окончания строки;