Какой ключ реестра отвечает за действие при закрывании крышки ноута, и как отследить нажатие определённых клавишь, если окно проги не в фокусе?
stepashka_, посмотри рабочий вариант кода. Не совсем то, что у тебя, но думаю, пригодиться: Это для Delphi 7, не могу сказать точно, будет ли правильно работать, если откомпилируешь в другой среде. В архиве exe + исходник.
У меня тоже Indy 10. Не могу тогда точно сказать, в чем у тебя проблемы. Могу посоветовать отснифффить пакеты, отправляемые программой. Если у тебя не Delphi 7, а какая то другая версия, тогда очень вероятно, что проблема именно в этом.
использование инди критично? на винсоке все отлично работает и никаких проблем с совместимостью компонентов
Уходите от Indy! Мне много советовали Synapse, а я не верил - стабильная и надёжная вещь! Как на неё перешёл все проблемы кончились!
Привет Всем, собственно вопрос в том как получить статус сервера(TSocket) т.е. запущен ли сервер или нет. Пробывал метод сканирование портов но если ip не существует то программа думает очень долго, может кто подсказать если какие небудь методы? Или как установить таймаут,а то пробывал так нечего и не вышло
делаешь маленький юнит PHP: unit FilesOp; interface uses Forms, SysUtils, ShellAPI, Dialogs; procedure CopyFiles(const FromFolder: string; const ToFolder: string); implementation procedure CopyFiles(const FromFolder: string; const ToFolder: string); var Fo : TSHFileOpStruct; buffer : array[0..4096] of char; p : pchar; begin FillChar(Buffer, sizeof(Buffer), #0); p := @buffer; StrECopy(p, PChar(FromFolder)); //директория, которую мы хотим скопировать FillChar(Fo, sizeof(Fo), #0); Fo.Wnd := Application.Handle; Fo.wFunc := FO_COPY; Fo.pFrom := @Buffer; Fo.pTo := PChar(ToFolder); //куда будет скопирована директория Fo.fFlags := 0; if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then ShowMessage('File copy process cancelled') end; end. Подключаешь и вызываешь CopyFiles(откуда, куда); а заархивировать, или свой алго архивации, или стандартную либу прикрутить и пользоваться, в зависимости от обстаятельств
Думаю лучшее решение в данном случае - работать с потоками, тогда не будет подвисать... Можешь так же засекать нужное время, если нет ответа, убивать поток и всё
Здравствуйте, мне нужно заполнить поле 9x9 различными цифрами, как в судоку. Делаю так, рандомно загоняею цифру в двумерный массив, потом начинаю проверять строку и стоблец в котором цифра стоит. Если такой цифры нет, то оставляю, иначе генерирую новую цифру до тех пор, пока она станет различной по сравнению с цифрами в строке и столбце. Но возникла проблема. Получается сгенерировать таким способ только поле максимальным размером 7x7. Далее программа уходит в бесконечный цикл... Может быть кто знает какой-нибудь другой алгоритм? Вот мой код этого алгоритма. Code: label xx; var a:array [0..10,0..10] of integer; i,j,l,m:integer; begin {fillchar(a,sizeof(a),0);} i:=1; j:=1; randomize; while j<>7 do begin xx: m:=random(8)+1; a[j,i]:=m; for l:=0 to j-1 do begin if a[l,i]=m then goto xx; end; for l:=0 to i-1 do begin if a[j,l]=m then goto xx; end; inc(i); if i=7 then begin inc(j); i:=1; end; end; // Выводим на экран for j:=1 to 9 do begin for i:=1 to 9 do begin write(a[j,i],' '); end; writeln; end; readln; end.
Ну типа того... Code: Var Zellen:Array[0..8,0..8] Of Byte; Function OK(X,Y,N:Byte):Boolean; Var Z,K:Byte; Begin Result:=False; For Z:=0 To 8 Do If (Zellen[X,Z]=N) Or (Zellen[Z,Y]=N) Then Exit; For Z:=0 To 2 Do For K:=0 To 2 Do If (Zellen[X Div 3*3+K,Y Div 3*3+Z]=N) Then Exit; Result:=True; End; Function Error(X,Y:Byte):Boolean; Var L,Z,K,R:Byte; Mas:Array[1..9] Of Byte; Begin For Z:=1 To 9 Do Mas[Z]:=Z; L:=9; For Z:=0 To 8 Do Begin R:=Zellen[X,Z]; If (R<>0) Then If Mas[R]<>0 Then Begin Mas[R]:=0; Dec(L); End; R:=Zellen[Z,Y]; If (R<>0) Then If Mas[R]<>0 Then Begin Mas[R]:=0; Dec(L); End; End; For Z:=0 To 2 Do For K:=0 To 2 Do Begin R:=Zellen[X Div 3*3+K,Y Div 3*3+Z]; If (R<>0) Then If Mas[R]<>0 Then Begin Mas[R]:=0; Dec(L); End; End; Result:=L=0; End; Function NewBrech:Boolean; Var X,Y,N:Byte; Begin For Y:=0 To 8 Do For X:=0 To 8 Do Begin If Error(X,Y) Then Begin NewBrech:=False; Exit; End; Repeat N:=Round(Random*8)+1; Until OK(X,Y,N); Zellen[X,Y]:=N; End; End;
Isaev, как мне известно потоковые сокеты начинаю свою работу когда уже установленно подключения... если я не прав то поправте, был бы очень благодарен если увидел реализацию потокового сокета до подключения к серверу.
Skript да уж, странный модуль, если так... (сейчас Delphi нет под руками, не могу проверить) А что пишешь вообще? Может можно сделать проще
Isaev у меня в организации 40 компов, я написал программу для удалённого администрирования, ну там чисто под свои нужды что бы не бегать из за разных пустяков. Я выступаю в качестве клиента т.к. если я буду сервером это будет лишняя на грузка сервер. Так вот мне нужно отследить какой из компов в сети а какой нет. Не на одном форуме не смогли помоч мне с данной проблемой
а не проще сделать на одном компе что то типа сервера? все другие компы клиенты и ты клиент, все конектятся к серверу, а ты туда конектишься " с правами админа"
подскажите как выставить поля при выводе на печать из richedit PHP: procedure TForm2.Button1Click(Sender: TObject); begin if PrintDialog.Execute then begin richedit1.Print(richedit1.Text); end; end;