Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

{ 1 – количество серий (в нашем случае 1), 3 – количество значений }

OpenData[COD_VALUES] := MakeLong(1,3);

{ Hомер текущей серии }

ThisSerie := 0;

{ Value[i] – значение с индексом i }

{ Legend[i] – комментарий к этому значению }

Value[0] := a;

Legend[0] := 'Значение переменной A';

Value[1] := b;

Legend[1] := 'Значение переменной B';

Value[2] := c;

Legend[2] := 'Значение переменной C';

{ Закрываем режим }

CloseData[COD_VALUES] := 0;

{ Ширина поля с комментариями на экране (в пикселах) }

LegendWidth := 150;

Visible := true;

end;

end;

end.

Как осуществить минимальный тест на корректность глобального идентификатора (GUID), и интерфейсов, унаследованных от IDispatch?

Как осуществить минимальный тест на корректность глобального идентификатора (GUID), и интерфейсов, унаследованных от IDispatch (и, следовательно, поддерживающих методы автоматизации)?

Nomadicсоветует:

Вызовите CreateRemoteComObject, передав GUID интерфейса и имя компьютера, к которому Вы пытаетесь подключиться. Если функция вернет ошибку, то наличествует проблема сервера, иначе возможная проблема относится к клиенту.

constMyGUID = '{444…111}'; //Whatever the guid is…

var

Unk: IUnknown;

Disp: IDispatch;

begin

{ Make sure this line works correctly }

Unk := CreateRemoteComObject('server1', StringToGUID(MyGUID));

{ If it does, then cast it to a IDispatch }

Disp := Unk asIDispatch;

end;

Если этот кусок кода работает, а проблема остается, то Вам требуется шаг за шагом пройти через код клиента и найти, где он дает трещину. Если не сможете этого обнаружить, Вам придется запустить сервер под отладчиком и установить связь с клиентом, чтобы Вы могли произвести отладку рядом со местом, дающем слабину.

DCOM

В чем разница между сокетами, DCOM и OLE Enterprise при использовании их в качестве транспорта?

Nomadicотвечает:

Sockets (TCP/IP):

• на клиентах и сервере требуется наличие стека TCP/IP;

• не требуется дополнительной настройки клиентов;

DCOM:

• на клиентах и серверах требуется наличие DCOM (входит в состав Windows NT 4.0, для Windows 95 доступен как опция)

• требуется настройка клиентов (DCOM Configuration Utility — DCOMCNFG.EXE);

• встроенная поддержка модели безопасности Windows NT;

• поддержка обратных вызовов (методов);

CORBA

• на клиентах и серверах требуется наличие Common Object Request Broker;

• требуется настройка клиентов;

• поддержка обратных вызовов (методов);

OLE Enterprise:

• на клиентах и серверах требуется наличие OLE Enterprise;

• требуется настройка клиентов;

• поддержка обратных вызовов (методов);

DDE

DDE – передача текста

Delphi 1

Вот я как работаю с Excel:

type

DDEClientConv1.SetLink('Excel','Sheet1');

try

DDEClientConv1.OpenLink;

DDEClientItem1.DDEItem:= 'R1C1';

DDEClientConv1.PokeData(DDEClientItem1.DDEItem, StrPCopy(P, SomeString)));

finally

DDEClientConv1.CloseLink;

end;

Как вы можете здесь видеть, свойство DDEItem определяется сервером. Если ваш сервер является приложением Delphi, то DDEItem – имя DDEServerItem. На вашем месте я бы не стал так долго заниматься отладкой DDE-программ. Воспользуйтесь синхронизацией, позволяющей понять при отладке правильность действий.

Управление Program Manager в Win95 с помощью DDE

Delphi 1

Для управления программными группами в Program Manager с помощью DDE мною был использован следующий модуль. За основу был взят код Steve Texeira (sp) из руководства Dephi Developers Guide.

Работает под Win 3.1 и '95.

unitPm;

interface

usesSysUtils, Classes, DdeMan;

type

EProgManError = class( Exception);

TProgMan = class(TComponent)

private

FDdeClientConv: TDdeClientConv;

procedureInitDDEConversation;

functionExecMacroString(Macro: String): Boolean;

public

constructorCreate(AOwner: TComponent); override;

destructorDestroy; override;

ProcedureCreateGroup(GroupName: String; ShowGroup:Boolean);

procedureDeleteGroup(GroupName: String);

procedureDeleteItem(ItemName: String);

procedureAddItem(CmdLine, ItemName: String);

end;

implementation

usesUtils;

const

{ DDE-макростроки для Program Manager }

SDDECreateGroup = '[CreateGroup(%s)]';

SDDEShowGroup = '[ShowGroup(%s, 1)]';

SDDEDeleteGroup = '[DeleteGroup(%s)]';

SDDEDeleteItem = '[DeleteItem(%s)]';

SDDEAddItem = '[AddItem(%s, "%s", %s)]';

constructorTProgMan.Create(AOwner: TComponent);

begin

inheritedCreate(AOwner);

InitDDEConversation;

end;

destructorTProgMan.Destroy;

begin

ifAssigned(FDDEClientConv) thenFDdeClientConv.CloseLink;

inheritedDestroy;

end;

functionTProgMan.ExecMacroString(Macro: String): Boolean;

Begin

StringAsPchar(Macro);

Result := FDdeClientConv.ExecuteMacro(@Macro[1], False);

End;

ProcedureTProgMan.InitDDEConversation;

begin

FDdeClientConv := TDdeClientConv.Create(Self);

If NOTFDdeClientConv.SetLink('PROGMAN', 'PROGMAN') then

raiseEProgManError.Create('Не могу установить DDE Link');

end;

ProcedureTProgMan.CreateGroup(GroupName: String; ShowGroup:Boolean);

Begin

{ Удаляем группу, если она существует }ExecMacroString(Format(SDDEDeleteGroup, [GroupName]));

If NOTExecMacroString(Format(SDDECreateGroup, [GroupName])) then

raiseEProgManError.Create('Не могу создать группу ' + GroupName);

IfShowGroup then

If notExecMacroString(Format(SDDEShowGroup, [GroupName])) then

raiseEProgManError.Create('Не могу показать группу ' + GroupName);

End;

ProcedureTProgMan.DeleteGroup(GroupName: String);

Begin

if NOTExecMacroString(Format(SDDEDeleteGroup, [GroupName])) then

raiseEProgManError.Create('Не могу удалить группу ' + GroupName);

End;

ProcedureTProgMan.DeleteItem(ItemName: String);

Begin

if NOTExecMacroString(Format(SDDEDeleteGroup, [ItemName])) then

raiseEProgManError.Create('Не могу удалить элемент ' + ItemName);

End;

ProcedureTProgMan.AddItem(CmdLine, ItemName: String);

Var

P: PChar;

PSize: Word;

Begin

PSize := StrLen(SDDEAddItem) + (Length(CmdLine) *2) + Length(ItemName) + 1;

GetMem(P, PSize);

try

StrFmt(P, SDDEAddItem, [CmdLine, ItemName, CmdLine]);

if NOTFDdeClientConv.ExecuteMacro(P, False) then

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x