Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > dll+Send File?


Автор: W1zArD 31.1.2006, 05:18
Как мне в dll запихать, а потом корректно вызвать, следующее:

Определение IP (почему-то при выключение ПРОГА ругается)
Скачать фаил по сети
=)

функции вооще не вызываются!!! smile

Автор: Snowy 31.1.2006, 10:19
Цитата(W1zArD @ 31.1.2006, 05:18 Найти цитируемый пост)
Определение IP

Этих примеров полно на форуме и в FAQ.

Цитата(W1zArD @ 31.1.2006, 05:18 Найти цитируемый пост)
Скачать фаил по сети

Это понятие растяжимое. Скачать откуда? По какому протоколу?

Цитата(W1zArD @ 31.1.2006, 05:18 Найти цитируемый пост)
(почему-то при выключение ПРОГА ругается)

при выключении чего? компьютера? проги? dll?
Скорее всего остались незавершенные потоки в момент отключения dll.
В данном случае потоки продолжают работать, но память dll уже освобождена.
Получишь Access Violation на доступ к не своей памяти.

Цитата(W1zArD @ 31.1.2006, 05:18 Найти цитируемый пост)
функции вооще не вызываются!!!

Давай подумаем...
dll для того и предназначены, чтобы вызывать из них функции. Значит они должны вызываться.
Следовательно они не вызываются потому, что ты что-то не так делаешь.
К сожалению мои телепатические способности не действуют на таком расстоянии.
Я не знаю что ты делаешь не так.

Просьба:
* выражать свои вопросы яснее.
* приводить примеры кода, где и чего не получается.
По приведенному вопросу ничего не ясно по проблеме.
А писать весь код за тебя никто не станет.

Автор: W1zArD 31.1.2006, 13:32
1 Ругается при выкл. прога!
2. файл по сети TCP/IP
3. exports делаю так что все правильно, НО! =?
4. Функ-ю Определения локального IP знаю...

Автор: Romikgy 31.1.2006, 13:59
Тебе ж сказали исходник в студию,
Цитата(W1zArD @ 31.1.2006, 12:32 Найти цитируемый пост)

делаю так что все правильно,

тогда откуда
Цитата(W1zArD @ 31.1.2006, 12:32 Найти цитируемый пост)

НО! =?
smile
Показывай оба исходника и длл и ехе

Автор: W1zArD 5.2.2006, 01:56
Код
library NET;

uses
  WinSock, ScktComp, SysUtils, Classes, Windows;

function InternetGetConnectedState(lpdwFlags:LPDWORD;
dwReserved:DWORD):LongBool;
stdcall;external 'wininet.dll' name 'InternetGetConnectedState';

function LocalIP:string;
var
wsaData:TWSAData;
P:PHostEnt;
Buf:array [0..127] of Char;
begin
Result:='';
if WSAStartup($101,wsaData)=0 then begin
if GetHostName(@Buf,128)=0 then begin
P:=GetHostByName(@Buf);
if P<>nil then Result:=iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;

function IsConnectedToInternet:Boolean;
var dwConnectionTypes:DWORD;
begin
dwConnectionTypes:=1+2+3;
Result:=InternetGetConnectedState(@dwConnectionTypes,0);
end;


function Transfer(Action,Port:SmallInt;IP,Source,Remote:string;ftp:TClientSocket):integer;
begin
А вот тут МНЕ НУЖЕН РАБОЧИЙ КОД +)
end;

exports
LocalIP,
IsConnectedToInternet,
Transfer;

var
h:THandle;

function Check:boolean;
begin
h:=OpenMutex(MUTEX_ALL_ACCESS,false,'win.dll');
result:=(h<>0);
if h=0 then
h:=CreateMutex(nil,false,'win.dll');
end;

begin
if Check then exit;
end.


function LocalIP;external'NET.dll';
function Transfer(Action,Port:SmallInt;IP,Source,Remote:string;
ftp:TClientSocket):integer;external 'NET.dll';
function IsConnectedToInternet:boolean;external 'NET.dll';


ВОТ... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)