Вам нужно использовать два [[
, чтобы получить содержимое столбца:
df <- datasets::mtcars
for (i in 1:2) df[[i]]
Это также будет работать для имен столбцов
for (i in names(df)) df[[i]]
Не уверен, что вы пытаетесь чтобы достичь хотя. Вы также можете просто сделать:
lapply(df[1:2], table)
Поместите любые изображения, которые программа использует несколько раз в списки изображений или компоненты TGraphic, и поместила тех, которые в модуль данных. Свяжите все свои компоненты с помощью этих глифов для списков изображений. При использовании Инспектора объектов для добавления того же глифа к нескольким компонентам, Вы закончите с несколькими копиями его, увеличиваясь и Ваше время загрузки и Ваш размер исполняемого и рабочего набора.
Хороший прием для сокращения исполняемого размера (на самом деле, размер изображения PE, поскольку это относится к DLL также), когда перемещение не является проблемой:
Пропустите информацию перемещения!
В Delphi Вы могли сделать это как это:
// Remove relocation table (generates smaller executables) :
// (See http://hallvards.blogspot.com/2006/09/hack12-create-smaller-exe-files.html)
{$SetPEFlags 1} // 1 = Windows.IMAGE_FILE_RELOCS_STRIPPED
Удачи!
Что относительно того, чтобы выключить отладочную информацию в опциях проекта:
Но информация об отладке может быть главным уничтожителем.
Я не потратил бы комментариев удаления времени, компилятор разделяет их так или иначе
Вы могли сослаться на свои изображения от внешнего сервиса (например, Amazon S3)
Отбросьте VCL и используйте KOL и MCK: http://kolmck.net/
Это - радикальное и очень большое изменение, но снизит exe размер.
Не создавайте все формы автоматически, даже при том, что Delphi дает Вам опцию теперь и сделал это безусловно для новых форм в более ранних версиях. Только создайте основную форму и используйте следующий (псевдо) код для показа модальных диалоговых окон:
procedure TMainForm.OptionDialog(Sender: TObject);
var
Dlg: TOptionDialog;
begin
Dlg := TOptionDialog.Create(nil);
try
// prepare dialog
if Dlg.ShowModal = mrOK then begin
// apply changed settings
end;
finally
Dlg.Free;
end;
end;
Это сократит время загрузки приложения и уменьшит Ваше полное использование ресурсов, специально для сложных диалоговых окон со многими средствами управления.
Имейте размеры сначала, ЗАТЕМ оптимизируйте. Насколько большой Ваше приложение, и как большой хотели бы Вы это быть?
Вы обеспокоены...
Размер приложения.EXE файл на диске? Затем...
Оперативная память используется приложением? Затем...
Размер установщика приложения? Затем...
Размер приложения ПЛЮС PACKAGES/DLLS после установки? Затем...
Project -> Options -> Compiler:
===============================
Optimization ON
Debug Information OFF
Local Symbols OFF
Reference Info OFF
Use debug DCUs OFF
Project -> Options -> Packages:
===============================
Build with runtime packages ON (but you will have to distribute your BPLs!)
Note to non-delphi folks:
a BPL is just a DLL, but with magic Delphi dust to make it easier to use.
Это действительно стоит всей этой проблемы? Мы не живем во времена памяти на 640 КБ больше.
Если Вы хотите Вас, EXE, чтобы быть меньшим, затем используют динамическое подключение пакетов и библиотек. Это дает большую часть повышения. Также поместите все свои ресурсы (изображения, звуки) в отдельный DLL. Вы ничего не сохраните путем удаления комментариев и написания всего кода в одной длинной линии.
Обычно говорящий, если Вы хотите меньший размер EXE затем, идут с более ранней версией Delphi.
Используйте профилировщика памяти как тот от Красного Логического элемента для получения оперативного представления в использование памяти во время выполнения.
Я всегда использую UPX для сжатия EXE-файлов. Это работает отлично, часто приводя к фактору 2 сжатия. И, конечно, отключите всю информацию об отладке, поможет уменьшить размер файла.