Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- AF_UNIX = 1;
- AF_INET = 2;
- SOCK_STREAM = 1;
- SOCKET_ERROR = -1;
- INADDR_NONE = $FFFFFFFF;
- type
- SunB = packed record
- s_b1, s_b2, s_b3, s_b4: char;
- end;
- SunW = packed record
- s_w1, s_w2: word;
- end;
- in_addr = record
- case longint of //longint
- 0: (S_un_b: SunB);
- 1: (S_un_w: SunW);
- 2: (S_addr: longint); //longint
- end;
- TSockAddr = record
- case Integer of
- 0: (sa_family: word;
- sa_data: packed array[0..13] of Byte);
- 1: (sin_family: word;
- sin_port: word;
- sin_addr: in_addr;
- sin_zero: packed array[0..7] of Byte);
- end;
- function inet_addr(cp: PChar): longint; stdcall; external 'wsock32.dll' name 'inet_addr';
- 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;
- var
- sock:longint;
- {$IFDEF _WIN_}
- hPipe:longint;
- szPipeName:string[255];
- i:integer;
- dwMode:longword;
- {$ELSE}
- haserr:boolean;
- Unixaddr:TUnixSockAddr;
- {$ENDIF}
- sock_addr:TSockAddr;
- ip_addr:cardinal;
- hp:phostent;
- lhost:string; //store temp values
- lunix_socket:string; //store temp values
- begin
- ....
- ....
- ip_addr := {$IFOPT R+}cardinal{$ENDIF}(inet_addr(pchar(host))); // thanks Jiri Barton
- if (ip_addr <> INADDR_NONE) then
- begin
- sock_addr.sin_addr:=in_addr(ip_addr); //ошибка [dcc32 Error] uMysqlVio.pas(970): E2089 Invalid typecast
- end
- else
- begin
- hp:=gethostbyname(pchar(host));
- if (hp=nil) then
- begin
- flast_errno:=CR_UNKNOWN_HOST;
- {$IFDEF _WIN_}
- flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, WSAGetLastError]);
- {$ELSE}
- flast_error:=format(client_errors[(flast_errno)-CR_MIN_ERROR],[host, errno]);
- {$ENDIF}
- result:=-7; //we can't connect
- closesocket(sock);
- exit;
- end;
- 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);
- sock_addr.sin_addr:=in_addr(ip_addr); //ошибка [dcc32 Error] uMysqlVio.pas(970): E2089 Invalid typecast
- hp.h_length:=10;
- end;
- ....
- ....
- end;
Add Comment
Please, Sign In to add comment