Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

02.11.2007, 12:15
|
|
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме: 165671
Репутация:
215
|
|
Да, я имел ввиду консольные приложения (или оконные с использованием каких-то кроссплатформенных (всмысле наличия вариантов аналогичной библиотеки для разных платформ с предоставлением программистам аналогичных пограммных интерфейсов) библиотек, если такие существуют, я просто не знаю), пишущиеся в соответствии со стандартом.
Последний раз редактировалось DWORD; 02.11.2007 в 12:25..
|
|
|

06.01.2008, 16:01
|
|
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме: 1777536
Репутация:
932
|
|
Скажи нет псевдокоду!
Код:
http://algolist.manual.ru/search/esearch/
|
|
|

14.01.2008, 13:50
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме: 3371897
Репутация:
1462
|
|
eazy Сниф порта
В Делфи чтобы просушать уже открытый порт достаточно взять компонент IdTCP из вкладки Indy clients , в bound port пишешь свой порт и обрабатываешь событие чтения.
|
|
|

29.01.2008, 02:10
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме: 422909
Репутация:
200
|
|
Delphi
Для тех, кому важен размер программы. Иногда требуется что либо сделать по таймеру, тут уже стандартным компонентом Timer не обойтись, тогда воспользуемся следующими функциями:
Код:
uses MMSystem ///подключим необходимый модуль
...
var
TID:Integer;
...
procedure TimeCallback(TimerID, Msg : UINT; DWUser,DW1,DW2 : DWord); pascal;
///сюда вставляем код, который должен выполняться по таймеру
end;
procedure StartTimer(interval:cardinal);
begin
TID := timeSetEvent(interval,0,@TimeCallBack,0,TIME_PERIODIC);
end;
//используем нашу процедуру
StartTimer(10000) // то есть 10 секунд
|
|
|

05.03.2008, 19:03
|
|
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме: 136883
Репутация:
50
|
|
Сообщение от TaNkist
Очевидно, что длина str не меняется, но компилятор считает, что все, что передается по ссылке сожжет быть изменено, и lstrlen вычисляется много раз. Оптимизированный вариант выглядит так.
Код:
//Так лучше
N:=lstrlen(str);
While i<= n do
Begin
X:=x+ord(str[i]);
Inc(i);
End;
не знаю откуда это вообще взялось... мб старые компилеры такую хрень делали,
не знаю, не смотрел, но явно не в 7-й делфе...

Пис!
|
|
|
Delphi - простая работа с файлами |

26.04.2008, 16:37
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Delphi - простая работа с файлами
Часто в коде программ можно увидеть что-то типа
Код:
var
fi, fo: file;
a: integer;
..
assignfile(fi, 'a.in');
reset(fi);
assignfile(fo, 'a.out');
rewrite(fo);
read(fi, a);
write(fo, a);
close(fi);
close(fo);
Реже встречается код, когда работа идёт с переопределением стандартного ввода/вывода, что на самом деле удобнее, поскольку в write, read, writeln и readln не надо писать ссылку на файл:
Код:
var
a: integer;
..
assignfile(input, 'a.in');
reset(input);
assignfile(output, 'a.out');
rewrite(output);
read(a);
write(a);
close(input);
close(output);
На самом деле - можно сделать ещё короче:
Код:
var
a: integer;
..
reset(input, 'a.in');
rewrite(output, 'a.out');
read(a);
write(a);
close(input);
close(output);
Кстати (тестилось и на винде, и на никсах - везде результат положительный), можно даже и не использовать
- система сама всё правильно закрывает.
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

26.04.2008, 16:51
|
|
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме: 136883
Репутация:
50
|
|
Сообщение от desTiny
Кстати (тестилось и на винде, и на никсах - везде результат положительный), можно даже и не использовать - система сама всё правильно закрывает.
Если так рассуждать, то вообще и память освобождать не надо и дескрипторы закрывать... конечно система сама всё закроет и поудаляет всё что надо, но это показывает, что у программиста руки из жопы растут... так что пишите красивый код или по крайней мере по правилам хорошего тона... а не через задницу...
|
|
|

26.04.2008, 17:02
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Сообщение от x0man
Если так рассуждать, то вообще и память освобождать не надо и дескрипторы закрывать... конечно система сама всё закроет и поудаляет всё что надо, но это показывает, что у программиста руки из жопы растут... так что пишите красивый код или по крайней мере по правилам хорошего тона... а не через задницу...
Я и не говорю, что так надо делать - я говорю, что это не критично. Просто, если открывать всё через CreateFile, то тогда, если не закрыть, то произойдёт что-нибудь нехорошее...
Сам я вообще стремлюсь к чему-то такому:
Код:
var
a: integer;
..
reset(input, 'a.in');
rewrite(output, 'a.out');
try
read(a);
write(a);
finally
close(input);
close(output);
end;
PS Везёт мне на красивые номера постов сейчас  Этот - 666777 
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

27.04.2008, 05:25
|
|
Познающий
Регистрация: 24.02.2006
Сообщений: 34
Провел на форуме: 136883
Репутация:
50
|
|
стремиться надо вот к такому если оперировать с файлами функциями делфы...
Код:
var input : File;
begin
AssignFile(input, 'a.txt');
{$I-}
Reset(input);
{$I+}
if IOResult <> 0 then exit;
CloseFile(input);
end;
|
|
|

18.05.2008, 00:43
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Довольно интерестный способ вызова API функций. Очень удобен в случаях низко уровнего программирования или в тех местах где очень важен размер.
Многие API функции из kernel32.dll имеют аналоги в ntdll которые в свою очередь это лишь только оболочка над ядерными функциияви вызываемыми через SYSENTER
Вот примера вызова определенной функции напрямую через SYSENTER => нам даже не нужен импорт. Разви что зависимость от операционной системы.
Данный пример - аналог функции VirtualProtect для XP
Код:
push _start ; адрес начала блока
mov eax,esp ; eax = Pstart_block
push 100 ; длинна блока
mov edx,esp ; edx = Plength_block
push esp ; для нас не важно
push 4 ; новые права доступа
push edx ; Plength_block
push eax ; Pstart_block
push -1 ; говорит что это наш процес
xor eax,eax ;
mov al,89h ; eax=89h => NtProtectVirtualMemory для XP
push eax ; в нашем случае не важно что тут
push @m1 ; куда попадем после SYSENTER
mov edx, esp ; нуна для SYSENTER
sysenter
@m1:
add esp,20h ; Очищаем стек
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|