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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1364812253
dronchik
2013-04-01 14:30
2014.02.09
Как обратиться к объекту в цикле


1-1320579862
DmitriyG.
2011-11-06 14:44
2014.02.09
Regexp в бинарниках


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


1-1321596096
brother
2011-11-18 10:01
2014.02.09
TIniStream реальность?


2-1365163474
Дмитрий С
2013-04-05 16:04
2014.02.09
Узнать класс слушателя события.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский