Guest User

Untitled

a guest
Oct 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. const
  2.  
  3. AF_UNIX = 1;
  4. AF_INET = 2;
  5. SOCK_STREAM = 1;
  6. SOCKET_ERROR = -1;
  7. INADDR_NONE = $FFFFFFFF;
  8.  
  9. type
  10.  
  11. SunB = packed record
  12. s_b1, s_b2, s_b3, s_b4: char;
  13. end;
  14.  
  15. SunW = packed record
  16. s_w1, s_w2: word;
  17. end;
  18.  
  19. in_addr = record
  20. case longint of //longint
  21. 0: (S_un_b: SunB);
  22. 1: (S_un_w: SunW);
  23. 2: (S_addr: longint); //longint
  24. end;
  25.  
  26. TSockAddr = record
  27. case Integer of
  28. 0: (sa_family: word;
  29. sa_data: packed array[0..13] of Byte);
  30. 1: (sin_family: word;
  31. sin_port: word;
  32. sin_addr: in_addr;
  33. sin_zero: packed array[0..7] of Byte);
  34. end;
  35.  
  36. function inet_addr(cp: PChar): longint; stdcall; external 'wsock32.dll' name 'inet_addr';
  37.  
  38.  
  39. function TMysqlVio.vio_open( _type:TEnumVioType; host:string='localhost'; unix_socket:string={$IFDEF _WIN_}MYSQL_NAMEDPIPE{$ELSE}MYSQL_UNIX_ADDR{$ENDIF}; port:longint=0; connect_timeout:cardinal=0; trysock:boolean=true): longint;
  40. var
  41. sock:longint;
  42. {$IFDEF _WIN_}
  43. hPipe:longint;
  44. szPipeName:string[255];
  45. i:integer;
  46. dwMode:longword;
  47. {$ELSE}
  48. haserr:boolean;
  49. Unixaddr:TUnixSockAddr;
  50. {$ENDIF}
  51. sock_addr:TSockAddr;
  52. ip_addr:cardinal;
  53. hp:phostent;
  54. lhost:string; //store temp values
  55. lunix_socket:string; //store temp values
  56. begin
  57. ....
  58. ....
  59. ip_addr := {$IFOPT R+}cardinal{$ENDIF}(inet_addr(pchar(host))); // thanks Jiri Barton
  60.  
  61. if (ip_addr <> INADDR_NONE) then
  62. begin
  63. sock_addr.sin_addr:=in_addr(ip_addr); //ошибка [dcc32 Error] uMysqlVio.pas(970): E2089 Invalid typecast
  64. end
  65. else
  66. begin
  67. hp:=gethostbyname(pchar(host));
  68. if (hp=nil) then
  69. begin
  70. flast_errno:=CR_UNKNOWN_HOST;
  71. {$IFDEF _WIN_}
  72. flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, WSAGetLastError]);
  73. {$ELSE}
  74. flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, errno]);
  75. {$ENDIF}
  76. result:=-7; //we can't connect
  77. closesocket(sock);
  78. exit;
  79. end;
  80. ip_addr:=byte(hp.h_addr^[0])+(byte(hp.h_addr^[1])shl 8)+(byte(hp.h_addr^[2])shl 16)+(byte(hp.h_addr^[3])shl 24);
  81. sock_addr.sin_addr:=in_addr(ip_addr); //ошибка [dcc32 Error] uMysqlVio.pas(970): E2089 Invalid typecast
  82. hp.h_length:=10;
  83. end;
  84.  
  85. ....
  86. ....
  87. end;
Add Comment
Please, Sign In to add comment