Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: xy
Дата сообщения: 08.09.2007 11:06
yuish
а если не один :-?
Автор: yuish
Дата сообщения: 08.09.2007 12:24
xy
тогда vss.
Автор: SERGE_BLIZNUK
Дата сообщения: 08.09.2007 13:33
RomanTim
yuish
Большое спасибо за информацию про VSSConnexion - теперь воленс-неволенс прийдётся попробовать ;)))
Автор: vserd
Дата сообщения: 08.09.2007 14:44
xy

Цитата:
а если не один :-?

Subversion
Автор: Maks150988
Дата сообщения: 09.09.2007 00:20
Накорнец-то дорвался др интернета. Значит фиг знат как файл по сигнатуре проверять. Киньте примерчик плиз.
Потом хочется использовать возможность определения занимаемого объема ОЗУ моей программой. Использую GetProcessMemoryInfo, но эта функция не точно определяет память. Посоветуйте аналог.
И еще захотел встроить что-то наподобие диалога просмотра свойств файла. Добавил элемент SysTabControl32. Стандартно статик элементы окрашены в 3d-face цвет или как там его правильно назвать. Изменил их цвет на белый, но закавыка в том что стремно смотрится потом - то есть статики ярко белые, а вкладка какого-то сероватого цвета и естественно статики уж слишком заметны. Какой цвет нужен, чтобы слился фон статика и таба? В данный момент использую $00FFFFFF.
Автор: Chuvakstepan
Дата сообщения: 09.09.2007 10:50
Подскажите пожалуйста как связать TUpDown и TEdit, Associate не связывает.
Автор: SERGE_BLIZNUK
Дата сообщения: 09.09.2007 13:35

Цитата:
Associate не связывает.

как это, не связывает?!?!
в вашем объекте типа TUpDown в дизайн-тайме в инспекторе задайте Associate
Associate = Edit1
у меня прекрасно работает.

Maks150988

Цитата:
Значит фиг знат как файл по сигнатуре проверять. Киньте примерчик плиз.

интересный вы вывод сделали... почему же - "фиг знат", всё очень просто:
смотри тут mp3_signature.rar или тут (зеркало) mp3_signature.rar

