Другие языки программирования и технологии

Помогите разобраться с кодом Delphi

невижу условия проверяющего доступность сервера
тут неважно доступен сервак или нет код всеравно сохраняет картинку на сервере, это неправильно

я так понял код делает снимок экрана и сохраняет его на удаленном пк

сделайте проверку пинга удаленного сервера
Ping('127.0.0.1', Memo1);
если пинг имеется значит сервер доступен если сервер доступен то можно выболнять команду
JpegIm.SaveToFile('\\server\work\screen\'+cname+'.jpg'); //сохраняем фотку на уд. сервере.

если пинга нет то выводить сообщение о недоступности уд. сервера

procedure Ping(IP: String; OutMemo:TMemo);
const BUFSIZE = 2000;
var SecAttr : TSecurityAttributes;
hReadPipe,
hWritePipe : THandle;
StartupInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
Buffer : Pchar;
WaitReason,
BytesRead : DWord;
begin
with SecAttr do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe (hReadPipe, hWritePipe, @SecAttr, 0) then
begin
Buffer := AllocMem(BUFSIZE + 1);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.hStdOutput := hWritePipe;
StartupInfo.hStdInput := hReadPipe;
StartupInfo.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil,
PChar('ping.exe '+IP),
@SecAttr,
@SecAttr,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then
begin
repeat
WaitReason := WaitForSingleObject( ProcessInfo.hProcess,100);
Application.ProcessMessages;
until (WaitReason <> WAIT_TIMEOUT);
Repeat
BytesRead := 0;
ReadFile(hReadPipe, Buffer[0], BUFSIZE, BytesRead, nil);
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer);
OutMemo.Text := OutMemo.text + String(Buffer);
until (BytesRead < BUFSIZE);
end;
FreeMem(Buffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
end;
end;
Юрий Шилов
Юрий Шилов
21 210
Лучший ответ
> невижу условия проверяющего доступность сервера

Оно нафих не нужно.
И пинг тут как корове седло.

Следует просто ГРАМОТНО использовать try-блок, а не шлепать его безмозгло куда и как попало.

А это

bm.Free;
JpegIm.Free;
bm.Destroy;
JpegIm.Destroy;

просто "шедевр".
Канат Камзин
Канат Камзин
32 502