
А при использовании FORWARD:
Если не писать implementation, то опять куча "function nesting >31"
А если написать: BEGIN excepted but IMPLEMENTATION found


Модератор: Модераторы
unit Test1;
interface
// эта процедура будет доступна извне модуля
procedure f1(A: Integer);
implementation
// а эта - не будет.
procedure f2(A, B, C: Integer); forward;
procedure f1(A: Integer);
begin
// здесь уже можно вызывать f2
f2(A, 0, 1);
end;
procedure f2(A,B,C: Integer);
begin
// собственно текст процедуры
end;
end.
DTVertex = packed record
X,Y,Z,RHW: Single;
U, V : Single;
end;
...
procedure TForm1.draw_tex;
var
vtx:^DTVertex;
...
vtx.X:= ... //Тут возникает ошибка ?!?!
@lex писал(а):Наткнулся на такой вот прикол:
- Код: Выделить всё
procedure TForm1.draw_tex;
var
vtx:^DTVertex;
...
vtx.X:= ... //Тут возникает ошибка ?!?!
rgbValue := (Byte(R) shl 16) or (Byte(G) shl 8) or Byte(B);
var
rec: LongRec;
begin
rec.Bytes[0] := B;
rec.Bytes[1] := G;
rec.Bytes[2] := R;
rec.Bytes[3] := 0;
rgbValue := TColor(rec);
end;
program WindowsApp;
{$MODE DELPHI}
uses Windows;
const AppName = 'WindowsApp';
function WindowProc(Window: HWnd; AMessage, WParam,
LParam: Longint): Longint; stdcall; export;
begin
WindowProc := 0;
case AMessage of
wm_Destroy : begin
PostQuitMessage(0);
Exit;
end;
end;
WindowProc := DefWindowProc(Window, AMessage, WParam, LParam);
end;
{ Register the Window Class }
function WinRegister: Boolean;
var WindowClass: WndClass;
begin
WindowClass.Style := cs_hRedraw or cs_vRedraw;
WindowClass.lpfnWndProc := WndProc(@WindowProc);
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := system.MainInstance;
WindowClass.hIcon := LoadIcon(0, idi_Application);
WindowClass.hCursor := LoadCursor(0, idc_Arrow);
WindowClass.hbrBackground := GetStockObject(WHITE_BRUSH);
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := AppName;
Result := RegisterClass(WindowClass) <> 0;
end;
{ Create the Window Class }
function WinCreate: HWnd;
var hWindow: HWnd;
begin
hWindow := CreateWindow(AppName, 'Windows App',
ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
cw_UseDefault, cw_UseDefault, 0, 0, system.MainInstance, nil);
if hWindow <> 0 then begin
ShowWindow(hWindow, CmdShow);
UpdateWindow(hWindow);
end;
Result := hWindow;
end;
var AMessage: Msg;
hWindow: HWnd;
begin
if not WinRegister then begin
MessageBox(0, 'Register failed', nil, mb_Ok);
Exit;
end;
hWindow := WinCreate;
if longint(hWindow) = 0 then begin
MessageBox(0, 'WinCreate failed', nil, mb_Ok);
Exit;
end;
while GetMessage(@AMessage, 0, 0, 0) do begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam);
end.
while true do begin
Timer; //это как-бы TTimer.OnTimer :)
if not GetMessage(@AMessage, 0, 0, 0) then break;
if halted then break;
sleep(GSpeed); // "Ограничение FPS" GSpeed = 1;
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
closefile(logfile);
Halt(AMessage.wParam)
end.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4