учти, что код чисто ДЕМОНСТРАЦИОННЫЙ (например, имя файла в коде прямо задаётся, размеры буферов нереальные и т.д.!
но, разумеется, код рабочий!!
Автор: Chuvakstepan
Дата сообщения: 09.09.2007 15:43
SERGE_BLIZNUK
Вроде разобрался

Подскажите как заменить этот "0" при старте
Просто при Форм.Креат он считывает значения с ini, а при связке UpDown с Edit: Edit1.Text = 0
Автор: SERGE_BLIZNUK
Дата сообщения: 09.09.2007 16:53
Chuvakstepan
перенесите код иницилизаци на FormShow:
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.Text := '45';
end;
Автор: Maks150988
Дата сообщения: 09.09.2007 18:26
SERGE_BLIZNUK
Огромнейшее вам спасибо!
Автор: Chuvakstepan
Дата сообщения: 10.09.2007 09:38
SERGE_BLIZNUK
Спасибо!

Люди подскажите как сделать приложение в виде dll, чтобы в другом приложении оно запускалось допустим, горячей клавишей
Автор: SpoinT
Дата сообщения: 10.09.2007 10:26
Chuvakstepan
Плагин пиши. В ДЛЛ пихай все что надо, формы и т.п., и через главное окно вызывай.
Автор: Chuvakstepan
Дата сообщения: 10.09.2007 10:36
SpoinT
Информативно
Какой проект создавать в Delphi ? Как открыть dll как исполняемый файл в другой программе (другой проект) желательно через горячую клавишу? Да и как уменьшить можно размер dll (если возможно)
Автор: ErshovSP2004
Дата сообщения: 10.09.2007 11:38
Господа может ли кто нибудь выложить заведомо рабочий кусок кода в котором строка TreeVeiw отрисовывается вручную (функции CustomDraw и CustomDrawItem).
Если что то Помощь читал.
Конечная цель реализовать в строке выделение искомого слова, как это сделано в Делфи 7 при поиске "Find in Files".
Автор: RomanTim
Дата сообщения: 10.09.2007 12:11
Chuvakstepan
Другая программа твоя, или например Word?
Если твоя, то описываешь в ней функции из библиотеки как external (или LoadLibrary, GetProcAddress), и в нужный момент вызываешь.
Если нет, то пишешь свое приложение, которое сделает SetWindowsHook на функцию из твоей библиотеки и повесит ее на обработку сообщений от клавиатуры, а в функции уже можешь смотреть что за клавиша нажата и что-то делать. Подробнее про хуки в MSDN
Автор: Chuvakstepan
Дата сообщения: 10.09.2007 12:32
RomanTim
Программа моя, но можно поподробней как вызвать функцию. и как в самой dll сделать стартом открытие формы

Подскажите ещё как сделать два подряд условия:

Код: if pos('Есть',Audio2.caption) = 0 then //первое условие
if Sound3 <> Audio2.Caption then begin //второе условие
Zvuk.Font.Color:=clRed;
Next.Enabled:=False;
Ready.Font.Color:=clRed;
Ready.Caption:='Ваша система не подходит минимальным требованиям. Вы не можете продолжить установку';
Ready.Left:=8;
Автор: skinash
Дата сообщения: 10.09.2007 12:32
Chuvakstepan
[more=Динамическая и статическая загрузка DLL]


DLL возможно загружать двумя способами:

- статически
- динамически

Давайте создадим простую библиотеку DLL:



Код:
{Project file name: c:\example\exdouble\exdouble.dpr}

library ExDouble;
// my simple dll

function calc_double(r: real): real; stdcall;
begin
result := r * 2;
end;

exports
calc_double index 1;

end;

Автор: Chuvakstepan
Дата сообщения: 10.09.2007 12:33
skinash
Спасибо! Попробую разобраться!
Автор: skinash
Дата сообщения: 10.09.2007 12:37
Chuvakstepan

Код: if (pos('Есть',Audio2.caption) = 0) and (Sound3 <> Audio2.Caption) then
Автор: Maks150988
Дата сообщения: 10.09.2007 18:49
Приветствую. Все-таки нашел код для скроллинга строки. Но не компилируется, компилятор ругается "left side cannot be assigned to"...
Вот код собственно:

Код:

program sample;

uses
Windows, Messages;

{$R dialog.res} //Подключаем ресурс диалогового окна

const
ID_SCROLLTIMER = 666;
LengthGoString = 30; //Указываем сколько символов мы будем проказывать за раз
GoString = 'В конце стpоку желательно повтоpить, ' +
'чтоб получить эффект кольцевого движения! В конце ст';
i: Integer = 1;

//Функция, обрабатывающая все команды от элементов управления окна
function DlgProc(hWin: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): bool; stdcall;
begin
Result := False;
case uMsg of
WM_INITDIALOG: SetTimer(hWin, ID_SCROLLTIMER, 300, nil);
WM_TIMER:
begin
SendMessage(GetDlgItem(hWin, 201), WM_SETTEXT, 0,
Integer(PChar(Copy(GoString, i, LengthGoString))));
Inc(i);
if Length(GoString)-LengthGoString < i then i := 1;
end;
WM_COMMAND:
case LoWord(wp) of
//При нажатии на кнопку с идентификатором 1 закрываем программу
1: EndDialog(hWin, 0);
end;
//При нажатии на кнопку "Х" в шапке программы закрываем приложение
WM_DESTROY, WM_CLOSE:
begin
KillTimer(hWin, ID_SCROLLTIMER);
PostQuitMessage(0);
end;
end;
end;

begin
//Открываем диалоговое окно MAIN_WINDOW (достаем окно из ресурсов)
DialogBox(hInstance, 'MAIN_WINDOW', 0, @DlgProc);

end.

Автор: Arvur
Дата сообщения: 10.09.2007 19:49
Maks150988
На какую строку ругается? Компилять лениво
В любом случае у тебя i почему-то в константах - если не выставлен флажок компилятора, будет ругань.
Автор: SERGE_BLIZNUK
Дата сообщения: 10.09.2007 20:09

Arvur - Вы правы. действительно в опциях компилятора параметер
"Assignable type constant" должен быть отчекрыжен!

Maks150988
либо в опциях птичку поставьте (либо используейте директиву {$J+}
либо перенесите I в var - только не забудьте проиницилизировать!


Добавлено:
Arvur - кстати, уважаю - шаман однако!!!

Автор: Arvur
Дата сообщения: 10.09.2007 20:33
SERGE_BLIZNUK
Я?! Ни в жисть
Меня просто так программированию учили - ручка и бумажка, и никакого тебе компа, пока нормальный код писать не научишься
Читается после этого и вовсе замечтательно.

P.S. Кстати, галочка имхо все-таки полезная - с ней можно писать более читаемый код. Но здесь не тот случай, конечно.
Автор: Maks150988
Дата сообщения: 10.09.2007 21:18
Благодарю. Использовал {$J+} и все скомпилировалось. Только хотелось бы чтобы строка начинала прокрутку с правого края, а то текс с самого начала и потом резко повторяется. Допустим наподобие проделано в Квик Анпаке. Хотелось бы также намутить.
Автор: ErshovSP2004
Дата сообщения: 11.09.2007 09:04
Не сочтите флудом. Сам потер примеры отсюда и вопрос возник.
ErshovSP2004

Цитата:
Господа может ли кто нибудь выложить заведомо рабочий кусок кода в котором строка TreeVeiw отрисовывается вручную (функции CustomDraw и CustomDrawItem).
Если что то Помощь читал.
Конечная цель реализовать в строке выделение искомого слова, как это сделано в Делфи 7 при поиске "Find in Files".

Отвечу себе сам цитатой с другого форума

Цитата:
... чувак, юзай исходник готовый. Борландовский
Путь в правде: C:\Program Files\Borland\Delphi1,2,3,4,5,6,7,8,9 вообще какая у тя\Demos\CustomDraw ...


Добавлено:
Увы счастье моё было недолгим. Ну не получается в отдельном Node стандартного TreeView часть текста выделить жирным. К тому же при горизонтальном скролинге даже в примере от борланда лажа при ручной отрисовке (не учитывается смещение текста).
А вот в VirtualTreeview всё получилось. Спасибо разработчику
Автор: Grafus
Дата сообщения: 11.09.2007 15:47
Народ, плз, посоветуйте функцию определения наличия сервиса на удаленном компьютере.
А именно нужно «наличие» сервиса, «тип запуска» (выкл, авто или вручную) и его статус.
В нете наткнулся тока на это, но этого мало:

Код:
function ServiceGetStatus(sMachine, sService: string ): DWord;
var
h_manager, h_service, h_svc: SC_Handle;
service_status: TServiceStatus;
hStat: DWord;
begin
hStat := 1;
h_manager := OpenSCManager(PChar(sMachine) ,nil, SC_MANAGER_CONNECT);
if h_manager > 0 then
begin
h_svc := OpenService(h_manager,PChar(sService), SERVICE_QUERY_STATUS);
if h_svc > 0 then
begin
if(QueryServiceStatus(h_svc, service_status)) then
hStat := service_status.dwCurrentState;
CloseServiceHandle(h_svc);
end;
CloseServiceHandle(h_manager);
end;
Result := hStat;
end;
//Ответы проверки:
//SERVICE_STOPPED
//SERVICE_RUNNING
//SERVICE_PAUSED
//SERVICE_START_PENDING
//SERVICE_STOP_PENDING
//SERVICE_CONTINUE_PENDING
//SERVICE_PAUSE_PENDING
Автор: Chuvakstepan
Дата сообщения: 11.09.2007 16:09
Народ, а как можно уменьшить размер скомпилированного EXE ?
Типа, настроить что-то в настройках компила, ZIP и UPX не предлагать!
Автор: RostY
Дата сообщения: 11.09.2007 16:48
ASPack... или использовать API вместо VCL

Добавлено:
или, если не очень навороченая программа, использовать более раннюю версию Delphi для компиляции, т.к. в большинстве случаев чем старше Delphi, там большие ЕХЕ-шки делает
Автор: SERGE_BLIZNUK
Дата сообщения: 11.09.2007 18:44
Chuvakstepan
можно ещё посмотреть в сторону использования KOL and MCK - но по сути это тот же отказ от VCL - только он облегчён через библиотеку зеркальных классов MCK (Mirror Classes Kit).
Ещё можно почитать тут - KOL и MCK - Компактные программы на Delphi

но это если писать с нуля (или полностью переписывать проект). Для готового проекта это не подойдёт!


Цитата:
UPX не предлагать

RostY а чем по сути ASPack от UPX'а отличается?? ;-)))))

Автор: A_V
Дата сообщения: 11.09.2007 22:36
Grafus
наличие сервиса проверить просто - попробовать его открыть через OpenService, если вернет ERROR_SERVICE_DOES_NOT_EXIST, значит нет такого)
Тип запуска - через QueryServiceConfig, он заполнит структуру, в к-й есть и StartType. подробности в MSDN
Chuvakstepan
"настроить что-то в настройках компила" можно, например поставить галку "build with runtime packages" - exe уменьшится, но тогда на машине должны быть используемые тобой bpl'и.
а вобще, если не паковать exe - то избавляться от тяжелых компонент, если сам VCL считаешь тяжелым - то KOL/MCK, как уже написали

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.