Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.09.2013, 20:00
RussianBoy RussianBoy вне форума
Прохожий
 
Регистрация: 12.09.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Запись в текстовый файл

Доброго времени суток посетители форума .
Возник вопрос по поводу записи результатов полного перебора символов в текстовый файл . Программа выводит результаты перебора в Memo1 , не могу переделать под вывод в файл , присутствует "подпрограмма" вывода слова "Hello" в файл ( набросок ) . В комментариях выразил свою идею по реализации . Собственно код программы :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var

Abc : array [1..15] of char;
a,b,c,d,e,f,g,h,i,j: integer;
                                          // думаю сдесь надо 
myFile:TextFile;                      инициализировать переменную
text:string;

begin
 Abc[1]:='k';
 Abc[2]:='a';
 Abc[3]:='r';
 Abc[4]:='i';
 Abc[5]:='0';
 Abc[6]:='1';
 Abc[7]:='2';
 Abc[8]:='3';
 Abc[9]:='4';
 Abc[10]:='5';
 Abc[11]:='6';
 Abc[12]:='7';
 Abc[13]:='8';
 Abc[14]:='9';
 Abc[15]:='n';

    for a:= 1 to 15 do
     for b:= 1 to 15 do
begin
Memo1.Lines.Add(Abc[a]+Abc[b]);
                                                    // сдесь присвоить значение 
text:='c:\Test.txt' ;                            вышеуказанной переменной 
AssignFile(myFile,text);                      переменной (Abc[a]+Abc[b])
ReWrite(myFile);
Append(myFile);
WriteLn(myFile,'hello');         // вывести значение переменной в файл 
CloseFile(myFile);
end;



end;

Заранее спасибо )))

Последний раз редактировалось RussianBoy, 12.09.2013 в 20:09.
Ответить с цитированием
  #2  
Старый 12.09.2013, 20:19
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Код:
Memo1.SaveToFile('hello.txt');
Ответить с цитированием
  #3  
Старый 12.09.2013, 22:17
RussianBoy RussianBoy вне форума
Прохожий
 
Регистрация: 12.09.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Uniq!
Код:
Memo1.SaveToFile('hello.txt');

Нужна не запись из Memo1 в файл , Memo1 как раз-таки нужно убрать .
Т.е. по нажатию кнопки программа перебирает символы ( комбинации ) и записывает их в блокнот .
Ответить с цитированием
  #4  
Старый 12.09.2013, 22:31
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Не в блокнот, а в файл. Стоит отличать одну из тысячи программ для просмотра текстовых файлов от самих файлов.
Записывать как написано: AssignFile, Rewrite, в цикле WriteLn, потом CloseFile. Соединить abc[a] и abc[b] в строку, и записать строку в текстовый файл (WriteLn(file, Abc[a]+Abc[b])).

З.Ы. бедный хард, много ему придется головками шуршать...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 12.09.2013, 22:53
Annihilator Annihilator вне форума
Прохожий
 
Регистрация: 16.06.2013
Сообщения: 29
Версия Delphi: Delphi XE 2
Репутация: 10
По умолчанию

Еще можно в цикле засунуть в TStringList вместо TMemo, а потом методом saveToFile
Ответить с цитированием
  #6  
Старый 13.09.2013, 12:51
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Кстати.
Если хотите пользоваться именно TextFile и.т.д то
либо ReWrite(myFile);
// эта процедура создаёт новый пустой файл, а если файл уже существовал, то он будет стёрт.

либо Append(myFile); // эта процедура открывает существующий файл, устанавливает позицию записи на конец файла.
поэтому, как повелось со времён Turbo 3.0

Код:
text:='c:\Test.txt' ;
AssignFile(myFile,text);
{$I-} // вот такое волшебное слово, 
        // отключаем Exception при ошибке ввода-вывода
Append(myFile); // открываем файл для дописывания в конец
if IoResult <>0 then // проверяем, что открылся
{$I+} // а теперь включаем Exception при ошибке ввода-вывода
         // поскольку всё равно ничего поделать не можем
ReWrite(myFile); // это ещё оператор if !!

WriteLn(myFile,Abc[a]+Abc[b]); // пишем
CloseFile(myFile);// закрываем

но открытие и закрытие файла лучше делать вне цикла, а внутри цикла делать только WriteLN
Ответить с цитированием
  #7  
Старый 14.09.2013, 12:41
RussianBoy RussianBoy вне форума
Прохожий
 
Регистрация: 12.09.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Не в блокнот, а в файл. Стоит отличать одну из тысячи программ для просмотра текстовых файлов от самих файлов.
Записывать как написано: AssignFile, Rewrite, в цикле WriteLn, потом CloseFile. Соединить abc[a] и abc[b] в строку, и записать строку в текстовый файл (WriteLn(file, Abc[a]+Abc[b])).

З.Ы. бедный хард, много ему придется головками шуршать...
"блокнот" не думая написал наверно .
Что правда , то ПК грузится очень сильно при выполнении программы .
Спасибо за ответ !

Цитата:
Сообщение от icWasya
Кстати.
Если хотите пользоваться именно TextFile и.т.д то
либо ReWrite(myFile);
// эта процедура создаёт новый пустой файл, а если файл уже существовал, то он будет стёрт.

либо Append(myFile); // эта процедура открывает существующий файл, устанавливает позицию записи на конец файла.
поэтому, как повелось со времён Turbo 3.0

Код:
text:='c:\Test.txt' ;
AssignFile(myFile,text);
{$I-} // вот такое волшебное слово, 
        // отключаем Exception при ошибке ввода-вывода
Append(myFile); // открываем файл для дописывания в конец
if IoResult <>0 then // проверяем, что открылся
{$I+} // а теперь включаем Exception при ошибке ввода-вывода
         // поскольку всё равно ничего поделать не можем
ReWrite(myFile); // это ещё оператор if !!

WriteLn(myFile,Abc[a]+Abc[b]); // пишем
CloseFile(myFile);// закрываем

но открытие и закрытие файла лучше делать вне цикла, а внутри цикла делать только WriteLN

Программа заработала , все записалось в файл , постараюсь понять ( изучить ) принцип работы .
Спасибо Огромное за такой емкий ответ !!!

если можно обьясните пожалуйста почему программа перебора ( на 6 символов , написанная по такому же сценарию )так сильно загружает ПК , причем перебирает примерно минуту , самое начало , и перестает отвечать , приходится закрывать программу . А как написать аналогичную программу ( не цикл в цикле ) чтобы сильно не загружала проц пока не знаю , смотрел в интернете , не знаю с чего начать .

Последний раз редактировалось M.A.D.M.A.N., 15.09.2013 в 18:16.
Ответить с цитированием
  #8  
Старый 15.09.2013, 17:56
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

6 символов, 15 вариантов = 15^6 = 11390625 комбинаций. После каждой запись на диск.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #9  
Старый 15.09.2013, 18:59
RussianBoy RussianBoy вне форума
Прохожий
 
Регистрация: 12.09.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

без записи на диск ( вывод результатов в Memo1 ) программа аналогично загружает ПК и перестает отвечать , может быть виной всему 6 "циклов в цикле " .
Ответить с цитированием
  #10  
Старый 15.09.2013, 19:51
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
без записи на диск ( вывод результатов в Memo1 ) программа аналогично загружает ПК и перестает отвечать , может быть виной всему 6 "циклов в цикле " .
Естественно. Ведь никакой обработки внешних сообщений в цикле не предусмотрено, а цикл выполняется в главном потоке. Поэтому эта операция и занимает все отводимое ей процессорное время.
Честно говоря, не сильно понимаю, зачем это вообще нужно. Как потом используются эти 11 млн комбинаций? Если брутфорс паролей, то делается это несколько иначе, и его обсуждение выходит за правила форума.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025