Блокнот Графомана

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Блокнот Графомана

Сообщение Лекс Айрин » 25.05.2017 13:46:54

Под XP диалог выбора шрифтов не находит ни одного шрифта. можно ли как-то подсунуть ему стандартную папку?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение pupsik » 25.05.2017 18:09:11

можно ли как-то подсунуть ему стандартную папку?
системной библиотеке?
можно ли как-то
сделать свой диалог выбора шрифтов.
pupsik
энтузиаст
 
Сообщения: 1011
Зарегистрирован: 20.08.2014 16:20:13

Re: Блокнот Графомана

Сообщение Лекс Айрин » 25.05.2017 18:37:37

pupsik, что ж... видимо, придется(((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение pupsik » 25.05.2017 20:11:39

можете ещё посмотреть что там в сис. вызовах намутили. Т.е. передача параметров в диалог.

Кстати: у меня, иной раз, диалог открытия (при дебагере) крякозяблами ругался....
pupsik
энтузиаст
 
Сообщения: 1011
Зарегистрирован: 20.08.2014 16:20:13

Re: Блокнот Графомана

Сообщение Лекс Айрин » 26.05.2017 09:17:46

pupsik, возможно, дело в том, что я переопределяю этот диалог, чтобы не вводить лишние параметры при рунтаймовом запуске. Хотя не должно бы влиять... под семеркой никаких проблем, а вот в хр требует папку в панели управления.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение Лекс Айрин » 31.05.2017 14:20:22

непонятка с procedure LoadFromFile(const FileName: string; AEncoding: TEncoding); overload; virtual;
Не пойму как установить кодировку. текста.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение Лекс Айрин » 19.09.2017 18:08:14

Все, с основным нужным мне функционалом разобрался. Далее только дополнительные фишки и плюшки. В принципе, это уже можно будет считать версией 1.0.0
В этой версии уже есть поддержка rtf.
Скорее всего, завтра около обеда буду сливать в репозитарий.
Из отсутствующего важного -- возможность печати.

Добавлено спустя 17 часов 54 минуты 53 секунды:
Решил проверить на утечку памяти и заметил, что программа течет как дуршлаг(((

Почти избавился, но у меня все-равно остались несколько ошибок.

Код: Выделить всё
initialization
FormRegister:=TFormRegister.create;//<---указывает сюда
// иначе нет смысла
INIPropStorage1:=TINIPropStorage.Create(nil);
EditorFont:=TFont.Create;
ProgFont:=TFont.Create;// освобождение при финише ведет к ошибке!

FontLst:= TStringList.Create;
LoadFontList;
LoadSetting;
finalization
FreeAndNil(FormRegister);//финализация регистратора
//сохранение настроек сессии
SaveSetting;
FreeAndNil(FontLst);
INIPropStorage1.Free;
FreeAndNil(ProgFont);
FreeAndNil(EditorFont);
end.                   

Код: Выделить всё
constructor TFormRegister.create;
begin
  dic:=TFormDictionary.create;//<---указывает сюда
end;       


ну и пару неправильно сработавших завершений модуля сделанных типа этого.

Код: Выделить всё
initialization
  {$I styles.lrs}
  FormData:=FormRegister.GetDefaultFormData;
FormData.FormCreateProc:=@CreateFStyle;
FormData.HumanReadableFormName:=rsStyleFormName;
FormRegister.RegisterForm('FStyle',FormData);//<---указывает сюда
finalization
  FormRegister.UnRegisterForm('FStyle',FormData);
  FormData.HumanReadableFormName:='';
  FormData.FormName:='';
  FormData.FormCreateProc:=nil;
end.                                       


может, я конечно, что-то неправильно указал...

полный выхлоп утечек

Код: Выделить всё
---------------------------
Error
---------------------------
Heap dump by heaptrc unit
57948 memory blocks allocated : 5861599/6022224
57944 memory blocks freed     : 5861096/6021712
4 unfreed memory blocks : 503
True heap size : 950272 (80 used in System startup)
True free heap : 949376
Should be : 949424
Call trace for block $035300C8 size 392
  $0042E756  TOPENADDRESSING$4$CRC99FE3619__REHASH,  line 363 of inc/generics.dictionaries.inc
  $0042E680  TOPENADDRESSING$4$CRC99FE3619__PREPAREADDINGITEM,  line 230 of inc/generics.dictionaries.inc
  $0042E966  TOPENADDRESSING$4$CRC99FE3619__DOADD,  line 275 of inc/generics.dictionaries.inc
  $00430570  TFORMREGISTER__REGISTERFORM,  line 307 of global.pas
  $0062BCD9  STYLES_$$_init$,  line 150 of styles.pas
  $0040FD16
  $0064210D
  $0061E2AE
Call trace for block $0355FB30 size 21
  $00456083
  $00430553  TFORMREGISTER__REGISTERFORM,  line 307 of global.pas
  $00628FF8  VIRTKEYBOARD_$$_init$,  line 1087 of virtkeyboard.pas
  $0040FD16
  $0057B809
  $0057AF1C
  $0057A839
  $0057ABC5
Call trace for bl
--------------------------
ОК   
---------------------------
---------------------------
Error
---------------------------
Call trace for block $0  $0057B334
  $0057A839
  $0057ABC5
  $0057AA86
  $0057A6F3
  $00642079
  $0061E2AE
  $0040FD16
Call trace for block $000D7918 size 48
  $004303E0  TFORMREGISTER__CREATE,  line 289 of global.pas
  $00430698  GLOBAL_$$_init$,  line 324 of global.pas
  $0040FD16
---------------------------
ОК   
---------------------------


Добавлено спустя 7 часов 56 минут 56 секунд:
Вопрос решен. Всего лишь неправильная директива у деструктора.

теперь не знаю как правильно преобразовать fparams в TFont.

Добавлено спустя 16 часов 26 минут 50 секунд:
Все, от утечек память вроде бы избавился...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение Лекс Айрин » 29.09.2017 14:04:49

Что я делаю не так?
Код: Выделить всё
procedure F_Save;
begin
  case FMain.ComboLangCodePage.ItemIndex of
    3:FEditors.Editors.Lines.SaveToFile(MyFile, FEditors.Encode.ANSI);
    //Txt:=utf8tocp1251(FEditors.Editors.Lines.Text);
    2:FEditors.Editors.Lines.SaveToFile(MyFile, FEditors.Encode.UTF8);
      //Txt := FEditors.Editors.Lines.Text;
    1:FEditors.Editors.Lines.SaveToFile(MyFile, FEditors.Encode.GetEncoding('KOI8'));//<<<---------косяк явно здесь
      //txt := utf8toKOI8(FEditors.Editors.Lines.Text);
    0:FEditors.Editors.Lines.SaveToFile(MyFile, FEditors.Encode.GetEncoding('CP866'));//<<<---------и здесь
      //Txt := utf8toCP866 (FEditors.Editors.Lines.Text);
    4:FEditors.SaveFTR(Utf8ToAnsi(MyFile));
   end;
end; 

Если в выхлопе на утечки выдает

Код: Выделить всё
---------------------------
Error
---------------------------
Heap dump by heaptrc unit

181378 memory blocks allocated : 21741669/22302576

181375 memory blocks freed     : 21741597/22302504

3 unfreed memory blocks : 72

True heap size : 1474560 (80 used in System startup)

True free heap : 1474192

Should be : 1474216

Call trace for block $02609320 size 24

  $0046063A

  $00432074  F_SAVE,  line 181 of main.pas

  $004345EF  MENUSAVEASCLICK,  line 689 of main.pas

  $00557944  CLICK,  line 83 of include/menuitem.inc

  $005580B5  DOCLICKED,  line 280 of include/menuitem.inc

  $0040DDF3

  $005084E9  WINDOWPROC,  line 2676 of win32/win32callback.inc

  $0060B211  CUSTOMFORMWNDPROC,  line 386 of win32/win32wsforms.pp

Call trace for block $025F9010 size 24

  $0046063A

  $00432016  F_SAVE,  line 179 of main.pas

  $004345EF  MENUSAVEASCLICK,  line 689 of main.pas

  $00557944  CLICK,  line 83 of include/menuitem.inc

  $005580B5  DOCLICKED,  line 280 of include/menuitem.inc

  $0040DDF3

  $005084E9  WINDOWPROC,  line 2676 of win32/win32callback.inc

  $0060B211  C
---------------------------
ОК   
---------------------------


При этом, перекодирование текста происходит нормально.

Добавлено спустя 1 час 54 минуты 32 секунды:
Один косяк нашел. 'FEditors.Encode' заменил на 'TEncoding'. Ну и, естественно, убрал лишнюю переменную.

Это убрало две утечки? Но одно место осталось
Код: Выделить всё
1:FEditors.Editors.Lines.SaveToFile(MyFile, TEncoding.GetEncoding('KOI8'));
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 29.09.2017 16:04:02

FEditors.Encode.GetEncoding - создает класс типа TEncoding. ты его попользовал и отпустил утекать. Надо уничтожить
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 29.09.2017 16:31:59

zub, это я понял... не понял как именно его освободить... тем более, что FEditors.Encode я уже убрал. Использовать freeInstant?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 29.09.2017 16:47:12

запомнить TEncoding.GetEncoding('KOI8') в переменной, потом уничтожить
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 29.09.2017 17:21:40

zub, спасибо, помогло.

Кстати, может, подскажешь какие кодировки еще стоит добавить?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 29.09.2017 20:39:20

По мне - никакие
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 10.10.2017 17:00:41

Попытался реализовать вставку картинок примерно так...
Код: Выделить всё
....
procedure TFEditors.InsertImage(const FileName: string; const AImgSize: TSize);
Var
  Res:Boolean;
  APos:Integer;
begin
     APos:=Edit.FEditors.Editors.SelStart;
  Res:=InsertImageFromFile(Edit.FEditors.Editors, APos, FileName,AImgSize);
end;
.....
procedure TFImages.BtInsertImagesClick(Sender: TObject);
Var
Size:TSize;
begin
     Size.cx:=SpinX.Value;
     Size.cy:=SpinY.Value;
     Edit.FEditors.InsertImage(OpenPictureDialog1.FileName, Size);
end;

Но, почему-то вставляет как иконку, хотя размер захватывает сколько потребуешь... Как-то это можно исправить?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение Лекс Айрин » 12.10.2017 12:51:37

Нашел, почему не работает. InsertImageFromFile, оказывается, заглушка(((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4099
Зарегистрирован: 19.02.2013 16:54:51

Пред.След.

Вернуться в Разработки на нашем сайте

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

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

Рейтинг@Mail.ru