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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2016, 11:29   #1
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию Чтение текстового файла с разделителями и занесение информации в переменные

Всем привет. Помогите реализовать на Паскале такую вщь: читаем файл - у него структура
текст1;текст2;текст3... текст7;
текст1;текст2;текст3... текст7;
текст1;текст2;текст3... текст7;
...
текст1;текст2;текст3... текст7;

Необходимо прочитать файл, занести в отдельные переменные значения например
a=текст1
b=текст2

Если в b присутствует строка "ул." - заменить на улица. Результат вывести в отдельный файл.

Код:
program Project1;
uses crt;
var Num_z, Num_d, data, Street : string;
    files_in, files_out : text;
    s:string;
    n : integer;
begin
  clrscr;
  assign(files_in,'c:\test.csv');
  reset(files_in);
  assign(files_out,'c:\test_test.csv');
  rewrite(files_out);
 
 while not eof(files_in) do
 begin
        readln(files_in,s);//читаем строку
        while pos(';',s)>0 do
        begin
             n:=n+1;
             Num_z:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             Num_d:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             data:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             Street:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
 
        end;
        writeln(files_out, Num_z, Num_d, data,Street);
 
 end;
 
 close(files_in);
 close(files_out);
 readln;
 
end.
Собственно пока только такое получилось, но не совсем работает (((
Максим_maks вне форума Ответить с цитированием
Старый 24.02.2016, 13:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, выложи архив с исходным CSV файликом (если он не для широких глаз, тогда сделай тестовый на три-четыре строки с примерно похожим содержимым, лучше всего возьми несколько отличающихся строк из исходного и измени персональные данные на абкадабрку)

во-вторых, что именно "не совсем работает" ? Ошибки выдаёт?
Или результат не то, что ожидается?

в-третьих, CSV - этот формат поддерживают всякие офисы (MS Excel, например).
Почему бы не воспользоваться этим инструментарием?

в-четвёртых, боюсь спрашивать - а какой у Вас компилятор Паскаля? уж не досовский Turbo Pascal?!!!
Если да, то зачем Вы труп тормошите?! Чем вызвана такая некрофилия?!!

Последний раз редактировалось Serge_Bliznykov; 24.02.2016 в 13:33.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.02.2016, 16:34   #3
CMY_3
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Максим_maks Посмотреть сообщение
Всем привет. Помогите реализовать на Паскале такую вщь: читаем файл - у него структура
текст1;текст2;текст3... текст7;
т.е. в исходном файле семь компонент с данными в строке а читаешь по 4 в цикле и записывать в файл надо раньше

это если количество считываемых компонент из строки исходного файла кратно 4
Код:
while pos(';',s)>0 do
        begin
             n:=n+1;
             Num_z:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             Num_d:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             data:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             Street:=copy(s,1,pos(';',s)-1);
             delete(s,1,pos(';',s));
             write(files_out, Num_z, Num_d, data,Street);
        end;
        writeln(files_out);

Последний раз редактировалось Serge_Bliznykov; 24.02.2016 в 16:58.
CMY_3 вне форума Ответить с цитированием
Старый 24.02.2016, 21:51   #4
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию

7 штю привел в качестве примера, к сожалению сейчас файла нет. Скину позже. На Паскале, т.к. вроде бы все должно быть просто, а оказывается не совсем.
Максим_maks вне форума Ответить с цитированием
Старый 24.02.2016, 22:48   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
На Паскале, т.к. вроде бы все должно быть просто
просто? на турбопаскакале?

зачем? какая цель у будущей программы?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из текстового файла soirkar Visual C++ 6 22.06.2011 16:58
чтение из текстового файла в структуру TRAIN и вывод информации по запросу (Паскаль) Arabic_Coffee Помощь студентам 0 14.05.2011 21:11
чтение текстового файла Аглан Microsoft Office Access 2 15.02.2011 22:14
Чтение текстового файла Kasper1 Общие вопросы по Java, Java SE, Kotlin 5 17.12.2010 15:57
Использование информации из текстового файла.. hen Общие вопросы Delphi 10 22.05.2010 13:10