Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

Определение размера динамического массива   Найти похожие ветки 

 
Petrovich   (2007-11-27 21:50) [0]

Давно не писал на паскале, но вот снова его вспоминаю.
Использую Дельфи 6

Ниже - простенькая процедура. Очень прощшу объяснить в чем ошибка.

Требуется:
А) Узнать размер созданного динамического массива,
Б) а затем данные из этого массива записать в файл. Причем не используя поток (Stream)

SetLength(testarray,32768);

For actual:=0 to 32767 do testarray[actual]:=$E5;

actual:=SizeOf(testarray);

// var actual : integer.
// Но SizeOf возвращает размер указателя на массив, а не сам размер массива. В тоже время SizeOf(testarray^) выдает ошибку.

AssignFile(F,"test.dat");

// Var F : File;

Rewrite(F,1);
BlockWrite(F,testarray,(actual));
// BlockWrite Здесь не работает.  Почему? В чем ошибка?

CloseFile(F);


 
Юрий Зотов ©   (2007-11-27 22:02) [1]

> Petrovich   (27.11.07 21:50)

Ошибка в том, что переменная типа "динамический массив" - это неявный указатель. Его размер, естественно, 4.

> А) Узнать размер созданного динамического массива,

Length(testarray) - длина массива в его элементах;

Length(testarray) * SizeOf(тип_элементов) - длина массива в байтах (лучше объявить его с атрибутом packed).

> Б) данные из этого массива записать в файл. Причем не используя поток

@testarray[0] - адрес первого (т.е., нулевого) элемента массива.


 
Anatoly Podgoretsky ©   (2007-11-27 22:07) [2]

> Petrovich  (27.11.2007 21:50:00)  [0]

Не SizeOf, а Length
А запись testarray[0]



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.039 c
2-1196059598
nika
2007-11-26 09:46
2007.12.23
createprocess


9-1164018658
Ярослав Ерёменко
2006-11-20 13:30
2007.12.23
Алгоритм отрисовки тайлов методом альфа-блендинга


2-1195902105
ice321i
2007-11-24 14:01
2007.12.23
Аудит в InterBase 6.5


2-1195993145
m-kirill-2003
2007-11-25 15:19
2007.12.23
двоичная, шестнадцатиричная с/с


15-1195463121
infom
2007-11-19 12:05
2007.12.23
Отключение DataSource у всех компонентов на форме. Глюк ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский