| Библиотека программирование, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
WH_CBT Распахнуть окно, только как? Показать все форматы данных сразу Как создать отдельный Application, для второго (т.с.) окна ? ShellListView Интеграция Delphi и Fortran Имя изменённого файла., Всё про изменение файловой системы. Работа с Indy, Не могу соединиться с сервером Модальные и не модальные окна Прослема с BlockRead Как бороться с Paradox?, Ошибка: "Lock file has grown too large" Проблемы с интерфейсом dll выравнивание Label, по правому углу Размер Bitmapa, Как его определить? Помогите угробить ОЗУ, ОЗУ Блокировка, Прога для блокировки запуска Падает Midas сервер, ... при солидном запросе Создание программного объекта "сетевая Грабилка", делов то... :) Работа с TADOQuery, Ускорить подключение? передача сложной структуры через сокеты Как Вы относитесь к курящим девушкам? Как перехватить звук Windows Как програмно нажать кнопку?, Пример кода Как узнать IP-адрес, удаленного компьютера Extended -> TColor Tree с check box'om, Где взять? проблемы с TQRCompositeReport Как покрасить меню....., :) Динамический массив Не знаю, как это назвать ..... ModelMaker Code Explorer, Альтернатива Как программно прочитать и изменить вот это файл!, Kbdur.kbd TStream, передать и integer и bmp........ Решение системы линейных уравнений Папки..., сравнение копирования файлов!, Есть исходник! GetScreenWindow Как зделать? Чтоб форма всегда была позоди всех, Остальных окон? Как в свою программу вставить gif Изображения??, gif Изображения?? Как менять запись в реестре?, Как менять запись в реестре? Объект владелец, Как получить на него ссылку? Свойства объектов...., Не знаю как это умно назвать... Мой огромный проек стал глючить, У большой программы большой глюк :) Excel в БД, Как засуснуть Документ Excel в базу дан WebBrowser Tray, для любого окна Icons, Разноформатные иконки - как? DLL и pogressbar input type=file Фигуры с случаянными границми и одинаковой площадю, ну не знаю как еще назвать тему) компонент StringGrid Dll, и Tbitmap, Как достать bmp из функции в dll Current Layout Как программно изменить масштаб excel ? Запись в текстовый докумень!, Запись в текстовый докумень! FindFirstChangeNotification ..., Результат выполнения обмен инфой, между приложениями индексация лог.полей Проверка на наличие эл-та в массиве Standby, Winodws - Monitor - Please Свернуть все окна, неактивные. Как в памяте прокрутить большой процес?, Как в памяте прокрутить большой процес? Меню в XP, Что-то странно оно изображается Активное окно WinInet.dll, какая-то дикость.... Настройка прокси., Как их выудить. Как Вы относитесь к курящим девушкам? Предложение на создание сайта Программный docking, Как сделать? |
Платные хостинги Раскрутка сайта Книги по программированию Динамический массив
- Умельцы!!! Объясните что такое динамический массив и как с ним работать (например, записать данные - скажем packed record) . Заранее благодарен ! - Динамический массив- это массив с переменной длинной. Его лучше по возможности не использовать, но если надо то вот:Код TRec = Record f1: String; f2: Integer; f3: Int64;end;var arr: array of Trec;highlightSyntax('delphilkNjUw','delphi'); для изменения длинны массива:SetLength(arr, size);и соответственно:Код var rec: TRec;begin SetLength(arr, 10); // = arr: array[0..9] of TRec; arr[10] = ... // Вызовет access voilation т.к. arr[10] не существует. rec.f1:= 'asdasdad';// rec.f2:= 10; // Присваивание эл-ту arr[2] значения rec; rec.f3:= 1555646; // arr[2]:= rec; //end;highlightSyntax('delphiYWNjNDV','delphi'); Вот по такому принципу работается с дин. массивами.Но помни, если обратишься к не существующему эл-ту, то получишь access voilation! Самые популярные грабли - >Его лучше по возможности не использоватьА почему? - И это в действительности так и есть(эту ошибку очень сложно отловить). Я всё же думаю, что лучше использовать листы (TListб TinterfaceList, TClassList), но его опять же надо использовать умо, а не так как некоторые.Многие пишут так:TList.Add(Pointer(10))А правильно было бы так:TInteger = class Value: Integer;end;TInteger.Value:= 10;TList.Add(TInteger);Конструкторы как бы подразумиваются... - >если обратишься к не существующему эл-ту, то получишь access voilation!Ясно. Просто нужна аккуратность. Но, в общем-то, как и везде. У меня проблем с динамическими массивами не было, хотя использую их достаточно часто - очень уж удобно. - dm9, а чем не удобны листы? Да и из дин. массива не вырежешь эл № 5. - нет не вырежешь: можно только создать 2 массив на основе первого, но только без эл-та № 5. Разве это можно назвать вырезанием, а скорость? - Согласен, но я использую динамические массивы, в основном, когда надо сделать какую-то двухмерную таблицу, из которой вырезать ничего не приходится. - dm9, я не противник массивов как таковых, просто моё мнение - если есть возможность их не использовать - то надо их не использовать. - А можно первый подредактировать - тоже вырезать получится =) - Ну это уже будет садизм - Не больший садизм, чем заново создавать новый массив.Удаляем 5 элемент:for x:=4 to length(my_array)-2 do my_array[x]:=my_array[x+1];setlength(my_array,length(my_array)-1);По-моему даже просто :-) - Ну это разве не садизм по сравнению с .Remove(id|element)? - Еще проще:Код type IntArr=array of integer;procedure ArrRemove(var a:IntArr; index:integer);begin if (index<0) or (index>length(a)) then raise Exception.Create('Out of bound'); Move(a[index+1],a[index],(length(a)-index-1)*sizeof(integer)); SetLength(a,length(a)-1);end;highlightSyntax('delphiN2I4Y2','delphi'); И будет не извращенее чем .Remove(id|element). Только я тоже предпочитаю TList, ибо инкапсуляция. Хотя надоедает писать все время TList.Create, Free. Преобразование типов тоже надоедает, поэтому я обычно пишу наследника от TList с перекрытым Items, который возвращает нужный тип. Но это тоже добивает.QUOTE TInteger = classValue: Integer;end;TInteger.Value:= 10;TList.Add(TInteger);Ну уж большего садизма я не видел. Всегда писал list.Add(Pointer(int_Value)). Не подразумеваю, что моя программа будет работать на платформе, где размер указателя отличается от размера Integer. |