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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами в Delphi!!! Обращение к файлу со сложной начинкой! 
V
    Опции темы
Snowy
Дата 28.4.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Просто ты забыл установить размер массива.
А также забыл указать, что за ошибку выдает компилятор.
Но это и так уже ясно. 
PM MAIL   Вверх
DimassS
Дата 28.4.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



А если размерность массива неизвестна, возможно ли сделать это в процессе чтения файла, например сначала прочитать файл и определить размерность, поставить размерность переменной, поставить позицию чтения с начала и потом уже заполнять???

Помнится в Basic это возможно с помощью оператора ReDim, а как-нибудь в Delphi это сделать можно? 
PM MAIL ICQ   Вверх
Snowy
Дата 28.4.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Лучше в начало файла запиши кол-во элементов.
А потом, при чтении прочитай и сделай SetLength. 
PM MAIL   Вверх
DimassS
Дата 28.4.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



Цитата(Snowy @ 28.4.2006,  22:11)
А потом, при чтении прочитай и сделай SetLength.

Set Length - это определение размера массива?
Если да, то не подскажешь как ей пользоваться...
Если нет, то для чего она нужна? 
PM MAIL ICQ   Вверх
Rennigth
Дата 28.4.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



DynArray = array of Variant;
...
SetLength(DynArray, 10);

Добавлено @ 22:30 
Цитата

Set Length - это определение размера массива?

нет, не определение. Она задает рамер динамического массива.  

Это сообщение отредактировал(а) Rennigth - 28.4.2006, 22:32


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Snowy
Дата 28.4.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Справка тебе в помощь... 
PM MAIL   Вверх
DimassS
Дата 29.4.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



Вот опять тормознулся... Проблема в следующем:

Код

Var
l:integer
re:real;
s8:String[8];
//прописываю переменные
..................................

сдесь определяю массив типов и т.п.

......................................
//открываю файл для чтения

j:=-1;
     While Not EOF(FF) do
     Begin
     j:=j+1;
         case MyVal[j] of
            dInteger:
            begin
            BlockRead(FF,l,SizeOf(l),j);
            ? showmessage(inttostr(l));?
             ?//edit1.Text:=inttostr(l)?
             ?//Excel.cells[i,j].Value:=l;?
            end;
            dFloat:
            begin
           ? BlockRead(FF,re,SizeOf(re),j);
           ? showmessage(floattostr(re));
            ?//edit1.Text:=floattostr(re)
            //Excel.cells[i,j]:=re;
            end;
            dString:
            begin
            BlockRead(FF,s8,SizeOf(s8),j);
            ?showmessage(s8);
            ?//edit1.Text:=s8
            ?//Excel.cells[i,j]:=s8;
            end;
          end;
       end;


Не работает там где стоят вопросы. Я сначала думал что это связано с Excel, попробовал отобразить в Edit-е и с помощью ShowMessage не получается всё время выкидывает одну и ту же ошибку:
"Access violation at addres 0040468E in module 'Project1.exe'.   Read of address 2dbd8e82" Вот такие вот дела, может он читает всю строку а мне нужно чтобы он читал только определённое количество байт...   

Это сообщение отредактировал(а) Girder - 2.5.2006, 12:38
PM MAIL ICQ   Вверх
DimassS
Дата 2.5.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



Посмотрите пожалуйста файл , я его вроде к письму прикрепил, посмотреть можно через Far, может ошибки из-за того, что он в одну строку написан, спрашивал сегодня у программистов на практике сказали сам разбирайся... Файл содержит двенадцать столбцов, первый - String, второй - Integer, остальные - Float. 
 

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  NODE.DAT 0,23 Kb
PM MAIL ICQ   Вверх
DimassS
Дата 7.5.2006, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



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

Всем большое прибольшое спасибо, репутацию я повысить не могу!!! Snowy - 5 баллов!!! 
PM MAIL ICQ   Вверх
Poseidon
Дата 7.5.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(DimassS @  7.5.2006,  19:27 Найти цитируемый пост)
Всем большое прибольшое спасибо, репутацию я повысить не могу!!! Snowy - 5 баллов!!! 
 Я могу  smile 
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
DimassS
Дата 8.5.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

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



Тогда пожалуйста поблагодари от меня Snowy, я бы без него ничего не сделал!!!  
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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