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. Зачем там плюсики? Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.