ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

08.12.2009, 00:35
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме: 436500
Репутация:
11
|
|
Сообщение от mr_walker
Я уже спрашивал... но...:
Ребята...как реализовать в логе(мемо) сервера(инди ХТТП сервак) чтобы показывалось КТО(АйПи Адрес) подключился... я ставлю обработку события ОнКоннект, но не знаю к какому элементу Инди ХТТП сервера обращатся...
процедура OnConnect даёт тебе доступ к потоку подключившегося пира под именем AThread:
Код:
procedure TForm1.IdHTTPServer1Connect(AThread: TIdPeerThread);
оттуда можно достать его IP адрес:
Код:
Memo1.Lines.Add(AThread.Connection.Socket.Binding.PeerIP);
Удачи 
Последний раз редактировалось Linkus; 08.12.2009 в 00:42..
|
|
|

09.12.2009, 11:20
|
|
Участник форума
Регистрация: 16.07.2008
Сообщений: 159
Провел на форуме: 1063538
Репутация:
240
|
|
Решите плиз) (Паскаль)
в каждом столбце и каждой строк матрицы самодержица строго по одному не левому элементу. Перестановкой строк добиться расположение всех нулей по главной диагонали. В программе должна присутствовать проверка чтоб в строке был строго один ноль, в противном случае цикл не выполняться.
|
|
|

09.12.2009, 15:47
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
Сообщение от Sin3v
Решите плиз) (Паскаль)
в каждом столбце и каждой строк матрицы самодержица строго по одному не левому элементу. Перестановкой строк добиться расположение всех нулей по главной диагонали. В программе должна присутствовать проверка чтоб в строке был строго один ноль, в противном случае цикл не выполняться.
Код:
PROGRAM PMatrix;
uses
Crt;
const
N = 3;
Var
Matrix: Array [1..N,1..N] of byte;
Indexes: set of byte;
counter: byte;
function CheckLine(LineIndex: byte): boolean;
var
i, j: byte;
begin
counter := 0;
CheckLine := false;
for i := 1 to N do
if (Matrix[LineIndex,i] = 0) then
begin
inc(counter);
if counter > 1 then
begin
CheckLine := false;
exit;
end;
if (i in Indexes) then
begin
CheckLine := false;
exit;
end;
end;
CheckLine := true;
end;
procedure GenerateMatrix;
var
tmpindex: byte;
i, j: byte;
begin
Indexes := [];
randomize;
for i := 1 to N do
begin
repeat
tmpindex := random(N)+1;
for j := 1 to N do
if j = tmpindex then
Matrix[i,j] := 0
else
Matrix[i,j] := random(99)+1;
until (CheckLine(i));
Indexes := Indexes + [tmpindex];
end;
end;
procedure ChangeLines(index1, index2: byte);
var
tmp: byte;
i: byte;
begin
for i := 1 to N do
begin
tmp := Matrix[index1,i];
Matrix[index1,i] := Matrix[index2,i];
Matrix[index2,i] := tmp;
end;
end;
procedure SortMatrix;
var
i, j: byte;
begin
for i := 1 to N do
begin
if not(CheckLine(i)) then
exit;
for j := 1 to N do
if (Matrix[i,j] = 0) then
ChangeLines(i,j);
end;
end;
procedure ShowMatrix;
var
i, j: byte;
begin
for i := 1 to N do
begin
for j := 1 to N do
if (Matrix[i,j] < 10) then
write(' ', Matrix[i,j], ' ')
else
write(Matrix[i,j], ' ');
writeln
end;
end;
var
i, j: byte;
choice: char;
begin
clrscr;
write('Would you like to generate the matrix automatically? (y/n)');
readln(choice);
if (choice = 'y') then
GenerateMatrix
else
for i := 1 to N do
for j := 1 to N do
begin
write('Matrix[',i,',',j,'] = ');
readln(Matrix[i,j]);
if (Matrix[i,j] = 0) then
Indexes := Indexes + [j];
end;
writeln;
ShowMatrix;
writeln;
SortMatrix;
ShowMatrix;
readln;
end.
Небольшой комментарий: - размер матрицы задается с помощью константы N. Поскольку есть возможность ручного ввода матрицы, то значение по умолчанию у N небольшое.
- GenerateMatrix - заполняет матрицу правильным образом
- ChangeLines - меняет 2 строки местами
- SortMatrix - упорядочивает строки согласно заданию
- ShowMatrix - выводит матрицу на экран
- CheckLine - проверяет, нет ли в какой-либо строке или столбце более 1 нуля.
Последний раз редактировалось StealthMaster; 09.12.2009 в 19:06..
|
|
|

