Перейти к содержанию

random и Delphi 7


Рекомендуемые сообщения

в общем такая ситуевина вышла.

в коде Делфи не включается модуль рандома.

вот код

procedure TForm1.zap1Click(Sender: TObject);

begin

begin

AssignFile(f,'c:\1.txt'); // привязка названия к переменной

{$I-}

Append(f); // открыть файл для добавления

if IOResult<>0 then // если ошибка открытия (напр. файла нет)

begin

{$I-}

Rewrite(f); // создать новый файл

{$I+}

if IOResult<>0 then // ошибка создания файла

begin

ShowMessage('Ошибка создания файла C:\1.TXT');

Exit;

end;

end;

while n<=50 do

begin n:=n+1;

while i<=32 do

begin

randomize;

i:=i+1;

b:=random(1);

str(b,s);

Write(f,' ',s); // запись в файл строки с символами перевода строки

if i=32 then writeln(f);

end;

end;

CloseFile(f); // закрыть файл

end;

end;

procedure TForm1.chten1Click(Sender: TObject);

begin

form2.visible:=true;

end;

end.

и 2-е: как и куда вывести все содержимое текстового файла в отдельной форме? кроме QuickRep а то он у меня не робит=(

Ссылка на комментарий

X-tender

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

а в мемо не выводит. не подскажешь код, может я неправильно что-то пишу. в делфи новичок =(

Ссылка на комментарий

Po$amax@ становится 0 и -1

Добавлено спустя 5 минут 45 секунд:

о сделал вроде

Добавлено спустя 42 секунды:

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

Ссылка на комментарий

ToNY667

просто random(2) надо было,

что значит в отдельную форму? ну создай форму с любым компонентом который тебе нравится и выведи туда весь текст

Ссылка на комментарий

можно через

ассигн файла, потом каждуй строчку пока EOF не достигнет, это сложнее, но если вставить

application.processmessages;

в каждом цикле, прога при загрузке огромных файлов не будет винсуть

Ссылка на комментарий

Po$amax@

в случае с большими файлами правильнее использовать отдельные потоки для работы с файлами, тогда в случае выхода из программы можно поток остановить а в событии остановки процесса освободить дескрипторы файлов, чтобы случайно не заблочить файл.

Ссылка на комментарий

а как сделать, чтобы было 50 строк? а то максимум одна, даже если я цикл делаю.

while n<=50 do

begin n:=n+1;

while i<=32 do

begin

randomize;

i:=i+1;

b:=random(1);

str(b,s);

Write(f,' ',s); // запись в файл строки с символами перевода строки

if i=32 then writeln(f);

end;

end;

CloseFile(f);

Ссылка на комментарий

ToNY667

ты не сделал обнуление i при очередном проходе цикла

Вообще красивее будет так:


randomize();
for n:=0 to 49 do
begin
for i:=0 to 31 do
Write(f,' ',random(2)); // запись в файл строки с символами перевода строки
writeln(f);
end;
CloseFile(f);

Ссылка на комментарий

ToNY667, ничего героического :) если бы ты сам старался писать код красиво и понятно самому себе, ошибки бы сам находил :) фраза есть еще легендарная:

«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете»© Стив Макконнелл «Совершенный код»

Ссылка на комментарий

Оспади еще одна ошибка:

procedure TForm3.Button1Click(Sender: TObject);

begin

ListBox1.Items.LoadFromFile('c:\1.txt');

s:=edit1.text;

val(s,n,0);

Listbox1.itemindex:=n;

end;

где она здесь может быть? пишет Incompatible types

Ссылка на комментарий

s:='+edit1.text+';
n:=strtointdef(s,0);
FileContent:=TStringlist.Create();
FileContent.LoadFromFile( 'C:\1.txt' );
Listbox1.Items.add(FileContent[n]);///добавляем n-ю строку
end;

выявляет только первую строку =(

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...