|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2007, 11:41 | #1 |
Регистрация: 02.05.2007
Сообщений: 8
|
Вывести конкретную строку из файла
Вывел алгоритм случайных не повторяющихся чисел, а вот вывести по этим числам строки из файла ни как не получается. Помогите кто чем может, буду очень блогадарен.
var TIntegerList: TStringList; Added: Boolean; i, Number: Cardinal; begin TIntegerList:=TStringList.Create; TIntegerList.Sorted:=True; TIntegerList.Duplicates:=dupError; TIntegerList.LoadFromFile('ptb.txt' ); for i:=1 to 7 do begin Added:=False; repeat Randomize; try Number:=Random(StrToInt(Label1.Capt ion)+1); if Number <> 0 //Исключаем ноль then begin TIntegerList.Add(IntToStr(Number)); Added:=True; end else Added:=False except on EStringListError do Added:=False end until Added = True; if i=1 then begin Edit1.Text:=IntToStr(Number); Edit8.Text:=TIntegerList.Strings[StrToInt(Edit1.Text)]; end; if i=2 then begin Edit2.Text:=IntToStr(Number); Edit9.Text:=TIntegerList.Strings[StrToInt(Edit2.Text)]; end; if i=3 then begin Edit3.Text:=IntToStr(Number); Edit10.Text:=TIntegerList.Strings[StrToInt(Edit3.Text)]; end; if i=4 then begin Edit4.Text:=IntToStr(Number); Edit11.Text:=TIntegerList.Strings[StrToInt(Edit4.Text)]; end; if i=5 then begin Edit5.Text:=IntToStr(Number); Edit12.Text:=TIntegerList.Strings[StrToInt(Edit5.Text)]; end; if i=6 then begin Edit6.Text:=IntToStr(Number); Edit13.Text:=TIntegerList.Strings[StrToInt(Edit6.Text)]; end; if i=7 then begin Edit7.Text:=IntToStr(Number); Edit14.Text:=TIntegerList.Strings[StrToInt(Edit7.Text)]; end; end; TIntegerList.Destroy; end; |
08.05.2007, 15:00 | #2 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
Я так понял файл текстовый. Можно так:
var f:textfile; i:longint; s:string[255]; //Строка posit:longint;//Номер строки begin posit:=...номер строки reset(F); for i:=0 to posit do begin readln(f,s);//Переход на следующую строчку if i=posit then READLN(F,S);//чтение позиции в S end; Вывести строку с определенным номером можно (насколько мне известно) только перебором каждой строчки, используя for и READLN(Наверное вам понятно почему READLN а не READ!). Удачи! Последний раз редактировалось Viteef; 08.05.2007 в 15:09. Причина: Исправление |
09.05.2007, 06:11 | #3 |
Регистрация: 02.05.2007
Сообщений: 8
|
Как вывести S в Edit1, почему когда Posit:=0 выводится ЯЪt`Юt, а когда ставлю другое целое число, постоянно выводится только первая строка файла? Буду ОЧЕНЬ благодарен за помощь.
Последний раз редактировалось Captain Nemo; 09.05.2007 в 08:33. |
09.05.2007, 12:15 | #4 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
У меня это работало.
procedure TForm1.FormCreate(Sender: TObject); begin assignfile(f,'c:\text.txt'); posit:=2; if fileexists ('c:\text.txt')=false then rewrite(f) else reset(F); if posit=1 then begin reset(f); read(f,s); end elsefor i:=2 to posit do begin readln(f,s); if i=posit then READLN(F,S); end; edit1.Text:=s; CloseFile(f);//Если файл больше не нужен end; Последний раз редактировалось Viteef; 09.05.2007 в 12:18. |
10.05.2007, 03:28 | #5 |
Регистрация: 02.05.2007
Сообщений: 8
|
Спасибо!!! Обращайся, если смогу, буду рад помочь. Закончу, выложу результат.
Последний раз редактировалось Captain Nemo; 10.05.2007 в 03:33. |
10.05.2007, 14:04 | #6 |
Регистрация: 02.05.2007
Сообщений: 8
|
Опять не выходит!!!!!!!!
Когда добавляю кнопку и к ней прописываю, т.е. как только пишу if: if T_Category.Text='Водители участка СМ и АТ ЮЭС' then begin fTest:='Data\Category'+'01\'+'ptb.t xt'; SelectionOfNumbersClick(Sender); // процедура разных чисел end; if T_Category.Text='Дежурные электромантеры подстанций' then begin fTest:='Data\Category'+'02\'+'ptb.t xt'; SelectionOfNumbersClick(Sender); // процедура разных чисел end; то из-за нее (из-за процедуры см. Captain Nemo Вывести конкретную строку из... 08.05.2007, 10:41) возникает проблема... прога виснет. КАРАУЛ!!!!! ...ааааааааааа |
10.05.2007, 16:20 | #7 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
Не совсем понятен смысл программы, что она должна делать?
Исходник добавил бы ясности... |
11.05.2007, 03:17 | #8 |
Регистрация: 02.05.2007
Сообщений: 8
|
Могу отправить исходник, нужен твой е-маил. Пробовал прикрепить к сообщению файл, но ни чего не вышло, выдает соообщение об ошибке URL, видимо размер файла велик. Мой yuri_ermilov@mail.ru
Последний раз редактировалось Captain Nemo; 11.05.2007 в 03:41. |
12.05.2007, 23:15 | #9 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
|
15.05.2007, 03:44 | #10 |
Регистрация: 02.05.2007
Сообщений: 8
|
Все! Я сделал ее!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вывести строку задом-наперёд (assembler) | Nikolai_90 | Помощь студентам | 1 | 03.06.2008 08:03 |
Как вывести из текстового файла на экран русский текст? | Mischa | Помощь студентам | 8 | 12.03.2008 06:23 |
Вывести информацию из типизированного файла в combobox... | tacer | Помощь студентам | 1 | 04.12.2007 11:46 |
Считать определенную строку из файла | DimkinStd | Работа с сетью в Delphi | 4 | 15.02.2007 22:30 |