есть ли в delphi препроцессор как в си?
например на си можно напиать так чтение данных с сокета в 2 буфера, по 1024 в каждый:
Code
#define _CHECK_ if((s==(SOCKET)(-1))||(dwReaded<=0)) return -1;
#define DECLAREMEM(name,size) void *name=malloc(size); ZeroMemory(name,size);
....
DECLREMEM(buf1,1024)
recv(s,(char *)buf1,1024,0);
_CHECK_
DECLREMEM(buf2,1024)
recv(s,(char *)buf2,1024,0);
_CHECK_
...
чтобы по несколько раз не писать несколько строк кода объявили макрос DECLAREMEM(name,size), который объявляет и инциализирует участок памяти и _CHECK_ , который проверяет корректность чтения данных.
можно ли так же объявлять макросы в delphi?
попробывал такi:
Code
{$define CHECK readed:=recv(s,loginlen,sizeof(dword),0);
if(s=invalid_socket)or(readed<=0) then begin
result:='error';
exit;
end;}
function auth(s:tsocket):string;
var login,pass:string;
loginlen,passlen:dword;
readed:integer;
begin
readed:=recv(s,loginlen,sizeof(dword),0);
CHECK
readed:=recv(s,login[1],loginlen,0);
CHECK
end;
Но препроцессор почемуто считает CHECK за переменную