Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разработка конвертора VCL to KOL [Delphi, Windows]


Страницы:   1 2

BaryVetaL ©   (2005-12-22 15:36:00) 

Начал разработку как и обещал...
Сейчас делаю модуль VCLtoKOL который содержит переопределение процедур из VCL в KOL (например int2str в IntToStr), а так же неторые классы, константы и типы, которые не содержаться в модуле KOL.

У кого есть какие нибудь идеи по разработке прошу ... не стесняйтесь :-)


BaryVetaL   (2005-12-26 09:37:00) [21]

Ну че, первая версия почти готова! Скоро выложу посмотреть. Хотя, сейчас смотрю на свой код, страшно посмотреть, ничего потом буду смотреть и может чего и испралю... Я добавил несколько фишек, кроме преобразования аля VCLtoKOL, которые часто мне (хотя наверное не только) нужны и которых иногда не хватает ... Дальше:
2Vedun: ссылка http://kolibdb.100free.com/files/KOLChart.zipбитая
2Thaddy: Thanks!

теперь вопросы:
1) Кто знает как мне быть с функцией MessageDlg в VCL? MessageDlg очень часто используемая функция и ее надо бы иметь в модуле VCLtoKOL. Наверное здесь нужно будет создавать свою форму, на нее кидать кучу кнопок и иконку с меткой WordWrap. Использованеи MessageBox из модуля Windows не попрет т.к. в MessageDlg можно выставить произвольный набор кнопок и любую иконку (Warning, Error и т.п.), MessageBox этого не позволяет, на сколько я понял.

2) Вопрос наверное ни к месту, ну все таки, как програмно скомпилить полученную новую программу? Использование dcc32.exe FileName не дает того результата который нужен (например в Windows 98 появляется консоль которую нужно самому закрывать)


Vedun   (2005-12-25 01:05:00) [22]

А вот замена для VCL компонента TChart:   http://kolibdb.100free.com/files/KOLChart.zip. Автор - Thaddy. Зеркало добавил ECM.


Thaddy   (2005-12-24 10:39:00) [23]

2 Barry:

Memo.text:=StrLoadFromFile(Filename);

;)


mdw   (2005-12-23 15:44:00) [24]

>А замену для StringGrid придумал? Я предлагаю  mdvXLGrid 1.03
mdvXLGrid 1.16 http://mdvkol.narod.ru/KOLmdvXLGrid.zip

Была еще StGrd, аналог VCl Grid'a, но ее нужно до ума доводить.


Vedun   (2005-12-23 15:07:00) [25]

