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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 01:55   #1
stck
Пользователь
 
Аватар для stck
 
Регистрация: 14.06.2010
Сообщений: 84
По умолчанию Проблема при работе с файлами

Доброго вечера всем. Задали учебное задание - распарсить 2 файла и вывести по каждому столбиковую диаграмму. Программу написал, но второй парсинг проходит некорректно. Почему - не знаю. Соответственно и со второй диаграммой проблемы. Сидел, сидел но так и не понял. Прошу Вашей промощи.
Вот код: линк
Вот содержимое файлов:
1ый-
Цитата:
Selling_Volume(mlns cps)
Companies
Compaq=140
IBM=150
PB=110
NEC=240
Apple=190
HPs=120
MSS=180
Other=90
2-й-

Цитата:
Percentage of world man(%)
Companies
Compaq=10
IBM=30
PB2=5
NEC=5
Apple=20
HPs=10
MSS=10
Other=10
Да, кстати, там есть такая вещь как приближения. Может я некорректно сформулировал - это приведение разных диапозонов данных к 1ому, для построения.
stck вне форума Ответить с цитированием
Старый 21.12.2011, 11:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нормальная такая программка. но в процедуре парсинга есть пара неточностей, которые и портили Вам всю картину маслом..

попробуйте заменить процедуру parseFile на такую:
Код:
{Ввод значений из файла}

procedure parseFile(fileName: string);
var s, tmp1 : string;
  i, j, tmpi, ErrCode : integer;
begin
  assign(fileForParse, fileName);
  reset(fileForParse);
  if IOResult <> 0 then begin
    writeln('File cannot be opened\found '); exit end;
  j := 1;
  i := 0;

  while not eof(fileForParse) do begin
    readln(fileForParse, s);
    inc(i);
    case i of
      1: xAxisTitle := s; {Заголовок по X}
      2: yAxisTitle := s; {Заголовок по Y}
      3..Max + 2:
        begin
          tmp1 := copy(s, 1, pos('=', s) - 1);
          names[j] := tmp1;
          tmp1 := copy(s, pos('=', s) + 1, length(s) - 1);
          while pos(' ',tmp1)>0 do Delete(Tmp1, pos(' ',tmp1), 1);
          val(tmp1, tmpi, ErrCode);
          currencies[j] := tmpi;
          inc(j);
        end;
    else break;
    end;
  end;
  close(fileForParse);
end;
{/Ввод значений из файла}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог seek() для при работе с текстовыми файлами NiXo_RV Паскаль, Turbo Pascal, PascalABC.NET 3 08.11.2010 14:38
проблема при работе с несколькими исходными файлами Grind Помощь студентам 2 19.02.2008 19:37
ошибка 105 (при работе с типизированными файлами) sdp Общие вопросы Delphi 8 11.07.2007 11:12
как сделать не восприимчивость к регистру при работе с файлами? LeoN Общие вопросы Delphi 7 31.03.2007 15:41