09.12.2009, 15:59
|
|
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме: 289669
Репутация:
7
|
|
вот мне надо написать что-то типо электронного справочника, попробую сначала на дельфи, потом на си++. Объясните мне как лучше, делать кучу форм и на каждой форме размещать отдельную информацию, или выводить все в одной форме? Тоесть сама идея такова, открываеться навигация, выбираешь что надо, потом открываеться новое окно (новая форма) и в форме появляеться текст на определенную тему, жмешь кнопку вперед, и появляеться новая форма с другим текстом, или же, в старую перезаписываеться инфа. Вот как лучше?
|
|
|

09.12.2009, 16:06
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
Если планируется сделать что-то вроде справочника, то статьи в нем должны быть оформлены примерно одинаково. Поэтому для вывода статьи логично использовать одну и ту же форму, имхо.
|
|
|

09.12.2009, 16:25
|
|
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме: 289669
Репутация:
7
|
|
тогда другой вопрос, где хранить статьи? в константах? .тхт файлах? переменных?
|
|
|

09.12.2009, 16:46
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
В принципе можно и в текстовых файлах (хотя зависит от типа информации, картинку в текст не впихнешь  ), но по-моему, гораздо удобнее использовать базу данных.
А если хранишь текст в константах, то чтобы отредактировать какой либо текст, придется заново открыть исходник, внести изменения и откомпилировать программу. Долго и неудобно.
Последний раз редактировалось StealthMaster; 09.12.2009 в 16:48..
Причина: поставил смайлик)
|
|
|

09.12.2009, 16:48
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
возник вопрос как получить список всех модулей в системе (загруженных) через NtQuerySystemInformation немогу понять какую ей структуру надо
Код:
Procedure GetSystemInformation;
var
Temp: PSYSTEM_MODULE_INFORMATION;
modin:PSYSTEM_MODULE_INFORMATION;
ReturnLength: DWORD;
I: integer;
ou:integer;
begin
ou:=0;
try
ReturnLength := 0;
if NtQuerySystemInformation(SystemModuleInformation,nil, 0, ReturnLength) <> STATUS_INFO_LENGTH_MISMATCH then
Exit;
if ReturnLength > 0 then
begin
GetMem(modin, ReturnLength);
try
if NtQuerySystemInformation(SystemModuleInformation,modin, ReturnLength, ReturnLength) = 0 then
begin
Temp := modin;
repeat
Form2.ListBox1.Items.Add(Temp^.aSysM.ImageName);
Temp := Pointer(DWORD(Temp) + Temp^.aSysM.ModuleNameOffset);
if Temp^.aSysM.ModuleNameOffset=0 then
inc(ou);
until ou=2;
end;
finally
FreeMem(modin);
end;
end;
finally
end;
end;
SYSTEM_MODULE= ^_SYSTEM_MODULE;
_SYSTEM_MODULE= packed record
Reserved:array[0..1] of ULONG;
Base:ULONG;
Size:ULONG;
Flags:ULONG;
Index:ULONG;
Unknown:ULONG;
ModuleNameOffset:SHORT;
ImageName:Array[0..256] of Char;
end;
PSYSTEM_MODULE_INFORMATION = ^SYSTEM_MODULE_INFORMATION;
SYSTEM_MODULE_INFORMATION = packed record
uCount:ULONG;
aSysM:SYSTEM_MODULE;
end;
уже начался брутвфорс по перебору вариантов но это не дело...
|
|
|

09.12.2009, 16:51
|
|
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме: 289669
Репутация:
7
|
|
StealthMaster, сэнк, вот если хранить в тхт, можно как - то спрятать тхт чтобы программа была одним файлом? просто прогу хочу на школьный конкурс, и какбе прога которая берет все из тхт файлов....ну неочень проффесионально\опрятно чтоли....
|
|
|

09.12.2009, 18:04
|
|
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме: 638378
Репутация:
41
|
|
Сообщение от DiHWO
StealthMaster, сэнк, вот если хранить в тхт, можно как - то спрятать тхт чтобы программа была одним файлом? просто прогу хочу на школьный конкурс, и какбе прога которая берет все из тхт файлов....ну неочень проффесионально\опрятно чтоли....
Почему неопрятно? Очень даже опрятно. Используй обычные текстовые файлы с собственным расширением. Я бы сделал так - исполнимый файл и рядом папку с базой этих самых файлов. Так будет удобнее и для расширения, и для реализации.
Хотя самое красивое решение - это с базой данных, ИМХО.
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|