Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Предложение по доработке MCK для совместимости с автоформатерами   Найти похожие ветки 

 
VPBar   (2007-05-13 10:48) [0]

Приветствую. Довольно давно пользуюсь KOL (еще с версии 1,80). И обнаружил что при использовании автоформатера в KOL-проектах, начинаются странные глюки. Как оказалось причина в том что форматер убирает пробел в этой строчке "{ KOL MCK } // Do not remove this line!".  MCK не находит в проекте свою сигнатуру  и заново добавляет ее и инклюды в обьявлении формы. Естественно это уже не компилится. Решение такое:
Добавляет константу и функцию в mirror.pas

... const VSignature = "{KOLMCK}//DONOTREMOVETHISLINE!";
....
// asPos=false - точное совпадение S с сигнатурой.
// Иначе проверяет вхождение сигнатуры в S
function isValidSignature(S:String;asPos:Boolean=false):Boolean;
begin
S:=KOL.RemoveSpaces(S);
if asPos then
     result:=Pos(VSignature,KOL.UpperCase(S))>0
 else
  result:=StrComp_NoCase(PChar(VSignature), PChar(S))=0;
end;
.....

затем все строки где идет сравнение сигнатуры (if Source[ I ] = Signature then) меняем на
if isValidSignature(Source[ I ]) then.
И там где идет поиск сигнатуры (if pos( Signature, Source[ I ] ) > 0 then) так же меняем на
if isValidSignature(Source[ I ]) then.
Эти изменения делают MCK менее привередливой.
Пару лет назад, я уже предлагал  на форуме(по моему даже именно на этом) Кладову включить эти изменения в MCK. Но почему-то это не было сделано. Видимо решение не понравилось, или такая проблема возникла только у меня, а остальные форматируют все ручками. Сейчас я опять предлагаю обсудить целесообразность этих изменений. И если они нужны предложить автору KOL внести их в новую версию. Кроме того я изменил MCK, так чтобы он ложил все свои инки в папку kol_inс папки проекта. (Ну не нравится мне заваленная инками папка проекта :) ). Естественно после этих изменений MCK имеет обратную совметимость со старыми проектами (сделанными в MCK без этих изменений). Вот модифицированная мной версия http://slil.ru/24359538 * VERSION 2.58


 
Дмитрий К ©   (2007-05-13 17:15) [1]


> ...причина в том что форматер убирает пробел в этой строчке ...


Есть, как минимум, 2 варианта решения этой "проблемы":
1. Запретить "форматеру" убирать пробел.
2. Написать "форматер", кот. будет правильно обрабатывать сигнатуру MCK.

А менять код библиотеки ради каких-то "форматеров", на мой взгляд, - зло.

Все вышенаписанное - IMHO.


 
Vladimir Kladov   (2007-05-13 18:32) [2]

Я не использую автоформатеры, которые еще и коверкали бы текст. Но если он только пробелы по-своему расставляет, то поборемся еще раз. У нас есть функция RemoveSpaces, вот ее и применим в MCK при сравнении сигнатур, чтобы было все равно, сколько там пробелов ваш кривой форматер сделал.


 
VPBar   (2007-05-13 19:09) [3]

>> Дмитрий К
Вы готовы написать форматер специально для  MCK, но не готовы изменить несколько строчек в MCK?
Ну не всречал я нормальных автоформатеров, в которых можно заперить форматировать строку с определенным текстом.
>> Vladimir Kladov
Я знаю, что Вы не используете автоформатеры, Вы это уже отвечали. К сожалению все форматеры "коверкают" текст под определенный формат :).
В принципе для меня не большая проблема, вносить эти изменени в каждую версию. Просто решил вынести предложение на обсуждение.
Кроме того, решение это проблемы восстановить точность - в строчке
"{ KOL MCK } // Do not remove this line!" - говорится только о том, что нельзя удалять строчку. Хотя точнее было бы "{ KOL MCK } // Do not change this line!". Хотя это конечно мелочь.
Заранее спасибо, если Вы примените RemoveSpaces в новых версиях.


 
Vladimir Kladov   (2007-05-13 21:25) [4]

Да, и говорится это человеку. Поэтому писать DONOTREMOVE... без пробелов внутри и большими буквами - вообще неправильно. Сигнатуру я оставлю ту же, поправлю только проверку в тех местах, где она делается.


 
vpbar   (2007-05-14 12:21) [5]

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1194438063
fart
2007-11-07 15:21
2007.12.02
Вопрос по Edit


3-1184959483
NewZ
2007-07-20 23:24
2007.12.02
SQL запрос к двум таблицам.


15-1194098943
Ya
2007-11-03 17:09
2007.12.02
Как создавать портабельные программы?


2-1194072771
Nike85
2007-11-03 09:52
2007.12.02
Как сохранить рез-ты query в таблицу для дальнейшего импорта?


2-1192718804
Barracudic
2007-10-18 18:46
2007.12.02
Как програмно запустить приложение?