{$H+}
тип string
является алиасом на тип ShortString
, который хранит длину строки в символе с индексом ноль. Максимальная длина для ShortString
равна 255.Length
правильно работала для ShortString
, длину строки нужно задавать функцией SetLength
- в самом начале процедуры добавьте вызов setlength(template, 255);
n-1
- можно использовать это значение;{H+}
или объявить строку как AnsiString
и увеличивать длину строки динамически. Перед записью в строку на каждой итерации дабавьте: setlength(template, length(template) + 1);
- тогда вызов length(template)
вернёт нужное значение.в соответствии с правилами массивов в паскале: индексация с единицы
for n := Low(source) to High(source) do
writeln(source[n]);
LDocument.XML.Text := XmlDoc.FormatXMLData(LDocument.XML.Text);
LDocument.Active := True;
LDocument.SaveToFile(...);
for i := 0 to TfMain.PopupMenu.Items.Count - 1 do begin
ini.WriteString('Настройки', 'Пункт_' + IntToStr(i) + '_Caption', TfMain.PopupMenu.Items[i].Caption);
... // и так далее, для всех остальных параметров, которые надо сохранить
end;
Lua предоставляет реестр, предопределенную таблицу, которая доступна C коду для хранения любых Lua значений. Таблица рееста всегда расположена по псевдоидексу LUA_REGISTRYINDEX. Любая C библиотека может хранить данные в этой таблице, но она должна заботиться о выборе уникальных ключей, чтобы избежать коллизий с другими библиотеками. Обычно, вы должны использовать в качестве ключа строку содержащую имя библиотеки, или легкие пользовательские данные (light userdata) с адресом C объекта в вашем коде, или любой Lua объект созданный вашим кодом. Как и имена переменных, ключи, начинающиеся с подчеркивания со следующими за ним прописными буквами, зарезервированы для Lua.
Целочисленные ключи в реестре используются механизмом ссылок (см. luaL_ref) и некоторыми предопределенными значениями. Следовательно, целочисленные ключи не должны использоваться для других целей.
Когда вы создаете новый Lua контекст, его реестр содержит некоторые предопределенные значения. Эти предопределенные значения индексируются целочисленными ключами, определенными как константы в lua.h. Определены следующие константы:
- LUA_RIDX_MAINTHREAD: По этому индексу в реестре расположен главный поток контекста. (Главный поток создается при создании контекста.)
- LUA_RIDX_GLOBALS: По этому индексу в реестре расположено глобальное окружение.
procedure THelloWorldPlugin.FuncHelloWorld;
var
s: string;
begin
s := 'Hello World';
SendMessage(self.NppData.ScintillaMainHandle, SCI_REPLACESEL, 0, LPARAM(PChar(s)));
end;