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

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

Автор: Frodo_Torbins
Дата сообщения: 29.08.2012 16:01
OOD
Если прога не поддерживает работу в скрытом режиме, то тогда разве что на скрытом десктопе ее запускать: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=70742
Автор: MrZeRo
Дата сообщения: 29.08.2012 16:33
OOD
А если через CreateProcess и в параметре Startupinfo.wShowWindow указать SW_HIDE, dwFlags = STARTF_USESHOWWINDOW ? Не гарантия что получится, по идее этот способ почти эквивалентен вашему, то можно попробовать. Там еще можно попытаться установить нулевой размер окна в Startupinfo не забыв при этом в dwFlags включить STARTF_USESIZE.
Автор: eddoc
Дата сообщения: 29.08.2012 18:19
shadow user777

Цитата:
Вычисление хэш МД5 файла.
http://pastebin.com/ESDT6eEm

лучше пользоваться родными дельфевыми модулями
http://www.webdelphi.ru/2010/05/kriptografiya-v-delphi-sredstvami-indy-i-synapse/
Автор: shadow user777
Дата сообщения: 29.08.2012 21:06
eddoc
Я честно говоря даже и приведенными мной копи-пастами не знаю как пользоваться.
Вопрос запустил на удачу. Авось кто подсобит с поделкой.
Сам я однозначно не осилю, слишком мало времени на самообразование, и основ никаких.
Автор: Frodo_Torbins
Дата сообщения: 30.08.2012 11:46
shadow user777
Для поиска исполнителей у нас на форуме существует отдельная ветка, плюс куча специализированных сайтов типа free-lance.ru Если же у вас нет желания платить за такую работу и все же имеется немного свободного времени, то гляньте в сторону XStarter и HiAsm. Знаний языков программирования они не требуют.
Автор: shadow user777
Дата сообщения: 30.08.2012 16:06
Frodo_Torbins
На втором я пишу, достиг определенных успехов, весьма неплохих. Однако длл в нём не напишешь. А мне нужна обычная виндовая длл. Ехе на хиасме с этими функциями я написал очень давно, но мне ехе не подходит, мне длл нужна.
Конструкторов имеющих возможность создать длл нет.
Автор: Ichigo2
Дата сообщения: 31.08.2012 10:36
Привет. У меня вопрос про динамические массиви.
Моя скупердяйная душа желает знать, правда ли что запись rec:=nil уничтожает весь массив или только указатель на него?
Автор: akaGM
Дата сообщения: 31.08.2012 10:56
Ichigo2
arr: array of double;

ты про такие?
тогда теория говорит, что надо звать setlength(arr, 0);
Автор: XPerformer
Дата сообщения: 31.08.2012 12:14
Ichigo2

Цитата:
правда ли что запись rec:=nil уничтожает весь массив или только указатель на него?


Я голосую за то, что разрушается весь массив. Правда, точный момент, когда менеджеру памяти захочется эту память отдать, неведом
Автор: Frodo_Torbins
Дата сообщения: 31.08.2012 17:09
shadow user777
Если вы уже выросли из HiASM, то после выхода Delphi XE3, вам стоит ее попробовать. Там ожидается система Visual LiveBindings очень напоминающая HiASM. Да и компонентов для работы с системой на низком уровне для делфи тоже достаточно. Возможно вам даже удастся сделать все по хайасмовски, без написания кода вручную.

akaGM
Ничего дополнительно руками делать не надо, даже arr:=Nil не обязателен. Это и называется автоматическим управлением памятью.
Автор: A_V
Дата сообщения: 01.09.2012 10:15
Ichigo2
rec:=nil, так же как и setlength(rec, 0) приводит к вызову System._DynArrayClear, что уничтожает весь массив. правда обычно это не нужно, т.к массив имеет счетчик ссылок, и прекрасно уничтожается сам, при выходе из области видимости
Автор: Bonivur
Дата сообщения: 07.09.2012 11:02
Разбираю сейчас книгу Фаронова по созданию компонент (пример дан чуть ниже). Вопрос такой - в этом модуле определен метод Timer с параметрами (Sender: TObject). Далее этот метод вызывается в конструкторе Create , но уже БЕЗ параметров, более того, добавление параметров вызывает ошибку. Почему это так происходит? Зачем вобще этот параметр нужен? Это стандарт так вызывать процедуры и объявлять их в полях класса? Почему нельзя объявить метод Timer без параметра?

Вот пример -
[more=Код модуля]
Код:
unit FarWatchClock;

interface

uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, DateUtils;


type
TWatchView = (wvClock, wvInterval, wvClockInterval,
wvIntClock, wvClockIntClock);

type
TFarWatchClock = class(TCustomLabel)
private
FInterval: Integer;
FOnWatchTime: TNotifyEvent;
FTimer: TTimer;
FWatchTime: TDateTime;
FWatchView: TWatchView;
procedure SetInterval(Value: Integer);
procedure SetWatchTime(Value: TDateTime);
procedure SetWatchView(Value: TWatchView);
protected
procedure Timer(Sender: TObject); // ВОТ ЭТА ПРОЦЕДУРА
public
constructor Create(AOwner : TComponent); override;
procedure Paint; override;
published
property Align;
property Color;
property Font;
property Interval: Integer read FInterval write SetInterval;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnWatchTime: TNotifyEvent read FOnWatchTime write FOnWatchTime;
property ParentColor;
property ParentFont;
property ParentShowHint;
property ShowHint;
property Visible;
property WatchTime: TDateTime read FWatchTime write SetWatchTime;
property WatchView: TWatchView read FWatchView write SetWatchView;
end;


procedure Register;

implementation


procedure Register;
begin
RegisterComponents('Samples',[TFarWatchClock]);
end;

{
******************************************************** TFarWatchClock ********************************************************
}
constructor TFarWatchClock.Create(AOwner : TComponent);
begin
inherited;
FTimer := TTimer.Create(Self);
FTimer.OnTimer := Timer;
FTimer.Enabled := True;
Caption := TimeToStr(Time);
end;

procedure TFarWatchClock.Paint;
var
S: string;
begin
inherited;
S := TimeToStr(Time);
if FWatchTime <> 0 then
begin
FInterval := SecondsBetween(Time, FWatchTime);
case FWatchView of
wvInterval: S:= Format ('%Sc',[FloatToStrF(FInterval,ffNumber,15,0)]);
wvClockInterval: S:= Format ('%S %Sc',[S, FloatToStrF(FInterval,ffNumber,15,0)]);
wvIntClock: S:=TimeToStr(FWatchTime - Time);
wvClockIntClock: S:=Format('%S %S',[S, TimeToStr(FWatchTime - Time)]);

end;
end;

Caption:=S;
end;

procedure TFarWatchClock.SetInterval(Value: Integer);
begin
if Value<>FInterval then
begin
FInterval := Value;
if Value = 0 then
FWatchTime := 0
else
FWatchTime := Time + Value / (24 * 3600);
Invalidate;

end;
end;

procedure TFarWatchClock.SetWatchTime(Value: TDateTime);
begin
if Value <> FWatchTime then
begin
FWatchTime := Value;
Invalidate;
end;
end;

procedure TFarWatchClock.SetWatchView(Value: TWatchView);
begin
if Value <> FWatchView then
begin
FWatchView := Value;
Invalidate;
end;
end;

procedure TFarWatchClock.Timer(Sender: TObject);
begin
if FInterval > 0 then Dec(FInterval);
Invalidate;

if (TimeToStr(Time)=TimeToStr(FWatchTime)) and (Assigned(FOnWatchTime)) then
begin
FOnWatchTime(Self);
Interval := 0;
end;
end;


initialization
end.
Автор: salexn1
Дата сообщения: 07.09.2012 11:16
Bonivur
Видно плохо вы читали книгу...
Метод Timer отрабатывает при событии OnTimer у объекта fTimer: TTimer...
В конструкторе он НЕ ВЫЗЫВАЕТСЯ, а всего лишь указывается, что данный метод будет вызываться...

Одним словом: читать,читать и еще раз читать
Автор: Bonivur
Дата сообщения: 07.09.2012 21:50
salexn1
Просто если я определю процедуру MyProc с параметром, к примеру MyProc (val:Integer);
то при вызове её без параметра мне напишет ошибку. А почему тут не пишет? И почему нельзя определить процедуру Timer вобще без параметра? Вот что мне хотелось бы узнать.
Автор: Varenik
Дата сообщения: 08.09.2012 07:25
Bonivur
Тебе ж сказали:
Цитата:
В конструкторе он НЕ ВЫЗЫВАЕТСЯ, а всего лишь указывается, что данный метод будет вызываться...

FTimer.OnTimer := Timer;
Timer здесь стоит справа и не вызывается, а событию OnTimer присваивается указатель на метод Timer
А нельзя объявить без параметра, потому что событие OnTimer имеет тип TNotify
TNotify=procedure(Sender:TObject), поэтому этому событию можно присвоить только указатель на метод с таким же числом параметров (1) и таким же типом (TObject)
Автор: Bonivur
Дата сообщения: 08.09.2012 18:35
Varenik
Вот теперь понятно! Спасибо большое.
Автор: miwa
Дата сообщения: 10.09.2012 22:52
Bonivur
Хочу дополнительно обратить ваше внимание на выделенное Varenik-ом слово "указатель". Фактически, правильно надо бы писать так:

FTimer.OnTimer := @Timer;

Просто Delphi предоставляет нам "синтаксический сахар", позволяя не уточнять, что в данном случае передается именно указатель на процедуру. В Лазарусе, например, надо явно указывать символ «@» в таких случаях.
Автор: Cryogen2003
Дата сообщения: 11.09.2012 11:27
Добрый день.

