169 похожих чатов

Case of в Lazarus умеет работать со строками, а в

Delphi нет? 🤪 Новость для меня. Ладно бы ещё наоборот было...

49 ответов

7 просмотров

Чего это ладно бы? У нас тоже должны быть плюшки

Чтооооооо. Вот это вообще странное упущение

Стикер

в Лазаре вообще немало фишек, чего в Делфе не было или появилось (иногда сильно) позже

да

Как же этого в делфи не хватало 👍

А Андрей
Как же этого в делфи не хватало 👍

просится, однозначно и давно

Handatros
в Лазаре вообще немало фишек, чего в Делфе не было...

как впрочем и наоборот. хотя уже почти всё утянули

А Андрей
Как же этого в делфи не хватало 👍

var Words := ['aaa', 'bbb', 'ccc', 'ddd']; var Word := 'aaa'; case IndexStr(Word, Words) of 0: ;//aaa 1: ;//bbb 2: ;//ccc 3: ;//ddd end;

покажи пример...

Евгений- Автор вопроса
Ed Doc
покажи пример...

case DM.qrySetting.FieldByName('titleAlignment').AsString of 'taCenter': grd.Columns[i].Title.Alignment := taCenter; 'taLeftJustify': grd.Columns[i].Title.Alignment := taLeftJustify; 'taRightJustify': grd.Columns[i].Title.Alignment := taRightJustify; end;

Евгений
case DM.qrySetting.FieldByName('titleAlignment').A...

надо же, не знал... а я все константные массивы использую :)

Евгений
case DM.qrySetting.FieldByName('titleAlignment').A...

Через RTTI присваивается без всяких case

Nik
Через RTTI присваивается без всяких case

там кода на порядок больше и сложнее

Ed Doc
там кода на порядок больше и сложнее

Ну, такой вот код - это тоже изврат

Евгений
case DM.qrySetting.FieldByName('titleAlignment').A...

Можно ж было просто сохранять Integer(TAlignment) и обратно присваивать

Евгений
case DM.qrySetting.FieldByName('titleAlignment').A...

храни лучше сразу все настройки колонок в сериализованном виде в JSON и сделай хелпер для колонки из/в JSON. grd.Columns[i].ApplySettingsJSON(DM.qrySetting.FieldByName('ColumnSettings').AsString) а еще лучше пусть все настройки сохраняет и восстанавливает сетка. Намного проще все будет

Ed Doc
там кода на порядок больше и сложнее

function IsEnum(const Name: string; TypeInfo: PTypeInfo; var n: integer): Boolean; begin n := GetEnumValue(TypeInfo, ReplaceStr(Name, '-', '')); Result := n > -1 end;

Евгений- Автор вопроса
Евгений
Я в ini сохранял.

Я в SQLite сделал, локально. CREATE TABLE grid ( formName TEXT NOT NULL, objectName TEXT NOT NULL, columnIndex INTEGER NOT NULL, alignment TEXT NOT NULL, fieldName TEXT NOT NULL, titleAlignment TEXT NOT NULL, titleCaption TEXT NOT NULL, visible INTEGER NOT NULL, width INTEGER NOT NULL ); CREATE TABLE form ( formName TEXT(255) NOT NULL, height INTEGER NOT NULL, width INTEGER NOT NULL ); CREATE TABLE "user" ( login TEXT(32) NOT NULL, pass TEXT(32) NOT NULL, save INTEGER NOT NULL ); CREATE TABLE dbconn ( fkey TEXT(50) NOT NULL, fvalue TEXT(255) NOT NULL );

Евгений- Автор вопроса
Евгений
Я в ini сохранял.

Ну и дальше ещё будет возможность настраивать пользовательский интерфейс, видимость меню и тд. Для этого будет ещё одна таблица. Пока не придумал, как и что.

Евгений
Ну и дальше ещё будет возможность настраивать поль...

Я так раньше делал, но при следующем переписывании отказался от такого.

Евгений- Автор вопроса
Евгений
Я так раньше делал, но при следующем переписывании...

А у меня наоборот история. Сначала было в ini, потом json. Теперь все в SQLite. Удобно, одна БД и все в ней.

Михаил Усков
храни лучше сразу все настройки колонок в сериализ...

Есть встроенная сериализация в DFM, бинарный или текстовый. Какая разница. JSON просто лишний.

Alexander Sv
function IsEnum(const Name: string; TypeInfo: PTyp...

Очень читабельно и информативно 😁

Евгений
Я в SQLite сделал, локально. CREATE TABLE grid (...

Имхо, велосипед изобретаешь. Сделай табличку-дерево, как в реестре винды, и храни любые атрибуты в любых сочетаниях

Евгений- Автор вопроса
Ed Doc
Имхо, велосипед изобретаешь. Сделай табличку-дерев...

То есть по принципу таблицы dbconn? Там у меня два поля. Ключ и значение. Но тогда еще одно нужно, где хранить имя формы. И имя объекта. А тут типа каждая таблица хранит свой тип данных. Или ты о другом? Есть пример может?

Alexey Gavrilov
Есть встроенная сериализация в DFM, бинарный или т...

А потом в очередной версии Дельфи поменяет формат dfm и все поломается... Особенно если бинарный формат

Евгений
То есть по принципу таблицы dbconn? Там у меня два...

В классическом дереве 3 поля: ID, ParentID и Value. Посмотри в интернете, примеров полно

Ed Doc
Очень читабельно и информативно 😁

это функция, а использовать так if IsEnum(Str, TypeInfo(TAlignment), n) then Align := TAlignment(n);

Alexey Gavrilov
Есть встроенная сериализация в DFM, бинарный или т...

В DFM идёт только tcomponent, причём при наличии tcomponent.name на русском языке - ждут забавные приключения при работе с данным из delphi 7- и Delphi 2006+ Так что лучше уже взять готовый сериализатор, их много есть

Alexander Sv
это функция, а использовать так if IsEnum(Str, T...

Ну хорошо-хорошо, пусть будет так 😊

Евгений- Автор вопроса
Ed Doc
В классическом дереве 3 поля: ID, ParentID и Value...

Хорошо, спасибо. Погуглю. А то пока нет понимания, как мне мои данные сложить. ID - это родитель, parentId это потомок и есть только одно поле для данных - value. А мне этого недостаточно. Или в таком случае ещё одну вложенность надо будет делать... В общем пока в голове не уложилось. Посмотрю примеры))

Alexey Gavrilov
TPersistent

Только внутри корневого компонента :)

Евгений
Хорошо, спасибо. Погуглю. А то пока нет понимания,...

Кстати, для хранения дерева в БД есть три структуры, в зависимости от того, что и как часто надо с данными делать. Ещё вложенные множества. А третий не помню уже

Евгений
Хорошо, спасибо. Погуглю. А то пока нет понимания,...

У твоего родителя может быть несколько потомков, каждый из которых может быть родителем для своих потомков и т.д. В ини/xml/json данные хранятся точно так же

Михаил Усков
.а implicitWidth и т.п.?

Так это новые свойства. И есть механизм работы с этим. Другое дело, что если это редактируется извне, то весь перечень свойств может быть не нужен. Раньше придумывали разные фокусы. Сейчас с помощью аттрибутов такое решается на раз. Просто для сохранения состояния и его восстановления, я бы сильно подумал, нафиг нужен ещё один велосипед. Может просто зудит как хочется с JSON именно поиграться.

Alexey Gavrilov
Так это новые свойства. И есть механизм работы с э...

я себе на базе sqlite сделал файл настроек )

Hemul GM
var Words := ['aaa', 'bbb', 'ccc', 'ddd']; var...

Эмм, а это штатное там чтоль появилось? А то лет 20 такой же подход применяем только у нас функция IndexOfString назвается 😂

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта