 
 
А при использовании 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;

 ). Наткнулся на одно IDE, под названием Dev-Pas, судя по всему уже мёртвое (версия 2002 г. , компилятор 1.0.6), но тем не менее она не отказалось работать с версией 2.0.2, причём весьма успешно. При создании "Windows Application" генерирует код, если я правильно понял, создания и инициализации окна:
 ). Наткнулся на одно IDE, под названием Dev-Pas, судя по всему уже мёртвое (версия 2002 г. , компилятор 1.0.6), но тем не менее она не отказалось работать с версией 2.0.2, причём весьма успешно. При создании "Windows Application" генерирует код, если я правильно понял, создания и инициализации окна: 
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.
 


 . Побочный эффект: защита от ArtMoney
 . Побочный эффект: защита от ArtMoney   
 
Сейчас этот форум просматривают: Google [Bot] и гости: 1