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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2014, 12:35   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию Паскаль. Вставить в начало и середину файла элементы

обьясните выполенений программы пожалуйста. Задание стоит в следуйщем нужно без оператрора seek вставить элементы на начало файла и на середину. была мысль с помощью цыкла, да вот не онимаю как реализовать. прошу обьясните плиз
mishammm вне форума Ответить с цитированием
Старый 21.01.2014, 12:55   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Попробуйте использовать FileSize и SetFilePointer.
В помощь:
как переместить курсор в текстовом файле? / Delphi для начинающих
Streletz вне форума Ответить с цитированием
Старый 21.01.2014, 13:21   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

mishammm, если Вы продолжаете о своём наболевшем, тогда учтите, что seek для текстовых файлов не работает!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.01.2014, 18:40   #4
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
mishammm, если Вы продолжаете о своём наболевшем, тогда учтите, что seek для текстовых файлов не работает!
а кто сказал что я работаю с текст файлом?? я работаю с типизированным
mishammm вне форума Ответить с цитированием
Старый 21.01.2014, 22:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mishammm Посмотреть сообщение
а кто сказал что я работаю с текст файлом?? я работаю с типизированным
О!
Дык Вам поможет процедура seek();

Код:
var 
  f : file of <ВашТип>;
...
 Assign(f, DatFileName);
 Reset(f); {открытие файла}
..
 n := FileSize(f); {получить количество записей (элементов) в исходном файле} 
...
 Seek(f,0); {установить указатель на начало файла (на первый элемент)} 
....
 Seek(f,n-1); или seek(f, FileSize(f)-1);  {установить указатель на последний элемент в файле}

  Seek(f, FileSize(f));  {установить указатель за последним элементом! Читать из файла в этом случае уже нельзя, можно только писать в файл}

перечитал вопрос.
Цитата:
Задание стоит в следуйщем нужно без оператрора seek вставить элементы на начало файла и на середину.
вставить?!!!!! со сдвигом всех последущих? Или поверх них?! Да ещё без процедуры Seek!!
Если есть файл с числами (для простоты file of integer): 1 3 5 7 9 11 13
что Вы хотите получить в результате (после вставки)?

если задача позволяет, то можно прочитать содержимое файла в память, вставить что нужно и куда нужно и перезаписать файл, сбросив в него содержимое массива.


p.s. Вы опять хотите странного?!

Последний раз редактировалось Serge_Bliznykov; 21.01.2014 в 22:54.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.01.2014, 01:20   #6
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
p.s. Вы опять хотите странного?!
да не хочу я странного . смотрите вариант 2 задания 12.4 изивините за украинский
Изображения
Тип файла: jpg 90AQHY6Wbag.jpg (92.6 Кб, 156 просмотров)
mishammm вне форума Ответить с цитированием
Старый 22.01.2014, 08:49   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно с использованием дополнительного файла.
можно (если объём памяти позволяет и все элементы файла помещаются в ОП) прочитать файл в память, обработать и перезаписать файл целиком.
можно написать безумные циклы, которые передвигают элементы в файле на заданное число элементов дальше от начала файла.

Вам какой из этих вариантов закодировать?


p.s. Паскаль у Вас какой (TurboPascal/FreePascal/PascalABC/PascalABC.NET/Delphi )?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.01.2014, 10:54   #8
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

можно -3 вариант . мне сказали что см помошью read можно передвигать еще . Pascal ABC - у меня
mishammm вне форума Ответить с цитированием
Старый 22.01.2014, 10:58   #9
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

или говорят вот так можно


Код:
x:=pos('*',sss);
insert(stroka,sss,x+1);
mishammm вне форума Ответить с цитированием
Старый 22.01.2014, 11:02   #10
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
мне сказали что см помошью read можно передвигать еще
В типизированных файлах - нельзя.
Цитата:
Код:
x:=pos('*',sss);
insert(stroka,sss,x+1);
Так вы вставите строку (STRING), а не запись (record).
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каждом столбце матрицы D[n,m] нулевые элементы переставить в начало столбца pitak Помощь студентам 10 29.12.2013 11:27
Быстрое сохранение в середину файла Smogg Win Api 10 06.02.2013 10:05
Как в середину макроса вставить UserForm1 ? Snekich Microsoft Office Excel 4 09.12.2011 15:23
Повреждение данных при записи в середину бинарного файла Aerial Общие вопросы C/C++ 2 01.12.2011 19:32
Запись в середину файла newkobra Общие вопросы C/C++ 12 22.03.2010 22:35