Главная страница
    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.043 c
2-1196148033
IntruderLab
2007-11-27 10:20
2007.12.23
TMemo перейти к последней записи


15-1195992791
nstur
2007-11-25 15:13
2007.12.23
Zip


15-1195137434
alikon1
2007-11-15 17:37
2007.12.23
Не могу уследить логику работы калькулятора Windows


15-1195670824
sdaf
2007-11-21 21:47
2007.12.23
библиотека rxlib


1-1190371668
REA
2007-09-21 14:47
2007.12.23
Фрейм мелькает





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский