ToNY667 Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 в общем такая ситуевина вышла.в коде Делфи не включается модуль рандома. вот кодprocedure TForm1.zap1Click(Sender: TObject);beginbeginAssignFile(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);beginform2.visible:=true;end;end.и 2-е: как и куда вывести все содержимое текстового файла в отдельной форме? кроме QuickRep а то он у меня не робит=( Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY6671) какую ошибку то выдает?2) проще всего создать новую форму и на ней в мемо вывести(там же и редактировать сможешь) Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 X-tenderда не выдает ошибок. просто одни нули пишет в файл. а мне нужно, чтобы были еще и единички. и сколько бы раз я не пытался.а в мемо не выводит. не подскажешь код, может я неправильно что-то пишу. в делфи новичок =( Ссылка на комментарий
Po$amax@ Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 попробуй такrandom(2)-1;мб проканает Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 Po$amax@ становится 0 и -1Добавлено спустя 5 минут 45 секунд:о сделал вродеДобавлено спустя 42 секунды:хотя остается вторая проблема, не могу вывести текст из файла в отдельную форму Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY667просто random(2) надо было,что значит в отдельную форму? ну создай форму с любым компонентом который тебе нравится и выведи туда весь текст Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 X-tenderв том то и дело, что я незнаю как залить в мемо текст из файла. Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY667что-то там есть в духе memo->lines->loadfromfile(file) Ссылка на комментарий
Po$amax@ Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 можно черезассигн файла, потом каждуй строчку пока EOF не достигнет, это сложнее, но если вставитьapplication.processmessages;в каждом цикле, прога при загрузке огромных файлов не будет винсуть Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 Po$amax@в случае с большими файлами правильнее использовать отдельные потоки для работы с файлами, тогда в случае выхода из программы можно поток остановить а в событии остановки процесса освободить дескрипторы файлов, чтобы случайно не заблочить файл. Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 а как сделать, чтобы было 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); Ссылка на комментарий
Po$amax@ Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 writeln надо а не write ) Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 Po$amax@нет, я посимвольно ввожу 32 символа и 33 символом у меня является переход на новую строку. не в этом проблема Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY667ты не сделал обнуление i при очередном проходе циклаВообще красивее будет так:randomize();for n:=0 to 49 dobegin for i:=0 to 31 do Write(f,' ',random(2)); // запись в файл строки с символами перевода строки writeln(f);end;CloseFile(f); Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 X-tender ты мой герой =) Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY667, ничего героического если бы ты сам старался писать код красиво и понятно самому себе, ошибки бы сам находил фраза есть еще легендарная:«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете»© Стив Макконнелл «Совершенный код» Ссылка на комментарий
ToNY667 Опубликовано 13 июня, 2009 Автор Жалоба Поделиться Опубликовано 13 июня, 2009 Оспади еще одна ошибка: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 Ссылка на комментарий
Clondike Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 чему равно n и s? какой тип? Incompatible types - переводится "несовместимые типы" Ссылка на комментарий
X-tender Опубликовано 13 июня, 2009 Жалоба Поделиться Опубликовано 13 июня, 2009 ToNY667если s - string, n - int, то лучше уж юзай n=strtointdef(s,0); Ссылка на комментарий
ToNY667 Опубликовано 14 июня, 2009 Автор Жалоба Поделиться Опубликовано 14 июня, 2009 а как сделать в листбоксе так, чтобы из файла выдиралась нужная строка и отображалась в листбоксе? Ссылка на комментарий
X-tender Опубликовано 14 июня, 2009 Жалоба Поделиться Опубликовано 14 июня, 2009 ToNY667var FileContent: TStrings;...FileContent:=TStringlist.Create();FileContent.LoadFromFile( 'C:\blablabla.txt' );Listbox.Items.add(FileContent[15]);///добавляем 15-ю строку Ссылка на комментарий
ToNY667 Опубликовано 14 июня, 2009 Автор Жалоба Поделиться Опубликовано 14 июня, 2009 s:='+edit1.text+'; n:=strtointdef(s,0); FileContent:=TStringlist.Create();FileContent.LoadFromFile( 'C:\1.txt' );Listbox1.Items.add(FileContent[n]);///добавляем n-ю строку end;выявляет только первую строку =( Ссылка на комментарий
Po$amax@ Опубликовано 14 июня, 2009 Жалоба Поделиться Опубликовано 14 июня, 2009 мб вместо TStringList использовать Tstrings ? Ссылка на комментарий
ToNY667 Опубликовано 14 июня, 2009 Автор Жалоба Поделиться Опубликовано 14 июня, 2009 Po$amax@ неа, не пойдет Ссылка на комментарий
Clondike Опубликовано 14 июня, 2009 Жалоба Поделиться Опубликовано 14 июня, 2009 ToNY667Проверь, чему равно s. Зачем там плюсики? Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти