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

Вниз

Форматирование исходного кода?   Найти похожие ветки 

 
Den   (2013-04-06 15:45) [0]

Как можно изменить команду Format Source так чтобы
1.Оператор begin не переносился на следующую строку,
for I := 0 to Nodelist.length-1 do begin
kod;
end;

а не

for I := 0 to Nodelist.length-1 do
begin
kod;
end;

2. Переменные в объявлении функции каждая была на следующей строке -
procedure Universal(
doc: ihtmldocument2;
NotInner: string;
TableIndex: integer;
TabText:string;
table: ixmlDomNode;
DomDoc: IXMLDOMDocument3;
memoForLogme: TMemo): boolean;

3. Строка до оператора ";" полностью была на одной строке например так -
if Nodelist.item[i].nodeName=NodeName then Nodelist.item[i].text:=ValueToSet;
а не
if Nodelist.item[i].nodeName=NodeName then
Nodelist.item[i].text:=ValueToSet;


 
MBo ©   (2013-04-06 16:03) [1]

В настройки форматирования заглядывал?


 
Den   (2013-04-06 16:15) [2]

Было дело. Чето ощущения у меня такие что быстрее будет свой парсер написать, чем я счас и займусь наверное....


 
MBo ©   (2013-04-06 16:18) [3]

Первое точно должно быть.


 
Den   (2013-04-06 17:32) [4]

Как бы еще чтоб блоки между begin end; табулировало, сделать, надо придумать и все...

procedure TForm1.Button6Click(Sender: TObject);
var
s,OutS, procPar,OutProc, FromProcEndToBegin,PrOrFunct:string;
Start, Stop,i:integer;
list,outList:Tstringlist;
begin
s:=memo1.Text;
if pos("function",s)<>0 then PrOrFunct:="function";
if pos("procedure",s)<>0 then PrOrFunct:="procedure";
Start:=pos(PrOrFunct,s)-1;
Stop:=pos("(",s);
OutS:=copy(s,Start+1,Stop);
delete(s,Start+1,Stop);
procPar:=copy(s,1,pos(")",s)-1);
delete(s,1,pos(")",s)-1);
///func par
while pos(":",procPar)<>0 do begin
if pos(";",procPar)=0 then begin
OutProc:=OutProc+trim(procPar)+chr(13)+chr(10);
delete(procPar,1,length(procPar));
end else begin
OutProc:=OutProc+trim(copy(procPar, 1, pos(";",procPar)))+chr(13)+chr(10);
delete(procPar,1,pos(";",procPar)+1);
end;
end;
FromProcEndToBegin:=copy(s,1,pos("begin",s)+length("begin")-1);
delete(s,1,pos("begin",s)+length("begin")-1);
list:=TstringList.create;
list.Text:=s;
outList:=TstringList.create;
s:="";
for I := 0 to List.Count - 1 do begin
s:=s+trim(list[i]);
if pos(";",s)<>0 then begin
outList.Add(s);
s:="";
end else s:=trim(s);

end;

memo2.Text:=Outs+chr(13)+chr(10)+OutProc+FromProcEndToBegin+outList.Text;

end;


 
Rouse_ ©   (2013-04-06 17:50) [5]


> Форматирование исходного кода?

А зачем? Все три указаных тобой варианта противоречат тому стандарту, которого придерживаются большинство разработчиков, в том числе и само Embarcadero.


 
Den   (2013-04-06 18:26) [6]

Кто чего придерживается это такое, к томуже, к тому виду, которого все придерживаются, код приводится нажатием ctrl-d за 2 секунды, а вот готовый инструмент по форматированию кода так как удобней, а не так как все, было бы иметь не плохо. кстати там сверху for I := 0 to List.Count - 1 do begin лучще на это заменить
for I := 0 to List.Count - 1 do begin
DelTab:=list[i];
while pos("  ",DelTab)<>0 do begin
dt:=pos("  ",DelTab);
//DelTab:=copy(DelTab,1,dt-1)+" "+copy(DelTab,dt,length(DelTab)) ;
 delete(DelTab,dt,1);

end;


 
Den   (2013-04-06 18:27) [7]

s:=s+DelTab;
if pos(";",s)<>0 then begin
outList.Add(s);
s:="";
end else s:=s;

end;


 
Дмитрий С ©   (2013-04-06 18:30) [8]


>  Все три указаных тобой варианта противоречат тому стандарту,
>  которого придерживаются большинство разработчиков, в том
> числе и само Embarcadero.

К сожалению разработчики фрипаскаля не всегда придерживаются :(


 
Den   (2013-04-06 20:07) [9]

Фух наконецто вышло что-то, не так уж и быстро правда, но делает то что мне надо по крайней мере -

procedure TForm1.Button6Click(Sender: TObject);
var
 s, s1, OutS, procPar, OutProc, FromProcEndToBegin, PrOrFunct, DelTab, tab,
   checkForComment: string;
 Start, Stop, i, dt: integer;
 list, outList, addTab: Tstringlist;
begin
 s := Memo1.text;
 if pos("function", s) <> 0 then
   PrOrFunct := "function";
 if pos("procedure", s) <> 0 then
   PrOrFunct := "procedure";
 Start := pos(PrOrFunct, s) - 1;
 Stop := pos("(", s);
 OutS := copy(s, Start + 1, Stop);
 delete(s, Start + 1, Stop);
 procPar := copy(s, 1, pos(")", s) - 1);
 delete(s, 1, pos(")", s) - 1);
 /// func par
 while pos(":", procPar) <> 0 do
 begin
   if pos(";", procPar) = 0 then
   begin
     OutProc := OutProc + trim(procPar) + chr(13) + chr(10);
     delete(procPar, 1, length(procPar));
   end
   else
   begin
     OutProc := OutProc + trim(copy(procPar, 1, pos(";", procPar))) + chr(13)
       + chr(10);
     delete(procPar, 1, pos(";", procPar) + 1);
   end;
 end;
 FromProcEndToBegin := copy(s, 1, pos("begin", s) + length("begin") - 1);
 delete(s, 1, pos("begin", s) + length("begin") - 1);
 list := Tstringlist.create;
 list.text := s;
 outList := Tstringlist.create;
 s := "";
 for i := 0 to list.Count - 1 do
 begin
   DelTab := list[i];
   while pos("  ", DelTab) <> 0 do
   begin
     dt := pos("  ", DelTab);
     delete(DelTab, dt, 1);
   end;

   checkForComment := copy(trim(DelTab), 1, 2);
   if checkForComment <> "//" then
   begin
     s := s + " " + DelTab;
     if pos(";", s) <> 0 then
     begin
       outList.Add(s);
       s := "";
     end;
   end;
 end;
 list.text := outList.text;
 outList.text := "";
 for i := 0 to list.Count - 1 do
 begin
   s := list[i];
   if (pos("begin", s) <> 0) and (pos("//", s) = 0) then
   begin
     while pos("begin", s) <> 0 do
     begin
       s1 := copy(s, 1, pos("begin", s) + length("begin") - 1);
       outList.Add(s1);
       delete(s, 1, pos("begin", s) + length("begin") - 1);
       if (pos("begin", s) = 0) and (length(s) <> 0) then
         outList.Add(s);

     end;
     s := "skjhfsdjkfhsdjfy78y7eee";
   end;
   if s <> "skjhfsdjkfhsdjfy78y7eee" then
     outList.Add(s);

   s := "";
 end;

 Memo2.text := OutS + chr(13) + chr(10) + OutProc + FromProcEndToBegin +
   outList.text;
 // memo2.Text:=outList.Text;
 addTab := Tstringlist.create;
 addTab.text := OutS + chr(13) + chr(10) + OutProc + FromProcEndToBegin +
   outList.text;
 tab := "";
 for i := 0 to addTab.Count - 1 do
 begin

   if pos("end;", addTab[i]) <> 0 then
     delete(tab, 1, 2);
   addTab[i] := tab + addTab[i];
   if pos("begin", addTab[i]) <> 0 then
     tab := tab + "  ";
 end;
 Memo2.text := addTab.text;
end;


 
Германн ©   (2013-04-07 01:54) [10]


> Все три указаных тобой варианта противоречат тому стандарту,
>  которого придерживаются большинство разработчиков, в том
> числе и само Embarcadero.

Первое требование как раз в моём стиле. И когда я начинал знакомиться с ТП большинство придерживалось именно этого.
Второе требование просто бредовое. Его никто никогда не придерживается. Имхо.
Третье - сомнительное. Если законченная строка кода влезает на экран современного монитора, то её не нужно разбивать. Если же нет, то тогда её нужно разбить.

Имхо автору решение нужно для чего-то другого. Например для собственного анализатора/интерпретатора/транслятора и т.п. и т.д.


 
Den   (2013-04-07 15:39) [11]

Имхо автору решение нужно для чего-то другого. -  нет именно для этого и нужно, чтоб быстро вьехать в код (который я сам же и написал:)). Поясню, есть unit в котором описаны процедуры при вызове которых в XML файле создаются ноды с кучей атрибутов, значения атрибутов лежат на форме в editah comboboxah и тд. и вот чтоб вызвать такую процедуру нужно все эти эдиты в нее запихать и вот это (Второе требование просто бредовое.) намного удобнее глазами просматривается чем когда все в куче. Да и вопрос был про готовое решение, если оно бы было то почему бы и не посмотреть что выйдет из этого.



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

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

Наверх




Память: 0.5 MB
Время: 0.007 c
2-1364829737
TStas
2013-04-01 19:22
2014.02.09
КАк упаковать раром папку?


2-1365497297
И. Павел
2013-04-09 12:48
2014.02.09
NTLM-аутентификация


3-1295188339
NightVamp
2011-01-16 17:32
2014.02.09
Использование COUNT в отчёте QReports


2-1358728095
ad1951
2013-01-21 04:28
2014.02.09
Тест на Делфи


15-1377376202
Юрий
2013-08-25 00:30
2014.02.09
С днем рождения ! 25 августа 2013 воскресенье