Дельфистам.

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

Ответить
Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Дельфистам.

Сообщение karagy » 06 янв 2018, 16:52

Увидел статью от 2016 года Faster FileStream with TBufferedFileStream.
Немедленно нашел System.Classes.pas из 10.1 Berlin, и выдрал TBufferedFileStream себе в отдельный модуль.
Опробовал в XE7 для Win32 приложений.
Работает и быстро.
Может кому пригодится:
BufferedFileStream.pas.7z
(1.68 КБ) 24 скачивания

Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Re: Дельфистам.

Сообщение karagy » 26 фев 2018, 13:26

Немогу не поделиться AnyiQuack
Опробовал в XE7, в восторге. То что надо для всяких интерфейсов героя в рогалике. Управление цветом, подергивания и прочее.
Вы можете превратить панель в свистоперделку динамичное произведение искусства добавив всего две строчки кода.

В догонку к кваку - шпаргалка по функциям плавности

Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Re: Дельфистам.

Сообщение karagy » 05 мар 2018, 20:45

Мелочи по хозяйству можно взять у https://github.com/malcolmgroves/
FluentQuery, StateMachine, Tuples.

Таплы - иногда бывают удобны.

Так-же в сниппетах на гитхабе давно уже ходит Enum.Wrapper.pas, например тут https://gist.github.com/ortuagustin/f7f ... 0c6508646d, неизвестно чей и без ярких примеров, демонстрирующих его полезность.
Вспомнил я о нём глядя на код disciplesrl от Apromix, а именно на

Код: Выделить всё

type
  TCreatureEnum = (crNone, crGoblin, crWolf, crOrc);

...

  P := TypeInfo(TCreatureEnum);
  with ACreature do
  begin
    Active := True;
    Enum := ACreatureEnum;
    Name := StringReplace(GetEnumName(P, Ord(Enum)), 'cr', '', [rfReplaceAll]);

Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Re: Дельфистам.

Сообщение karagy » 16 авг 2018, 19:41

Как использовать EnumHelper.
Взять можно в гит-сниппетах, например тут https://codegists.com/user/ortuagustin

Пример использования:
Скрытый текст: ПОКАЗАТЬ
Программа:

Код: Выделить всё

{$APPTYPE CONSOLE}

uses
  System.Classes, System.SysUtils,
  EnumHelper;

type
  TWeekdays = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

procedure Test;
var
  day: TWeekdays;
begin
  for day := Low(TWeekdays) to High(TWeekdays) do begin
    Writeln(Format('%d : %s', [Integer(day), Enum<TWeekdays>.ValueName(day)]));
  end;
end;

begin
  Test;
end.
Результат:

Код: Выделить всё

0 : Monday
1 : Tuesday
2 : Wednesday
3 : Thursday
4 : Friday
5 : Saturday
6 : Sunday

Аватара пользователя
Apromix
Мастер
Сообщения: 1151
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Дельфистам.

Сообщение Apromix » 17 авг 2018, 22:11

Мда :D Использовать очень просто. Заюзаю в Трольханте. Спасибо)
Последний раз редактировалось Apromix 29 авг 2018, 04:51, всего редактировалось 1 раз.
Изображение Изображение

Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Re: Дельфистам.

Сообщение karagy » 18 авг 2018, 09:42

Глянул хелпер и вспомнил что я делал для себя перевод каментов на аглицкий.
Прилагаю переведенный в аттаче.
EnumHelper.pas.7z
EnumHelper with english comments
(3.29 КБ) 4 скачивания
Мне он понадобился только для отладочного вывода названий значений енумов.
А поддерживать параллельный массив с названиями в строках, либо делать закат Солнца вызов RTTI вручную - было откровенно лень.

Аватара пользователя
Apromix
Мастер
Сообщения: 1151
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Дельфистам.

Сообщение Apromix » 29 авг 2018, 04:48

karagy писал(а):
05 мар 2018, 20:45
Мелочи по хозяйству можно взять у https://github.com/malcolmgroves/
... Tuples...
Не представляю ситуации, где могут понадобиться кортежы в дельфи. У меня мозг так не работает :D Перерыл все функи в троллях, чтобы сделать очередной рефакторинг, но так и не нашел.
Изображение Изображение

Аватара пользователя
karagy
Сообщения: 1029
Зарегистрирован: 10 янв 2007, 14:13

Re: Дельфистам.

Сообщение karagy » 29 авг 2018, 16:11

Apromix писал(а):
29 авг 2018, 04:48
Не представляю ситуации, где могут понадобиться кортежы в дельфи.
Я тоже голову ломал. И не только о кортежах. Потом принял следующую стратегию - знакомиться (поверхностно) с новинками. А использовать - когда озарит - что вот оно как раз тут пригодилось!

Кортежи я использовал один или два раза для группировки разнородных данных.
1. У меня была очередь, хранящая однотипные данные со сложной структорой (record). Вдруг понадобилось при каждом элементе в очереди - хранить время помещения этого элемента в очередь. Расширять структуру хранившихся данных мне очень не хотелось (по разным причинам). Писать самодельную обертку-аггрегатор - лень. И я стал хранить в очереди двух-элементные таплы - время и полезные данные.

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

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость