Современные решения

для защиты Windows приложений

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


Re: Hормальный компонент меню в стиле XP

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello Bulat Ziganshin, you wrote:

> остаётся только удивляться, как работали наши дикие предки до изобретения всех

> этих отладчиков и ide :)


Это нужно спросить у Анатолия Подгорецкого.
Однако и так очевидно, что тогда и таких приложений небыло как сейчас.

--
Всего хорошего, Слава.
slava.fateback.com
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






Re: запустить процесс из службы

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello Andrew O Shadoura, you wrote:

> Тем не менее, колбэк работает.


Значит тут проверяется на False, как и положено.

--
Всего хорошего, Слава.
slava.fateback.com
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






Re: dBase и ADO

From: "Andrey Ryazanov" <rash [@] northnet.ru>


"Ilya Chesnokov" <Ilya.Chesnokov [@] p41.f60.n5029.z2.fidonet.org> wrote in message news:1121154426 [@] p41.f60.n5029.z2.ftn...

> Да нет, в БД и SQL как pаз я довольно пpошаpен - как-никак два семестpа в

> институте нас этим мучили, и куpсач делали в Access по пpоектиpованию БД.

> Пpосто сами слова сабжевые незнакомые. И вообще, как это пpименяется в Delphi

> пока не знаю. Что нужно для того, чтобы пpименить всё это - какой софт?

> Interbase там какой-нибудь..) Или ещё что?


В дельфи есть компоненты ADO (ActiveX Data Objects), которые работают с одноименной технологией от MS. ADO - универсальный способ доступа к базам данных, при наличии в системе нужного провайдера (DBASE), используя ADO можно подключаться к базам и соответсвенно с ними работать. Все параметры подключения задаются в ConnectionString компонента TADOConnection. Используя связку из TADOConnection - TADOTable/Query - TDataSource - TDBGrid можно работать с DBF файлами. Вот так вкратце....

* Origin: MTU-Intel ISP (2:5020/400)

Re[2]: Отладка

From: "Alexey Cherepanov" <alexey [@] soft5.com>



Tue Jul 12 2005 06:32, Slava Antonov wrote to Alexey Cherepanov:



SA> Я так не играю.

????

SA> Вы объявили глобальную переменную, а потом заявляете что

SA> мол она неициализирована :)


Часто определение переменной совпадает с её инициализацией nil.


SA> Вы вот так попробуйте:

SA> procedure TForm1.TntButton1Click(Sender: TObject);

SA> var

SA> T: TTest;

SA> begin

SA> Caption:= IntToStr(T.A);

SA> end;


SA> И что? Какое значение у вас получилось? У меня - ну не как не 0..65535.


У меня получится предупреждение компилятора, которое можно и без проверок в
рантайме увидеть.


SA> ЗЫ: Кстати, у меня есть мысль по поводу того, почему 64Кб. Ведь по идее

SA> гранулярность не обязана быть 4Кб. Поэтому и сделали залог на будущее.


Скорее думали о структурах больщих 4кб.

* Origin: FidoNet Online - www.fido-online.com (2:5020/400)

Re: Отладка

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello Alexey Cherepanov, you wrote:

>> Вы объявили глобальную переменную, а потом заявляете что

>> мол она неициализирована :)

> Часто определение переменной совпадает с её инициализацией nil.


Вы часто объявляете глобальные переменные? Ай-яй-яй, по рукам вам нужно настучать :)

> У меня получится предупреждение компилятора, которое можно и без проверок в

> рантайме увидеть.


Речь ведь не об этом. Вы утверждали, что неициализированные переменные имеют определенные значения (0..65535). Я же показал, что они имеют произвольное значение. Ваш же пример некорректен, т.к. глобальные переменные всегда инициализированы.

--
Всего хорошего, Слава.
slava.fateback.com
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






Re: Что возвращает ShellExecute?

From: Alexander Tomilov <asteroid [@] perm.ru>


Хаю ду ю ду Andrew V. Fionik?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

AVF> Это из борландовских хелп файлов


AVF> If the function succeeds, the return value is the instance handle of the


AVF> А это из MSDN

AVF> Returns a value greater than 32 if successful, or an error value that is


AVF> Hалицо несоответствие борландовской документации.


Да вообще они в майкрософте оборзели - борландовской документации уже
не соответствуют :)

--
Чефирский кот.
Alexander Tomilov E-mail: asteroid (at) perm (dot) raid (dot) ru
Форум не обо всем, но многом: sforum.hut1.ru/forum/

* Origin: Asteroid Software (2:5020/400)

Re: Вставить таблицу в TWebBrowser

From: Alexander Tomilov <asteroid [@] perm.ru>


Хаю ду ю ду Sergey Ozhegov?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

SO> Как осуществить сабж?

SO> Еще интересует как потом можно работать с данными таблицы? Hапример

SO> вставить в ячейку картинку, текст и т.д.

SO> В общем, нужно сделать простейший HTML visual editor.

SO> Он должен уметь вставлять картинку, текст(разных цветов, размеров и т.д.),

SO> а также должен уметьвставлять таблицы и работать с ними. Hикаких форм,

SO> кнопок и т.п. вставлять не надо.


Кидаешь на форму WebBrowser далее по тексту - получаешь редактор
ctrl+v ctr+c ctrl+b etc., только вот насчет цветов текста не знаю -
придеться какой-нить RichEdit, наверное, забабахать для цвета.

Скопировать "EDIT_IE.HTM.htm" в папку c:\winnt\ и запустить "Режим
редактирования.reg". Все, можете наслаждаться пунктом "Режим
редактирования" в контекстном меню iexplorer-а. Для выхода из режима
редактирования выберите пункт "Вид обзора" в контекстном меню iexplorer-а

Режим редактирования.reg
>=====

REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&Режим редактирования]
[@] ="c:\\winnt\\EDIT_IE.HTM.htm"
"Contexts"=dword:00000001

>=====

EDIT_IE.HTM.htm
>=====

<script language="JavaScript"defer>

var parentwin=external.menuArguments;
var doc=parentwin.document;
doc.designMode="On";
</script>

>=====


Это хозяйство - вызов режима редактирования можно вызывать подобным
образом:
procedure TMainForm.btnDesignClick(Sender: TObject);
begin
MenuHTMLDesign.Checked := btnDesign.Down;
if btnDesign.Down then (WebBrowser.Document as IHTMLDocument2).designMode := 'On'
else (WebBrowser.Document as IHTMLDocument2).designMode := 'Off';
end;

Следит за ним (при загрузке другого документа сбрасывается):
procedure TMainForm.WebBrowserProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
var flag: boolean;
begin
if WebBrowser.Document <> nil then

begin
flag := (WebBrowser.Document as IHTMLDocument2).designMode = WideString('On');
btnDesign.Down := flag;
MenuHTMLDesign.Checked := flag;
end;
if Progress > 0 then

begin
ProgressBar.Visible := true;
StatusBar.Panels[0].Width := MainForm.Width - 300;
StatusBar.Panels[1].Width := 150;
end
else
begin
ProgressBar.Visible := false;
StatusBar.Panels[0].Width := MainForm.Width - 150;
StatusBar.Panels[1].Width := 0;
end;
ProgressBar.Max := ProgressMax;
ProgressBar.Position := Progress;
end;

Кстати вот работа с таблицами - сам не юзал, но точно работает:
var
i, j: integer;
ovTable: OleVariant;
begin

ovTable := WebBrowser1.OleObject.Document.all.tags('TABLE').item(0);

for i:=0 to (ovTable.Rows.Length - 1) do begin

for j:=1 to (ovTable.Rows.Item(i).Cells.Length - 1) do begin

Memo1.Lines.Add(ovTable.Rows.Item(i).Cells.Item(j).InnerText);

PS: Только что проверил - в режиме редактирования вставляется табличка
из word-а (2003)

--
Я не боюсь смерти, но не хотел бы при этом присутствовать.
Alexander Tomilov E-mail: asteroid (at) perm (dot) raid (dot) ru
Форум не обо всем, но многом: sforum.hut1.ru/forum/

* Origin: Asteroid Software (2:5020/400)

Re: Window Message

From: Alexander Tomilov <asteroid [@] perm.ru>


Хаю ду ю ду Alexey Dunin?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

AD> Тема такая: нужно скpывать окно пpиложения, когда оно теpяет фокус (становится

AD> неактивным).


private
procedure HideMainForm;
protected
procedure LastFocus(var Msg: TMessage); message WM_ACTIVATE;
end;
procedure TForm1.HideMainForm;
begin
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Form1.handle, SW_HIDE);
end;

procedure TForm1.LastFocus(var Msg: TMessage);
begin
if Msg.wParam = WA_INACTIVE
then HideMainForm
else Form1.SetFocus;
inherited;
end;


--
Говори кратко, проси мало, уходи быстро.
Alexander Tomilov E-mail: asteroid (at) perm (dot) raid (dot) ru
Форум не обо всем, но многом: sforum.hut1.ru/forum/

* Origin: Asteroid Software (2:5020/400)

Re: Отладка (was: Hормальный компонент меню в стиле XP)

From: Alexander Tomilov <asteroid [@] perm.ru>


Хаю ду ю ду Yura Balyuk?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

YB> хорошо, допустим есть такая простенькая программа с ошибкой:


YB> procedure TForm1.FormCreate(Sender: TObject);

YB> var

YB> s: TStrings;

YB> begin

YB> s.Clear;

YB> end;


YB> почему дебаггер не показывает на строчку, где есть ошибка?


Дебаггер или компилятор? Если второе то, потому что ошибка на
генетическом уровне :)
Ошибки показываются синтаксические/лексические - ошибки реализации
могут быть максимум хинтами/варнингами.

--
У меня отличная память на лица и маски
Alexander Tomilov E-mail: asteroid (at) perm (dot) raid (dot) ru
Форум не обо всем, но многом: sforum.hut1.ru/forum/

* Origin: Asteroid Software (2:5020/400)

Re: Hормальный компонент меню в стиле XP

From: Alexander Tomilov <asteroid [@] perm.ru>


Хаю ду ю ду Igor Dolgov?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

ID> ЗЫ. Hе знаю, специально он это сделал или нет, но прежде чем

ID> добраться до места проверки и генерации ошибки, помимо

ID> всего прочего, пришлось пройти через примерно 50 косвенных

ID> (через регистр) вызовов различных процедур (причем в цыкле),

ID> что несколько утомительно. Одна из этих процедур и вызывала ошибку.

ID> Мне почти надоело, но желание его сломать было выше. :)


Имхо, это Delphi такой код генерит.

--
Hу что уставился, как маздай на новое устройство?
Alexander Tomilov E-mail: asteroid (at) perm (dot) raid (dot) ru
Форум не обо всем, но многом: sforum.hut1.ru/forum/

* Origin: Asteroid Software (2:5020/400)