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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 22:42   #1
TesLa1992
Новичок
Джуниор
 
Регистрация: 19.07.2011
Сообщений: 2
По умолчанию Задача по длинным строкам

Требуется написать программу которая считывает из файла 10 строк(строка состоит из имени,фамилии,возраста, разделителем между словами является запятая) и записать имя, фамилию и возраст в отдельные подстроки Name,Surname и Age, которые входят в запись из 10 людей.

Т.к. с длинными строками никогда не работал, то возникли трудности...для обычного варианта всё понятно, а вот здесь не совсем.

Буду благодарен за любые советы или решения)
TesLa1992 вне форума Ответить с цитированием
Старый 19.07.2011, 23:01   #2
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию

10 строк не значит длинная.Если это паскаль,то длина строки ограничена 255 символов.На все параметры должно хватить.Вообще есть еще widestring(Unicode).Там вроде нет ограничений на длину.Считать из файла через readln,там уже работать.Пока только на таком абстрактном уровне.Насчет конкретной реализации надо думать.
Человек Панда вне форума Ответить с цитированием
Старый 19.07.2011, 23:25   #3
TesLa1992
Новичок
Джуниор
 
Регистрация: 19.07.2011
Сообщений: 2
По умолчанию

При чём здесь кол-во строк и длина? я имею ввиду работу со строками через
модуль Strings(подключаемый в программу), а не со стандартным типом string
http://pascal.kansoftware.ru/?id=gl11_7~1
TesLa1992 вне форума Ответить с цитированием
Старый 20.07.2011, 19:13   #4
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

Как-то так можно...
Код:
type
Info = record
    Name: PChar;
    Surname: PChar;
    Age: PChar;
end;

var
  str, tmp, p : PChar;  rec: Info;

begin
...
str:='Ivan;Petrov;18';
tmp:=StrAlloc(StrLen(str)+1);
rec.Name:=StrAlloc(StrLen(str)+1);
rec.Surname:=StrAlloc(StrLen(str)+1);
rec.Age:=StrAlloc(StrLen(str)+1);

p:=StrRScan(str,';');
if p <> nil then
begin
  StrCopy(rec.Age,p+1);
  StrLCopy(tmp, str, StrLen(str)-StrLen(p));
  p:=StrRScan(tmp,';');
  if p <> nil then
  begin
    StrCopy(rec.Surname,p+1);
    StrLCopy(rec.Name, tmp, StrLen(tmp)-StrLen(p));
  end;
end;
...
StrDispose(tmp);
StrDispose(rec.Name);
StrDispose(rec.Surname);
StrDispose(rec.Age);
...
end.
Здесь только фрагмент кода для разбиения одной строки.
Надеюсь остальное сам сможешь сделать.

И еще. Возможно этот код можно улучшить, написал первое, что пришло в голову, но зато работает.

UPDATE
Это решение только через строки PChar. Если что, то возможно преобразовать строку PChar в обычную паскалевскую String с помощью StrPas
Помог? Будь человеком - жми на весы слева!

Последний раз редактировалось Jaguar83; 20.07.2011 в 20:17.
Jaguar83 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по строкам hunter08923 Общие вопросы C/C++ 6 31.03.2011 22:29
задача по строкам hunter08923 Общие вопросы C/C++ 1 30.03.2011 08:31
Задача по строкам s.talke.r Паскаль, Turbo Pascal, PascalABC.NET 4 09.12.2010 20:46
Задача по строкам 2. seeton Помощь студентам 2 07.12.2009 19:29
задача по строкам D_K_ Помощь студентам 10 14.12.2008 16:21