Страница 1 из 1

Текстовый массив string. Подскажите пожалуйста

Добавлено: 09 янв 2010, 21:12
alt123
Всем привет. В программе в завиcимости от х (1..16) и у (1..3) которые выбираются n раз (в произвольном порядке например х=2,4,1,5,9,12,3,2,2,...) нужно записать последовательно текстовые строки в массив buf. Подскажите пожалуйста как можно записать текст в массив buf так чтобы последующие записи не удаляли предыдущие. Думаю что надо ввести нумерацию строк которые записываются, чтобы потом просто увеличивать номер строки массива на 1, но сделать это не получается, то не те строки выводятся, то удаляются те которые были введены ранее и заполняются последующими. Заранее спасибо.

[syntax='Pascal']uses crt;
var i,j,n,k,x,y:word;
f,ff:text;
buf:array[1..100] of string
begin
readln(n);
for i:=1 to n do
begin
read(x,y);

case х of
1: begin
k:=0;
Assign(f,'\1.txt');
reset(f);
repeat
k:=k+1;
readln(f,buf);
until k=1; {запись к-й строки файла №1 в массив buf}
close(f);
if y=1 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=1;{запись к-й(1й) строки файла №2 в масив buf}
close(ff);end;

if y=2 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf[i+1]); until k=1;k:=0;
while k=2 do k:=k+1; readln(ff,buf);
close(ff);end;

if y=3 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf[i+1]); until k=1; k:=0;
while k=2 do
k:=k+1; readln(ff,buf[i+2]); k:=0;
while k=3 do
k:=k+1; readln(ff,buf[i+3]); {запись 1,2,3 строк файла №2 в массив buf}
close(ff); end;
end;


2: begin
k:=0;
Assign(f,'D:\1.txt');
reset(f);
repeat
k:=k+1;
readln(f,buf);
until k=2;
close(f);

if y=1 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=4;
close(ff);end;
if y=2 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=4;k:=0;
while k=5 do k:=k+1; readln(ff,buf[і+2]);
close(ff);end;
end;..........
[/syntax]

Re: Текстовый массив string

Добавлено: 10 янв 2010, 01:21
Magnum
Если я правильно понял, вам из некоторого файла нужно вытащить некоторые строки произвольной нумерации (например 1-ю, 7-ю и 4-ю). Правильно?

Re: Текстовый массив string

Добавлено: 10 янв 2010, 12:58
alt123
Да совершенно верно. Проблема в том как их записать последовательно в массив buf

Re: Текстовый массив string

Добавлено: 18 янв 2010, 14:29
BulldozerBSG
Если ето Delphi, то строки там динамические. Есть функция для конкатенации строк, но рекомендуют пользоваться сложением:

string_1 := string_1 + string_2;

Ой чуть не забыл в паскале функция называеться помоему Concat

Re: Текстовый массив string

Добавлено: 19 янв 2010, 09:04
Хыиуду
count:=1;
for i:=1 to y do
begin
readln(x);
reset(f);
for j:=1 to x do readln(f,s);
buf[count]:=s;
inc(count);
end;

Собственно, все.