Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизЧе с дельфи6 происходит? Найти похожие ветки
← →
Psibug (2003-09-13 19:13) [0]Ака что не так в коде(см ниже ):
Не может найти в месте, помеченом кооментариями на английском, один из типов данных - TEditorInterface. Стопудово всё объявлено и модули находит все.
Не компилит Editorwnd.pas b dc` nen/
library EditorDLL;
uses
SysUtils,Classes, editorwnd in "editorwnd.pas" {Form1},
editorintf in "editorintf.pas",
coreintf in "..\coreintf.pas";
{$R *.res}
begin
end.
Использует это:
unit editorintf;
interface
uses coreintf;
implementation
Type
TEditorInterface=packed record
ShowEditorControls:procedure;stdcall;
HideEditorControls:procedure;stdcall;
EatEditorMessages:procedure;stdcall;
end;
TEdiorAttachProc=function(const ci:TCoreInterface;var egui:TEditorInterface):int32;
end.
И
unit coreintf;
interface
type
HINST=LONGWORD;
HWND=cardinal;
int32=integer;
bool=longbool;
float=single;
uint32=cardinal;
int16=word;
int8=byte;
hwmem=pointer;
pfloat=^float;
pint32=^int32;
ObjectUniqueKey=packed record
case int32 of
0:(prefix,suffix:int64;);
1:(ints:array[0..3] of int32;);
2:(words:array[0..7] of int16;);
3:(bytes:array[0..$F] of int8;);
end;
TGLOBALEVENT=procedure;stdcall;
TGLOBALITERATIONPROC=function(const activemode:bool):bool;stdcall;
IStorageReader=interface
["{6FAC04A4-EC92-47E1-B76A-73BCA5170B0E}"]
function ReadInt:int32;
function ReadFloat:float;
function ReadBool:bool;
function ReadString:string;
function ReadMemory(var m:hwmem;var mlen:int32):int32;
//procedure SeekToBegin;
function Position:int32;
function Size:int32;
end;
IStorageWriter=interface
["{0B0C9581-19BE-4122-90C9-3C37FC1625CB}"]
procedure WriteInt(const value:int32);
procedure WriteFloat(const value:float);
procedure WriteBool(const value:bool);
procedure WriteString(const value:string);
function WriteMemory(const m:hwmem;const memlen:int32):int32;
function Position:int32;
function Size:int32;
end;
IStorable=interface
["{C2CD4195-4DE0-43E8-831F-0F78544F065A}"]
procedure WriteToStorage(const sw:IStorageWriter);
procedure ReadFromStorage(const sr:IStorageReader);
procedure ReadOUK(var key:ObjectUniqueKey);
function IsOUKThis(const key:ObjectUniqueKey):bool;
end;
TCreateFileAFSStorage=function(const afspath:string):IStorageWriter;stdcall;
TOpenToReadFileAFSStorage=function(const afspath:string):IStorageReader;stdcall;
TOpenToWriteFileAFSStorage=function(const afspath:string):IStorageWriter;stdcall;
{$IFDEF MSWINDOWS}
const PATHDELIMETER:char="\";
{$ELSE}
const PATHDELIMETER:char="/";
{$ENDIF}
const AFS_LOCALFILEGRAPHIC:string="afsfileg://";
const AFS_LOCALFILEBYTES:string="afsfileb://";
const AFS_LOCALFONT1:string="afsfont1://";
type
{Это объявление он не может найти в editorwnd.pas, см далее}
TCoreInterface=packed record
GetPlatformResource:function: HWND;stdcall;
WaitInterval:procedure(const i: int32);stdcall;
ShowError:procedure(const errdesc: string);stdcall;
IsAppActive:function:bool;stdcall;
GetActivationProc:function:TGLOBALEVENT;stdcall;
SetActivationProc:procedure(const p: TGLOBALEVENT);stdcall;
GetDeactivationProc:function:TGLOBALEVENT;stdcall;
SetDeactivationProc:procedure(const p: TGLOBALEVENT);stdcall;
StartMainLoop:function(sleepperiod: int32):int32;stdcall;
StopMainLoop:procedure;stdcall;
IsInMainLoop:function:bool;stdcall;
GetIterationProc:function:TGLOBALITERATIONPROC;stdcall;
SetIterationProc:procedure(const p: TGLOBALITERATIONPROC); stdcall;
IsSysKeyDown:function(const vk: int32): bool; stdcall;
GetExeInstance:function:HINST;stdcall;
ScreenWidth:function:int32;stdcall;
ScreenHeight:function:int32;stdcall;
CreateFileAFSStorage:TCreateFileAFSStorage;
OpenToReadFileAFSStorage:TOpenToReadFileAFSStorage;
OpenToWriteFileAFSStorage:TOpenToWriteFileAFSStorage;
OpenToAppendFileAFSStorage:TOpenToWriteFileAFSStorage;
AFSPathToHWPath:function(const afspath:string):string;
CreateObjectUniqueKey:procedure(var k:ObjectUniqueKey);stdcall;
CompareObjectUniqueKeys:function(const k,k2:ObjectUniqueKey):bool;stdcall;
end;
implementation
end.
И наконец, место ошибки, editor wnd.pas:
unit editorwnd;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,coreintf,editorintf;
type
TForm1 = class(TForm)
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
public
end;
var
Form1: TForm1;
function EditorAttachProc(const ci: TCoreInterface;
var egui: TEditorInterface): int32;stdcall;
procedure ShowControls; stdcall;
procedure HideControls; stdcall;
procedure EatEditorMessages; stdcall;
implementation
{$R *.dfm}
var
globci:TCoreInterface;
ei:TEditorInterface;
{ERROR PLACE START}
function EditorAttachProc(const ci: TCoreInterface;
var egui: TEditorInterface): int32;stdcall;
{ERROR PLACE END}
begin
globci:=ci;
egui:=ei;
end;
procedure ShowControls;
begin
Form1.Show();
end;
procedure HideControls;
begin
Form1.Hide;
end;
procedure EatEditorMessages;
var m:msg;
begin
while PeekMessage(m,Form1.Handle,0,0,PM_REMOVE) do
begin
TranslateMessage(m);
DispatchMessage(m);
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
canclose:=false;
Hide;
end;
procedure filleditorinterface;
begin
ei.
end;
initialization
Form1:=TForm1.Create(nil);
filleditorinterface;
finalization
Form1.Release;
end.
← →
pasha_golub (2003-09-13 20:02) [1]IMHO, быть может проблема совместимости версий Delphi?
← →
Psibug (2003-09-13 20:37) [2]Не, все модули написаны в дельфи6.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c