Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание с файла, не text, вывести на экран содержимое файла 
:(
    Опции темы
Luser
Дата 7.2.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Ув. программенры, подскажите мне код на Pascal'е  для того, чтобы считать с файла (в моем случаи shp.) данные- последовотельность байт,
и сделать вывод на экран. за ранее Большое  спасибо 


 smile  smile  smile 

P.S. мне нужно буквально самое начало, суть, а дальше я сам, просто в нете искал как считывать, и ниче не нашел, (последовательный код..)
PM MAIL   Вверх
Zero
Дата 7.2.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Luser @  7.2.2007,  14:15 Найти цитируемый пост)
считать с файла (в моем случаи shp.) данные- последовотельность байт

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

var
  f:file;
  buf:integer;
Begin
  assign(f,'file.shp');
  reset(f,1);  {открыть файл для побайтного считывания}
  while not eof(f) do
    begin
      blockread(f,buf,1); {считать один байт в буфер buf с текущего места маркера и переместить маркер на один байт}
      write(buf,' ');
    end;
End.

PM MAIL ICQ   Вверх
Luser
Дата 8.2.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Большое спасибо,    smile    я сча буду пробовать, если что еще спрошу чего-нибудь  smile

Добавлено @ 14:01 
а можешь еще подсказать пож, чтобы считывала просто данные, а не последовательность бит (так сказать внутренность)
PM MAIL   Вверх
Zero
Дата 8.2.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Luser @  8.2.2007,  13:57 Найти цитируемый пост)
чтобы считывала просто данные, а не последовательность бит
 Дак эта так сказать внутренность имеет определённую структуру, и у каждого файла она разная. Если у тебя какой-то отдельный типизированый со спец структурой и при этом не текстовый, то стандартным способом считать не получиться.
Текстовый это необязательно с расширением *.txt, если ты его с помощью стандартного блокнота открыть сможешь, то способ есть.
PM MAIL ICQ   Вверх
Luser
Дата 8.2.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



нее, если блакнотом, то караказябру выдает =(
может еще чего-нибудь посоветуешь? заранее большое пасибки
PM MAIL   Вверх
volvo877
Дата 8.2.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Luser @  8.2.2007,  12:57 Найти цитируемый пост)
а можешь еще подсказать пож, чтобы считывала просто данные, а не последовательность бит

Чтобы считывать данные - надо как минимум знать их структуру. Если ты опишешь, что именно у тебя хранится в файле, может что-нибудь и получится...

PM MAIL   Вверх
Luser
Дата 9.2.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



у меня дан файл shp это делфи, меня попросили считать его, у меня получиться массив, прои считывании, и далее пощитать площадь и периметр...
вот такое задание.... Может у вас какието мнения, советы есть?
PM MAIL   Вверх
Zero
Дата 9.2.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Luser, ты его стандартным способом как-нибудь можешь просмотреть??? Если да, то как и выложи сам файл...

Добавлено @ 12:38 
Цитата(Luser @  9.2.2007,  12:22 Найти цитируемый пост)
у меня дан файл shp это делфи

Это не делфи, а может быть сделан на нём... smile 
Но на чём сделано - это неважно.
PM MAIL ICQ   Вверх
Luser
Дата 9.2.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



CONST
f='c:\myfile.shp'
var
  f:file;
  buf:integer;
Begin
  assign(f,'file.shp');
  reset(f,1);  {открыть файл для побайтного считывания}
  while not eof(f) do
    begin
      blockread(f,buf,1); {считать один байт в буфер buf с текущего места маркера и переместить маркер на один байт}
      write(buf,' ');
    end;
End.

подскажите пож, а как мне мне сделать чтоб читал с диска, с любого др места.. я знаю что вроде так объявляют пути... но пишет ошибку....
PM MAIL   Вверх
Zero
Дата 9.2.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Luser @  9.2.2007,  12:54 Найти цитируемый пост)
подскажите пож, а как мне мне сделать чтоб читал с диска, с любого др места.. я знаю что вроде так объявляют пути... но пишет ошибку....

Ты имеешь ввиду с указанного места??? Тогде правильнее оформить прогу так:
Код

CONST
path='c:\myfile.shp'
var
  f:file;
  buf:integer;
Begin
  assign(f,path);  {эта команда связывает файл находящийся на диске, с переменно f, т.е. чтобы к нему можно было обращаться, какбудто он находиться в ОП}
  reset(f,1);  {открыть файл для побайтного считывания}
  while not eof(f) do
    begin
      blockread(f,buf,1); {считать один байт в буфер buf с текущего места маркера и переместить маркер на один байт}
      write(buf,' ');
    end;
End.

PM MAIL ICQ   Вверх
Luser
Дата 9.2.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Спасибки огромное... буду дальше делать....  smile 
PM MAIL   Вверх
remax
Дата 9.2.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



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

Код

CONST
path='c:\myfile.shp'
var
  f:file of byte;
  buf:byte;
Begin
  assign(f,path);  {эта команда связывает файл находящийся на диске, с переменно f, т.е. чтобы к нему можно было обращаться, какбудто он находиться в ОП}
  reset(f);  {открыть файл для побайтного считывания}
  while not eof(f) do
    begin
      read(f,buf); {считать один байт в буфер buf с текущего места маркера и переместить маркер на один байт}
      write(buf,' ');
    end;
End.




--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
Zero
Дата 9.2.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(remax @  9.2.2007,  19:47 Найти цитируемый пост)
для побайтного считывания использовать нетипизированные файлы - что стрелять из пушки по воробьям.

Blockread работает быстрее чем read, кроме того однобайтовый способ я привёл в качестве примера, а можно и по сколько угодно байт считывать, а для типизированого нет.
PM MAIL ICQ   Вверх
remax
Дата 10.2.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



BlockRead требует буфер и при его частичном заполнении усложняет алгоритм чтения доп. проверками. Разницу в скорости работы между типизированными и нетипизированными файлами я ощущал в последний раз на Intel286 - 16Мгц. Сейчас, при современных скоростях работы процессоров и устройств ввода/вывода это просто смешно. Кроме того, так называемый, "прямой доступ к файлам" актуален только  на "чистом DOS"!! А Ваши программы на Pascal, скорее всего, запускаются в DOS-сессии из под Windows.  И ни о каком прямом доступе речи не идет... smile 

Нет необходимости применять более сложные (пусть даже в чем-то потенциально более мощные) средства, если задача этого не требует, а программа существенно усложнится! Тем более, что речь идет об учебных программах, когда необходимо продемонстрировать понимание сути задачи и умение выбрать оптимальный способ решения! smile  smile 


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
Zero
Дата 11.2.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(remax @  10.2.2007,  11:52 Найти цитируемый пост)
А Ваши программы на Pascal, скорее всего, запускаются в DOS-сессии из под Windows.  И ни о каком прямом доступе речи не идет...
 Паскаль это язык для написания DOS прогамм, и у нас в универе раньше когда я учился бы лабы такого рода сдавали, запуская паскаль в досе... В качестве оболочки была Нортон.
Цитата(remax @  10.2.2007,  11:52 Найти цитируемый пост)
Нет необходимости применять более сложные (пусть даже в чем-то потенциально более мощные) средства, если задача этого не требует, а программа существенно усложнится!
 То что мы с тобой привели, нельзя назвать что одна сложнее другой. А вот с точки зрения универсальности, всёже первый способ больше подходить. А приучаться нужно делать, всё универсальными способами, с возможностью лёгкой коррекции... Особенно в тех языках где стоит интерпиртатор, например 1С. smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.