Есть проблема - нужно добавить в программу ActiveX компонент. Но при импортировании он создает кучу интерфейсов, но не одного класса. И из-за этого не совсем понимаю как его можно использовать.
Но в тоже время, если вставить этот компонент к примеру в Microsoft excel или создать страничку html с использованием данного компонента, то все работает.

Стало быть, как быть, чтобы его запустить в Delphi?
Автор: Frodo_Torbins
Дата сообщения: 11.09.2012 13:33
Cryogen2003
Компонента на палитре появляется?
Автор: Cryogen2003
Дата сообщения: 11.09.2012 14:18
Frodo_Torbins
Нет, так как она экспортирует в pas только интерфейсы, нужных классов в получаемом pas не наблюдаю.
Автор: Frodo_Torbins
Дата сообщения: 11.09.2012 22:11
Cryogen2003
Наверное это какой то не совсем традиционный ActiveX. Может он 64-битный? Если его разработчики написали какую-нибудь доку, то в первую очередь стоит в ней поискать. Еще можно импортировать другой компонент, и по его примеру вручную создать наследника TOleControl для требуемого компонента. Правда для этого придется разобрать его tlb.
Автор: delover
Дата сообщения: 12.09.2012 17:28
Поздравляю с днём ПРОГРАММИСТА
Автор: Cryogen2003
Дата сообщения: 12.09.2012 18:09
Frodo_Torbins
Ну типа это нормальный ActiveX, ведь он работает из приложений Microsoft и из браузера.
Доку на него не писали, к сожаление NCR и Genesis стараются всегда не писать доки на свой софт.

А вот самому написать наследники Tolecontrol - гм, что то я совсем очкую на эту тему. Есть аналог от этой же компании еще одного компонента, слишком много текста в итоге получается, стремно как то
Автор: Ichigo2
Дата сообщения: 19.09.2012 22:05
Привет всем.
Вкратце суть вопроса - есть переменная Bmp: TBitmap, как ее вывести скажем на канву или TImage?
Автор: Rommiras79
Дата сообщения: 19.09.2012 22:35
Всем привет, подскажите есть у когонить пример реализации алгоритма шифрования Salsa20?
Автор: V1s1ter
Дата сообщения: 19.09.2012 23:08
Ichigo2

Код:
procedure TForm14.FormPaint(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.LoadFromFile('D:\PrgWork\Vlib_Image\MouseAngle.bmp');
Form14.Canvas.Draw(10, 10, Bmp);
Bmp.Free;
end;
Автор: Dimrix
Дата сообщения: 20.09.2012 17:11
Люди подскажите как решить задачу (а то мозги кипят уже не могу построить элементарную логическую цепочку). Добрые люди из Масдая отключили установку драйверов по тихому начиная с Висты (т.е. 7ка хочешь не хочешь а спросит доверяю ли я не подписанному драйверу). Так как юзеры часто тупят и тыкают "не доверяю", после чего не могут законектится в тырнет т.к. драйвера не установлены (ПО связана с установкой драйверов и подключение/отключение юзверя к тырнет). Доверия к юзерам нету, посему решил обойти тупизм масдая, но запнулся на ровном месте. Вообщем что нужно:
1. Я вызываю процедуру установки драйвера, которая в свою очередь выкидывает окно Виндовса с предупреждением о доверии.
2. Дабы юзер не тыкал куда не надо мне нужно за него ткнуть по кнопке доверяю. Поймать окно и кнопку не вопрос - вопрос в том, что процесс не доходит до отлова, так как ждёт пока юзер нажмёт кнопку.
3. Application.ProcessMessages наоборот мешает, так начинает выполнять ПО дальше, а мне сперва нужно цикл завершить по установки драйверов, прежде чем обрщаться к железу.
Как можно запустить отслеживание появление окна с предупреждением, да так, что бы ПО не лезло выполнять и другие задачи а крутилось внутри цикла?

PS: В принципе мою задачу можно решить тем же методом, что и с rasdial, где одним из параметров является функция, которая постоянно проверяет состояние подключения. Но как это реализовано я не знаю... а открытого кода по ней не нашёл, только сухое масдаевское описание...
Автор: Frodo_Torbins
Дата сообщения: 20.09.2012 20:30
Dimrix
TThread и вперед, на амбразуру!
Автор: rrromano
Дата сообщения: 20.09.2012 23:23
Rommiras79
На шарпе что-то нарыл - посмотрите, может, оно...
https://github.com/LogosBible/Logos.Utility/blob/master/src/Logos.Utility/Security/Cryptography/Salsa20.cs

Перевести, думаю, не проблема.
Автор: exteris
Дата сообщения: 21.09.2012 07:28
Dimrix
А не проще перед установкой предупредить юзера о том, что сейчас будут установлены драйвера, и ему нужно будет согласиться с их установкой?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


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