Форум: "Начинающим";
Текущий архив: 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