Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

Предложение по доработке 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 вся ветка

Форум: "KOL";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
15-1193473003
Evanescence
2007-10-27 12:16
2007.12.02
Где можно почитать про тонкие терминальные клиенты?


1-1189438405
rar
2007-09-10 19:33
2007.12.02
MainMenu


2-1194517429
{ент
2007-11-08 13:23
2007.12.02
Карты


3-1184593238
s_t_d
2007-07-16 17:40
2007.12.02
Отображение дробной части в IBExpert


15-1193763526
Time
2007-10-30 19:58
2007.12.02
Помощь по делфи Молодому учителю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский