|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Чтение и запись в один txt файл
Здравствуйте уважаемые форумчане!
У меня возник такой вопрос: Можно ли реализовать одновременное чтение данных из текста файла в цикле и добавление записи в конец текстового файла. Например. Код:
AssignFile(outfile, 'outfile.txt'); // Открываем файл Reset(outfile); while not Seekeof(outfile) do begin read(outfile, Xa); // Считываем переменные Xa, Xb read(outfile, Yb); Xamax:=((Image1.Width div 2)div mashi); Ybmax:=((Image1.Height div 2)div mashi); for YbNew:=0 to Ybmax do begin // В цикле проверяем их на некоторое условие for XaNew:=0 to Xamax do begin AssignFile(outfile, 'outfiles.txt'); ReWrite(outfile); if (dtf*beta)>=sqrt(sqr(XaNew-Xa)+sqr(YbNew-Yb)) then begin Append(outfile); writeln(outfile, XaNew,' ',YbNew); // если условие удовлетворено, записываем полученные переменные в конец того же файла. Image1.Canvas.Pixels[x0,y0]:=RGB(255, 0, 0); x0:=x0+mashi; end else begin x0:=x0+mashi; end; end; Image1.Canvas.Pixels[x0,y0]:=RGB(255, 0, 0); y0:=y0+mashi; end; end; CloseFile(outfile); end; Помоги пожалуйста или дайте совет как можно такое реализовать? Последний раз редактировалось Admin, 14.10.2013 в 15:28. |
#2
|
||||
|
||||
Вот на этих строках:
Код:
for YbNew:=0 to Ybmax do begin // В цикле проверяем их на некоторое условие for XaNew:=0 to Xamax do begin AssignFile(outfile, 'outfiles.txt'); ReWrite(outfile); Классическим вариантом решения этой задачи будет: 1) Открыть для чтения исходный файл inFile 2) Открыть для записи новый файл outFile 3) Циклом считывать из него значения Xa Yb??? (уточните) 3а) Внутри цикла добавлять новые, просчитанные значения по вашему алгоритму. 4) Закрыть inFile 5) Закрыть outFile 6(не обязательно): запомнить во временную переменную имя inFile, удалить его, переименовать outFile (используя временную переменную.) |
#3
|
|||
|
|||
Спасибо, мысль понял
Здесь мы считываем Xa и Xb, в которых содержаться координаты точек
Код:
while not Seekeof(outfile) do begin read(outfile, Xa); read(outfile, Yb); ....... end Внутри этого цикла хотел поставить проверку на принадлежность точек (которые являются центрами некоторых окружностей), другим точкам которые находятся внутри окружности и записать их в конец того же файла. Код:
for YbNew:=0 to Ybmax do begin // В цикле проверяем их на некоторое условие for XaNew:=0 to Xamax do begin AssignFile(outfile, 'outfiles.txt'); ReWrite(outfile); if (dtf*beta)>=sqrt(sqr(XaNew-Xa)+sqr(YbNew-Yb)) then begin Append(outfile); writeln(outfile, XaNew,' ',YbNew); // если условие удовлетворено, записываем полученные переменные в конец того же файла. Image1.Canvas.Pixels[x0,y0]:=RGB(255, 0, 0); x0:=x0+mashi; end else begin x0:=x0+mashi; end; end; Image1.Canvas.Pixels[x0,y0]:=RGB(255, 0, 0); y0:=y0+mashi; end; Возник еще вопрос. Как можно скопировать содержимое нового файла outFile в конец файла infile? |
#4
|
||||
|
||||
Какого ж чёрты у вас в коде:
Код:
read(outfile, Xa); read(outfile, Yb); Про копирование я вообще не понял. inFile - это исходный файл. Что вы собрались в него копировать? outFile - это файл, который у вас должен получиться после преобразования. Код:
AssignFile(inFile, 'outfile.txt'); // Связываем исходный файл с переменной Reset(inFile); // Открываем файл для чтения AssignFile(outfile, 'outfile_reCalc.txt'); // Связываем новый файл с переменной ReWrite(outfile); // Открывай файл для записи while not Seekeof(outfile) do begin // Пробегаем весь исходный файл read(infile, Xa); // Считываем переменные Xa, Yb read(infile, Yb); writeln(outfile, Xa,' ',Yb); //записываем текущие проверяемые точки в новый файл for YbNew:=0 to Ybmax do for XaNew:=0 to Xamax do begin // ... какие-то преобразования if // ... если точка принадлежит, то записываем её новые координаты writeln(outfile, XaNew,' ',YbNew); // запись новых координат точки в новый файл end; end; CloseFile(inFile); CloseFile(outfile); Код:
Пробник1: Xa1 Yb1 Пробник2: Xa1 Yb2 Пробник3: Xa1 Yb3 Совпадение: XaNew YbNew Пробник4: Xa1 Yb4 Пробник5: Xa2 Yb1 и т.д. Поправил код. Последний раз редактировалось Uniq!, 14.10.2013 в 16:27. |