IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Заполнение полей записи из файла
-Anna-
сообщение 23.02.2006 23:38
Сообщение #1


Гость






Есть файл Test.txt состоящий из 10 строк, каждая строка такого содержания:
фамилия:имя:год рождения:улица:дом:квартира:телефон
: - это разделитель.
И есть запись и массив на эту запись
Код

Type TBase = Record
     Family:string;
     Name:string;
     Year:integer;
     Street:string;
     Dom:integer;
     kvar:integer;
     Tel:integer;
     End;

var Spisok: Array[1..10] of TBase;

Подскажите пожалуйста, как заполнить поля записи из этого файла. Т.е. меня интересует, как
выделить из строки например фамилию и записать ее в поле family, имя в name и т.д..
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
мисс_граффити
сообщение 23.02.2006 23:44
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


http://forum.pascalnet.ru/index.php?showtopic=6972 - разбиение на слова. все способы.
не помогло?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.02.2006 0:39
Сообщение #3


Гость






мисс_граффити, можно и так, но как бы не получилось "из пушки по воробьям"... Если разделитель только один, я бы сделал вот так, наверное:
Type TBase = Record
  Family:string;
  Name:string;
  Year:integer;
  Street:string;
  Dom:integer;
  kvar:integer;
  Tel:integer;
End;

function strInt(s: string): integer;
var X, err: integer;
begin
  val(s, X, err);
  strInt := X;
end;
function get_str(s: string; n: integer): string;
var
  i, start, finish: integer;

  function next: integer;
  begin
    next := start + pos(':', copy(s, start, 255))
  end;

begin
  start := 1;
  for i := 1 to pred(n) do start := next;
  finish := next;

  if finish = start then
    finish := length(s) + 2;

  get_str := copy(s, start, pred(finish - start));
end;

var
  Spisok: Array[1..10] of TBase;
  i: integer;
  s: string;

begin
  s := 'Family:Name:1990:Street:10:12:12345';
  with spisok[1] do begin
    family := get_str(s, 1);
    name   := get_str(s, 2);
    year   := strInt(get_str(s, 3));
    street := get_str(s, 4);
    dom    := strInt(get_str(s, 5));
    kvar   := strInt(get_str(s, 6));
    tel    := strInt(get_str(s, 7));
  end;
  writeln;
end.

Здесь заполнение одной записи... Идея понятна?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 23.07.2025 1:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"