А замену для StringGrid придумал? Я предлагаю  mdvXLGrid 1.03 ( http://www.kolnmck.ru/files/kompon/mdvXLGrid.zip). Довольно симпатичная сетка с большим набором опций.


BaryVetaL   (2005-12-23 14:21:00) [26]

Да и еще в KOL если создаю Memo, а потом использую в VCL:
...
Memo1.LoadFromFile(FileName);
...
че единственный выход:

var
 tmp: PStrList;
...
tmp := NewStrList;
tmp.LoadFromFile(FileName);
Memo1.Text := tmp.Text;
tmp.Free;
...

Можно ли одной строчкой в мемо загрузить, без создания tmp?


BaryVetaL   (2005-12-23 13:47:00) [27]

Str2Float нет MTsv DN написал что есть у меня же выше написано:
TStr2Double = function ( const S: String ): Double;
...
StrToFloat: TStr2Double = Str2Double;
...

И еще в KOL есть и Extended2Str, а Str2Extended почему-то нет...

Barloggg о чем ты говоришь! Конечно же не подключаю! Он прибавляет что то типа 35 Kb.


MTsv DN   (2005-12-23 13:00:00) [28]

Str2Float -> Str2Double

С Уважением MTsv DN


Barloggg   (2005-12-23 12:52:00) [29]

хорошо, надеюсь сам модуль SysUtls ты не подключаешь? это стоит порядочно.

Кстати вопрос, а есть ли в KOL  Str2Float?


BaryVetaL   (2005-12-23 11:53:00) [30]

Если потом столкнусь с какими-то функциями вложенных объектов, то есть нельзя будет переопределить, то заменю...


> почему-же, добавлены. нет не так. они действительно не добавлены
> ибо они есть в базовом WinApi и нафига их переписывать еще
> разок?


Это нужно для совместимости с VCL, FindFirstFile по описанию отличается от FindFirst. Я выдрал из модуля SysUtils пару функций и поместил их в модуль VCLtoKOL, из за 5 функции и пары констант ничего страшного не будет, так как они не увеличат размер...


Barloggg   (2005-12-23 11:14:00) [31]

ну хорошо, а как тогда быть с функциями вложенных объектов?
скажем как перекрыть ImageMouseMove синтаксис которых не совпадает с VCL форматом?
хотя впрочем да, подключить отдельный модуль симпатичнее и нагляднее.

почему-же, добавлены. нет не так. они действительно не добавлены ибо они есть в базовом WinApi и нафига их переписывать еще разок?
ВО! цитирую из уроки KOL

> Традиционно пользуются 3-мя API функциями: FindFirstFile
> (ищет первый файл из списка файлов), FindNextFile (ищет
> следующий файл) , FindClose (прекращение поиска). Обычно
> первые 2-е функции заменются их VCL-суррогатами FindFirst,
>  FindNext.

Короче читай здесь http://www.kolnmck.ru/lessonsind.htm
а точнее здесь http://www.kolnmck.ru/lessons%2012.htm


BaryVetaL   (2005-12-23 09:57:00) [32]

Нет, я так не считаю. Лучше выписать все переопределения в отдельный файл и потом не мучаться и тратить дополнительное время на поиск и замену всех функций и процедур, которые нужно заменить, ведь ровным счетом, они ничего не занимают! Достаточно потом подключить одинмодуль VCLtoKOL+ модуль KOL и все будет работать!


RA   (2005-12-23 09:43:00) [33]

2BaryVetaL Зачем все эти переопределния? Не считаете ли вы, что гораздо проще (и логичнее) было бы делать замены прямо в модуле партируемой проги?


RA   (2005-12-23 09:43:00) [34]

2BaryVetaL Зачем все эти переопределния? Не считаете ли вы, что гораздо проще (и логичнее) было бы делать замены прямо в модуле партируемой проги?


BaryVetaL   (2005-12-23 09:29:00) [35]

Показываю, как и советовал Theddy:

//----------------------------------------------
//              Типы переопределения
//----------------------------------------------
type
 TMakerect = function ( Left, Top, Right, Bottom: Integer ): TRect; stdcall;
 TMakePoint = function ( X, Y: Integer ): TPoint;
 TInt2Str = function ( Value : Integer ) : String;
 TInt2Hex = function ( Value : DWord; Digits : Integer ) : String;
 TStr2Int = function (const Value : String) : Integer;
 TDouble2Str = function ( D: Double ): String;
 TStr2Double = function ( const S: String ): Double;
 TDateTime2StrShort = function ( D: TDateTime ): String;
 TStr2DateTimeShort = function ( const S: String ): TDateTime;

 TNewOpenDialog = function ( const Title, StrtDir: String; Options: TOpenSaveOptions ): POpenSaveDialog;
 TNewSaveDialog = function ( const Title, StrtDir: String; Options: TOpenSaveOptions ): POpenSaveDialog;
 TNewRadioButton = function ( AParent: PControl; const Caption: String ): PControl;
 TNewStringList = function : PStrList;

//----------------------------------------------
//          Константы переопределения
//----------------------------------------------
const
 Rect: TMakeRect = Makerect;
 Point: TMakePoint = MakePoint;
 IntToStr: TInt2Str = Int2Str;
 IntToHex: TInt2Hex = Int2Hex;
 StrToInt: TStr2Int = Str2Int;
 FloatToStr: TDouble2Str = Double2Str;
 StrToFloat: TStr2Double = Str2Double;
 DateTimeToStr: TDateTime2StrShort = DateTime2StrShort;
 StrToDateTime: TStr2DateTimeShort = Str2DateTimeShort;

 NewOpenDialog: TNewOpenDialog = NewOpenSaveDialog;
 NewSaveDialog: TNewSaveDialog = NewOpenSaveDialog;
 NewRadioButton: TNewRadioButton = NewRadiobox;
 NewStringList: TNewStringList = NewStrList;
 NewStrings: TNewStringList = NewStrList;

Да и вот еще: почему в KOL не добавлены следующие процедуры:
 function FindFirst(const Path: string; Attr: Integer; var  F: TSearchRec): Integer;
 function FindNext(var F: TSearchRec): Integer;
 procedure FindClose(var F: TSearchRec);
 function FileSetAttr(const FileName: string; Attr: Integer): Integer;
 function FileGetDate(Handle: Integer): Integer;
Ими все часто пользуются (покрайней мере я). Может есть какие-нибудь аналоги просто я не знаю как они называются?
Кто знает аналоги VCL в KOL?(ну один человек точно знает - Vladimir Kladov :-) )


RA   (2005-12-23 09:23:00) [36]

А я понял, что
// делаю модульVCLtoKOL который содержит переопределениепроцедур из VCL в KOL (например int2str в IntToStr)
Т.е. то о чем писал Thaddy:
type TInt2Str = function ( Value : Integer ) : String;
const IntToStr:TInt2Str = Int2Str;


Vedun   (2005-12-22 22:40:00) [37]


> Сейчас делаю модуль VCLtoKOL который содержит переопределение
> процедур из VCL в KOL (например int2str в IntToStr), а так
> же неторые классы, константы и типы, которые не содержаться
> в модуле KOL.


А я так понял, что этот модуль как раз и

> изменяет названия на коловские в самом партируемом модуле.


RA   (2005-12-22 17:58:00) [38]

Правильнее будет не добавлять модуль с переопределением процедур, а изменить названия на коловские в самом партируемом модуле. А иначе что же это за оптимизация получается, когда добавляем никому не нужные объявления?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо