-
Когда я автоформатирую код на MCK в Delphi 2010, то копирую весь type. К этому приспособиться можно. Но когда я захотел всё это автоматизировать с ptop, то столкнулся с той же проблемой. А автоматиризовать копирование всех типов в буфер довольно проблематично с Batch. Но создать такую "умную" программу я не смогу, поэтому решил искоренить проблему в корне, т.е. в умном коде MCK, который, однако, при любой нестандартизации его кода начинает уродовать код. Например, однажды я случайно в коде потерял все пустые строки (не спрашивайте - как). Из-за этого MCK везде наделал что-то типа:
Unit Main; Причём, он это делает даже с "восстановленным" с помощью ptop кодом (типы были бережно восстановлены из пустого MCK-проекта).
-
Возможно поможет:
[0] VPBar (13.05.07 10:48)
Приветствую. Довольно давно пользуюсь KOL (еще с версии 1,80). И обнаружил что при использовании автоформатера в KOL-проектах, начинаются странные глюки. Как оказалось причина в том что форматер убирает пробел в этой строчке ' // Do not remove this line!'. MCK не находит в проекте свою сигнатуру и заново добавляет ее и инклюды в обьявлении формы. Естественно это уже не компилится. Решение такое:
Добавляет константу и функцию в mirror.pas
… const VSignature = '//DONOTREMOVETHISLINE!';
…
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 без этих изменений).
-
А почему нельзя просто убрать "// Do not remove this line!" Ведь если один раз уберут, то потом никогда больше не будут. Из-за этой надписи только одни проблемы. Я уже вылечил код с помощью пустого MCK-проекта (который по ГОСТу). Если смотреть только на Delphi 2010 автоформатирование, то важнее, конечно, сделать более непривередливой колонку типов. Или делать её изначально так, как автоформатирщик Delphi 2010.
|