![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Написал унит который вобрал в себя только функции по работе с потоками, через Дэлфи проект с данным унитом компилится нормально, пытаюсь вручную скомпилить (DCC32.EXE+rlink32.dll), не получается, пишет: Undeclared Identifier Tobject и System Unit Out Of Date or corrupted: missing Tobject. Как решить эту проблему???
Листинг Compile.bat: @DCC32 -Q system.pas sysinit.pas -M -Y -Z -$D- -O @DCC32 Project2.dpr @DEL SYSTEM.DCU @DEL SYSINIT.DCU pause Листинг SMALL_CLASSES.pas Код:
unit SMALL_CLASSES;
{$R-,T-,X+,H+,B-}
interface
const
MemoryDelta = $2000;
//
soFromBeginning = 0;
soFromCurrent = 1;
soFromEnd = 2;
//
fmCreate = $FFFF;
//
fmOpenRead = $0000;
fmOpenWrite = $0001;
fmOpenReadWrite = $0002;
//
fmShareCompat = $0000 platform; // DOS compatibility mode is not portable
fmShareExclusive = $0010;
fmShareDenyWrite = $0020;
fmShareDenyRead = $0030 platform; // write-only not supported on all platforms
fmShareDenyNone = $0040;
//
PM_REMOVE = 1;
type
Int64Rec = packed record
case Integer of
0: (Lo, Hi: Cardinal);
1: (Cardinals: array [0..1] of Cardinal);
2: (Words: array [0..3] of Word);
3: (Bytes: array [0..7] of Byte);
end;
HWND = type LongWord;
WPARAM = Longint;
LPARAM = Longint;
UINT = LongWord;
DWORD = LongWord;
BOOL = LongBool;
TPoint = packed record
X: Longint;
Y: Longint;
end;
tagMSG = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
time: DWORD;
pt: TPoint;
end;
TMsg = tagMSG;
POverlapped = ^TOverlapped;
_OVERLAPPED = record
Internal: DWORD;
InternalHigh: DWORD;
Offset: DWORD;
OffsetHigh: DWORD;
hEvent: Cardinal;
end;
TOverlapped = _OVERLAPPED;
PSecurityAttributes = ^TSecurityAttributes;
_SECURITY_ATTRIBUTES = record
nLength: DWORD;
lpSecurityDescriptor: Pointer;
bInheritHandle: BOOL;
end;
TSecurityAttributes = _SECURITY_ATTRIBUTES;
TSeekOrigin = (soBeginning, soCurrent, soEnd);
TStream = class(TObject)
private
function GetPosition: Int64;
procedure SetPosition(const Pos: Int64);
procedure SetSize64(const NewSize: Int64);
.................................................................... |
|
#2
|
|||
|
|||
|
Ошибки в команде dcc32:
1. Файл надо указывать тот, который компиляешь. Зачем у тебя указаны system и sysinit, ecли твой модуль называется SMALL_CLASSES. 2. Зачем указываешь -O, если не указываешь папку. 3. Не знаю, что за директива -Y. и вообще, нафига в свой юнит тащить кучу кода из стандартной библиотеки, как то константы, потоки и т.д. Если очень хочется - отнаследуйся и вперед. |
|
#3
|
||||
|
||||
|
1. SMALL_CLASSES точно забыл включить
2. system и sysinit присутствуют не просто так, это модули для уменьшения размера конечного файла (минимально возможная их реализация) 3. -O включил, но уже давно, забыл уже зачем, и вообще его включение никак не сказывается на компиляции 4. -Y тоже влом смотреть что такое, но без него не компилится вовсе, где то на форуме каком то подглядел 5. Отнаследоваться - значит просто включить модуль Windows в проект (USES) ??? Если да то так тоже не компилится, я пробовал. |