Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2009, 00:19   #1
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию помогите с массивами

имеется файл с содержимым : Спартак, Цска, Динамо, Локомотив.
вот мой код
Код:
 procedure TForm1.Button1Click(Sender: TObject);
var f1:textfile;
a:array[1..4] of string;
i:integer;
begin
assignfile(f1,'D:\d.txt');
reset(f1,a[i]);
memo1.Lines.Add(a[i]);
end;
end.
мне нужно эти 4 команды из файла связать с массивом

Последний раз редактировалось Stilet; 03.08.2009 в 09:32.
lg12 вне форума Ответить с цитированием
Старый 03.08.2009, 06:57   #2
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var f1:textfile;
a:array[1..4] of string;
i:integer;
begin
assignfile(f1,'D:\d.txt');
reset(f1]);
for i:= 1 to 4 do
    Readln(F1, a[i]);
// цикл for не рекомендуется - это как примере для 4 элементов.
end;
end.
Процедура Readln считывает строку из файла.
Но с файлами не рекомендуется использовать цикл с известным числом повторений, а рекомендуется использовать такую конструкцию:
Код:
While not eof(f1) do
 Begin
// Здесь работает с файлом
 End;
Таким образом пока не конец файла работаем с его содержимым.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 03.08.2009, 07:58   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если стоит задача создания массива из строк текстого файла, для дальнейшей работы с ним(сортировки, поиска и т.д.), то мы не знаем размер будующего массива. Поэтому используем динамические массивы.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f1:textfile;
s:string;
a:array of string;
i,j:integer;
begin
assignfile(f1,'D:\d.txt');
reset(f1);
while not eof(f1) do
 begin
  readln(f1,s);
  Memo1.Lines.Add(s);//записываем файл построчно в Мемо
 end;
Setlength(a,Memo1.Lines.Count);//определяем размер массива(индексация с ноля)
for i:=0 to Memo1.Lines.Count-1 do
a[i]:=Memo1.Lines.Strings[i];//создаем массив
end;
puporev вне форума Ответить с цитированием
Старый 03.08.2009, 11:12   #4
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

а если файл такой
спартак динамо цска локомотив
10 20 30 40.
Тоесть у каждой команды определенное количество очков. как можно с ними работать? вот мой код
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
dron = record
 name : string;
 fany:integer;
 ocki : integer;
 end;
var
f1:textfile;
s:string;
a:array of dron;
i,j:integer;
begin
assignfile(f1,'D:\d.txt');
reset(f1);
while not eof (f1) do
begin
readln(f1,s);// записываем файл построчно в мемо
memo1.Lines.Add(s);
setlength(a,memo1.lines.Count); //определяем размер массива
for i:=0 to memo1.Lines.Count do
a[i].name:=memo1.lines.strings[i]; //создаем массив
for i:=0 to memo1.Lines.Count-1 do
a[i].ocki:=memo1.Lines.Strings[i];
end;
end;
end.

Последний раз редактировалось Stilet; 03.08.2009 в 11:15.
lg12 вне форума Ответить с цитированием
Старый 03.08.2009, 11:42   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1. Для чего в записи поле fany? Наверное это количество фанатов?
2. Файл удобнее написать так
спартак 5000 10
динамо 5500 20
цска 8000 30
локомотив 6000 40
Затем читать строку из Мемо и парсить.
Код:
a[i].name:=copy(s,1,pos(' ',s)-1);//первое слово в строке
delete(s,1,pos(' ',s));
a[i].fane:=StrToint(copy(s,1,pos(' ',s)-1));//второе
delete(s,1,pos(' ',s));
a[i].ocki:=StrToint(copy(s,1,pos(' ',s)));//последнее
puporev вне форума Ответить с цитированием
Старый 03.08.2009, 12:05   #6
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
type
dron = record
 name : string;
 fany:integer;
 ocki : integer;
 end;
var
f1:textfile;
s:string;
a:array of dron;
i,j:integer;
begin
assignfile(f1,'D:\d.txt');
reset(f1);
while not eof (f1) do
begin
readln(f1,s);// записываем файл построчно в мемо
memo1.Lines.Add(s);
end;
a[i].name:=copy(s,1,pos(' ',s)-1);//первое слово в строке
delete(s,1,pos(' ',s));
a[i].fany:=StrToint(copy(s,1,pos(' ',s)-1));//второе
delete(s,1,pos(' ',s));
a[i].ocki:=StrToint(copy(s,1,pos(' ',s)));//
end;
end.
не выводит в мемо ничего и появляется сообщение об ошибке

From Stilet: код оформляй читабельно. Тегом по кнопке #. Ато обижусь.

Последний раз редактировалось Stilet; 03.08.2009 в 12:11.
lg12 вне форума Ответить с цитированием
Старый 03.08.2009, 12:08   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
не выводит в мемо ничего
Если в файле есть хоть что-то то это и должно вывести.
А формирование массива записей наверное надо тоже в цикле делать, как раньше формирование массива строк.
Да и массив желательно создать.
puporev вне форума Ответить с цитированием
Старый 03.08.2009, 12:26   #8
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А формирование массива записей наверное надо тоже в цикле делать, как раньше формирование массива строк.
Да и массив желательно создать.
можешь дописать чего у меня нет или то что не правильно? Я с массивами ваще не очень( заранее спасибо
lg12 вне форума Ответить с цитированием
Старый 03.08.2009, 12:27   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Посмотрите во вложении пример чтения данных из текстового файла, создания массива записей, его сортировки.
Вложения
Тип файла: rar Массив записей.rar (168.7 Кб, 10 просмотров)
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с массивами lg12 Помощь студентам 7 11.07.2009 11:43
помогите с массивами!!! VILLIREX Помощь студентам 10 24.06.2009 17:54
помогите с массивами BiBu68 Общие вопросы C/C++ 6 20.12.2008 22:50
помогите с массивами Ibmsystem Помощь студентам 1 21.04.2008 08:10