ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 05.04.2010, 21:29
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Цитата:
Сообщение от GhostOnline  
А как можно организовать бесконечное?
PHP код:
While (1=1) do  // или  while true do
begin
 
.... // прервать команда Break;
end

Последний раз редактировалось JnK; 05.04.2010 в 22:19.. Причина: Спасибо wolmer, поправил
 

  #12  
Старый 05.04.2010, 21:32
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

Репутация: 229
По умолчанию

Цитата:
Сообщение от JnK  
Код:
While (1<>1) do
begin
 ....
end;
Точнее так:
Код:
While (1=1) do
begin
 ....
end;
 

  #13  
Старый 05.04.2010, 21:35
qwerty001
Новичок
Регистрация: 05.04.2010
Сообщений: 7
Провел на форуме:
17240

Репутация: 0
По умолчанию

спасибо большое (:
 

  #14  
Старый 05.04.2010, 21:37
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Я вообще не понимаю смысла кода от JnK, выше код который даёт бесконечное число комбинации(точнее максимальное от Cardinal / 26)
 

  #15  
Старый 05.04.2010, 22:02
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Цитата:
Сообщение от JnK  
PHP код:
While (1<>1) do  // или  while true do
begin
 
.... // прервать команда Break;
end
Дурак?

while true do
begin
end;

где здесь организация?
 

  #16  
Старый 05.04.2010, 22:16
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме:
1229135

Репутация: 425
Отправить сообщение для AlexTheC0d3r с помощью ICQ
По умолчанию

интересно, что будет занимать больше времени?

Цитата:
while (1=1) do
либо
Цитата:
while true do
??

Мне кажется что 1е, т.к. в цикле мы дополнительно сравниваем действительно ли 1=1...или я ошибаюсь?


UPD: при 4х различных тестах пришел к выводу, что как бы ни было парадоксально, на 1 выполнение цикла
Цитата:
while 1=1 do
уходит меньше времени чем на
Цитата:
while true do

Последний раз редактировалось AlexTheC0d3r; 05.04.2010 в 22:41..
 

  #17  
Старый 05.04.2010, 22:17
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Jingo Bo, У тебя пропускается вывод на aa .. az сразу с b
Код:
a
..
z
ba
..
bz
ca
P.s. Прогонял в цикле 1000.

Насчет кода я показывал метод реализации, и ниже дописал, что лучше сделать 1 циклом, насчет "бесконечного цикла" то ниже приведен код. Т.к. пароли имеют чувствительность к регистру и используются цифры, сделал на основе константы.
PHP код:
const
  
base='0987654321ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba';
var
  
s,str:string;
  
i:integer;
begin
  i
:=1;
  while 
true do
  
begin
    s
:=str+base[i];
    
memo1.Lines.add(s);
    if 
i>=length(basethen
    begin
      i
:=1;
      
str:=s;
    
end;
    
inc(i);
  
end
 

  #18  
Старый 05.04.2010, 22:29
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Цитата:
Сообщение от AlexTheC0d3r  
интересно, что будет занимать больше времени?

либо

??

Мне кажется что 1е, т.к. в цикле мы дополнительно сравниваем действительно ли 1=1...или я ошибаюсь?
В обоих циклах идет сравние:
1. 1=1
2. true=true; (т.е. -1=-1)

2 GhostOnline, обзываться не стоит, перепутал условие.

P.s. Сорри за оффтоп.
 

  #19  
Старый 05.04.2010, 22:47
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Цитата:
Jingo Bo, У тебя пропускается вывод на aa .. az сразу с b
Это да, но это не сложно исправить, писалось та на скорую руку.

Цитата:
В обоих циклах идет сравние:
1. 1=1
2. true=true; (т.е. -1=-1)
Взорвал мозг))) Во-первых while 1=1 do уже удивляет и доставляет своей нелепостью(пс, первый раз такое вижу) Во-вторых при 1=1 будет 2 проверки, а с true - одна(не веришь - гоу в отладчик) В третьих действительно часто при проверки пишут такие обсурдные вещи как 1<>1 и т.д. для того что delphi со включённым(по дефолту) ключём {$OPTIMIZATION ON} не отбрасывала код в условии if false then (подобное используют что имитировать вложенную процедуру через метки(для оптимизации и уменьшения кода). Но всё равно это только от не знания деректив.
 

  #20  
Старый 05.04.2010, 22:51
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме:
1229135

Репутация: 425
Отправить сообщение для AlexTheC0d3r с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
В обоих циклах идет сравние:
1. 1=1
2. true=true; (т.е. -1=-1)

2 GhostOnline, обзываться не стоит, перепутал условие.

P.s. Сорри за оффтоп.
Проверьте код:

PHP код:
program TestCycleDuration;

{
$APPTYPE CONSOLE}

uses
  SysUtils
DateUtils;
var
  
iinteger;
  
timeStarttimeEndTDateTime;

begin
  Writeln
('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('First test, cycle "while true do"');
  
Writeln('Testing...');
  
:= 0;
  
timeStart := now;
  while 
true do
  
begin
    i 
:= 1;
    if 
2000000000 then
      
Break;
  
end;
  
timeEnd := Now;
  
Writeln('Test duration: ' inttostr(MilliSecondsBetween(timeEndtimeStart)) +
    
'ms');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('Second test, cycle "while 1=1 do"');
  
Writeln('Testing...');
  
:= 0;
  
timeStart := now;
  while 
do
  
begin
    i 
:= 1;
    if 
2000000000 then
      
Break;
  
end;
  
timeEnd := Now;
  
Writeln('Test duration: ' inttostr(MilliSecondsBetween(timeEndtimeStart)) +
    
'ms');
  
Readln;
end
UPD2: подправил

Рекомендуется тестировать при как можно меньшем кол-ве запущенных приложений!

тест общий занимает около 2х секунд... интересны результаты... Абсолютно не претендую на адекватность теста, тем более скорее всего он не особо адекватен..

UPD3: Прогнав пару-тройку раз, заметил что результаты примерно одинаковые, на моей машине значения либо 671ms ибо 687ms

Последний раз редактировалось AlexTheC0d3r; 05.04.2010 в 23:04..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