Королевство Дельфи"Knowledge itself is power"
F.Bacon
 Лицей
  
Главная
О лицее

Список семинаров

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  03:15[Войти] | [Зарегистрироваться]

Обсуждение материала
Глава 2. Основы языка Delphi. Часть V.
Полный текст материала


Другие публикации автора: Кирилл Сурков

Цитата или краткий комментарий:

«... Записи; файлы; динамические массивы; указатели; ассемблер в Delphi. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.




Смотрите также материалы по темам:
[Записи, типизированные файлы ] [Указатели, работа с памятью] [Динамические массивы]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 11

03-07-2007 07:36
Алексею Позднякову:

А где, извините, в вашем коде инициализация первых десяти элементов mas? В FormCreate вы создаёте массив, а потом в цикле выводите значение счётчика цикла, а элементы массива так и остаютося неинициализированными.

И, кстати, циклы надо делать не до Length(mas), а до High(mas), потому что динамические массивы индексируются с нуля. Соответственно, чтобы проинициализировать добавленные в Button1Click элементы, цикл должен быть от 10 до High(mas), а не от 11 до Length(mas).


03-07-2007 06:33

SetLength(DynArray, 50);       // Выделить память для 50 элементов
Изменение размера динамического массива производится этой же процедурой:
SetLength(DynArray, 100);      // Теперь размер массива 100 элементов
При изменении размера массива значения всех его элементов сохраняются.

НАписал простенький тест:

procedure TForm1.FormCreate(Sender: TObject);
var
I:Smallint;
begin
SetLength(mas,10);
for I := 0 to Length(mas) do Memo1.Lines.Add(IntToStr(I));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
I:Smallint;
begin
SetLength(mas,15);
for I := 11 to Length(mas) do mas[I]:=I*2;
for I := 0 to Length(mas) do Memo2.Lines.Add(IntToStr(mas[I]));
end;


Сначала задаем массиву размер 10 и заполняем его. Потом по нажатию кнопки увеличиваем размер до 15 и заполняем оставшиеся 5 позиций. И вывожу это все в Мемо2.
Получаю 11 нулей и 5 запоненных значений.
Т.е. выходит, что утверждение "При изменении размера массива значения всех его элементов сохраняются" не верно?


30-11-2005 03:42
сообщение от автора материала
>>> Может быть в данном цикле статей как раз и нехватает разбора таких типичных задачек. Повторюсь-на форуме таких примеров масса.

Спасибо, обязательно это учтем, когда будем дорабатывать книгу.


29-11-2005 13:47
При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
Может все-таки не стоит давать начинающим такие тонкости, как Packed Record. Материал все-таки для начинающих, и как подсказывает мой личный опыт, для преподования самое главное "не вспугнуть" обучающегося. А тонкости им приходят с опытом. Столкнется вплотную начинающий программист со скоростью работы своего приложения - задумается и о скорости, и об экономии памяти. А вот типичные ошибки, причины их появления и т.п. - это очень важно. Как там говорится - "Умные учатся на ощибках других, а мудрые научились на своих". В подобных статьях очень важно понять логику начинающего и попытаться подать материал на его уровне. В математике огромное применение находят так называемые "решебники", в которых кроме теоретического материала приводятся решения задач, и разбор типичных ошибок. Эти книги очень популярны. Может быть в данном цикле статей как раз и нехватает разбора таких типичных задачек. Повторюсь-на форуме таких примеров масса.


29-11-2005 12:39
2 Johny B.>>> да, и что такое Packed Record ...

Да, это нужно объяснять подробно. Если в записи первое поле имеет тип данных Byte, а второе - Word, то поле с типом данных Word оказывается расположенным по нечетному адресу. Это отрицательно сказывается на производительности. Чтобы повысить производительность, поля выравниваются компилятором (2-байтовые - на 2-байтовой границе, 4-байтовые - на 4-байтовой, 8-байтовые - на 8-байтовой). Однако в таком случае увеличивается размер записи в памяти, размер которой превышает суммарный размер всех полей. Слово packed заставляет компилятор отказаться от выравнивания. И хотя такого же эффекта можно достичь благодаря изменению последовательности полей в записи, следует помнить, что это не одно и то же. Кроме того, на платформе .NET (если не указано слово packed) физическую последовательность полей в записи выбирает динамический компилятор (например, при загрузке программы в память).
Сообщение не подписано


29-11-2005 11:47
Рекомендую авторам просмотреть внимательно этот форум - найдете очень много вопросов по этой теме. Например, как включить в строку апостроф, особенности передачи параметров - динамических массивов в подпрограммы и т.д. Вообщем все то, на чем обжигаются все начинающие программисты. Цены не будет Вашим работам.


29-11-2005 09:38
нда, и что такое Packed Record ..


29-11-2005 09:37
Записи также бывают с многоуровневым вложением, при этом, поля записи должны определяться перед описанием Case:

TRecord = Record
  Field1: Integer;
  Field2: Integer;
  Case Field3: Integer of
    0: (
      Field4: Integer;
      Field5: Integer;

      Case Field8: Intger of
        0: (
          Field9: Integer;
          Field10: Integer;
        );

        1: (

        )
    );

    1: (
      Field6: Integer;
      Field7: Integer;
    );

end;


29-11-2005 05:40
сообщение от автора материала
Спасибо, хороший вопрос, постараемся включить его в книгу.


29-11-2005 05:09
to icWasya
.....


Rewrite(F, 1 );{Здесь 1 = размеру блока при вызове BlockRead, BlockWrite по умолчанию размер блока равен 128}

S:='Hello, World!';
BlockWrite(F,S,Length(S));

Сообщение не подписано


24-11-2005 02:49
Очень мало информации про бестиповые файлы.
И хорошо бы явно прописать ответ на часто встречающийся вопрос - Я пишу так

...
var
  S:String;
  F:File;
...

S:='Hello, World!';
BlockWrite(F,S,Length(S));



и что я делаю не правильно??


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Два кольца, два конца, посередине гвоздик.
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования