подскажите, пожалуйста, где можна найти такую программку, которая оформляла бы текст программы, или как такую самому сделать.
например, так:
из:
begin
a:=1;
end;
begin
a:=1;
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure into_dop_from_trimmed;
var
fin,fout:textfile;
str:string;
begin
assignfile(fin,Form1.edit1.Text+'(Trimmed).PAS');
reset(fin);
assignfile(fout,'dop.txt');
rewrite(fout);
while not Eof(fin) do
begin
readln(fin,str);
writeln(fout,str);
end;
Closefile(fout);
Closefile(fin);
end;
function min(a,b:byte):byte;
begin
if a<=b then min:=a
else min:=b;
end;
(*После каждой точки с запятой перенос на новую строку*)
procedure into_new_line;
var
fin,fout:textfile;
str:string;
position:byte;
begin
assignfile(fin,Form1.edit1.Text+'.PAS');
reset(fin);
assignfile(fout,Form1.Edit1.Text+'(Trimmed).PAS');
rewrite(fout);
while not Eof(fin) do
begin
readln(fin,str);
repeat
if pos(';',str)=0 then Position:=Length(str)
else Position:=pos(';',str);
writeln(fout,Copy(str,1,Position));
Delete(str,1,Position);
while (0<Length(str))and(str[1]=' ') do Delete(str,1,1);
until str='';
end;
Closefile(fout);
Closefile(fin);
end;
(*Отступы перед каждой строкой*)
procedure otstup;
const Dlina_otstup=2;
var
fin,fout:textfile;
str:string;
i,kol_otstup:byte; (*Количество отступов*)
begin
into_dop_from_trimmed;
kol_otstup:=0;
assignfile(fin,'dop.txt');
reset(fin);
assignfile(fout,Form1.Edit1.Text+'(Trimmed).PAS');
rewrite(fout);
while not Eof(fin) do
begin
readln(fin,str);
if (pos('end',str)<>0)then if kol_otstup>0 then dec(kol_otstup);
for i:=1 to kol_otstup*Dlina_otstup do str:=' '+str;
writeln(fout,str);
if (pos('begin',str)<>0)or (pos('case',str)<>0)then inc(kol_otstup);
end;
Closefile(fout);
Closefile(fin);
Erase(fin);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
into_new_line;
otstup;
halt;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
{edit1.SetFocus;}
end;
end.
Ты о форматтере кода?
http://forum.pascal.net.ru/index.php?s=&showtopic=6186&view=findpost&p=46463
Да, спасибо, о ней.
Только как этим "форматтером" пользоваться?
у меня при запуске ехе она сразу вылетает.
Ей надо передавать параметры через командную строку. Вот тут есть список настроек: http://www.freepascal.org/tools/ptop.var
Разберешься?
Взял неформатированный файл (без отступов вообще), PTOP у меня находится в папке с исходниками, запустил cmd.exe, перешел в папку, где лежат исходники и PTOP, и задал команду:
F:\Programs\Pascal>ptop -i 3 __fmt.pp __fmt.pas
Класс, супер, то что хотел!
Только один вопрос: как сделать "перешел в папку, где лежат исходники и PTOP"?
я такого не умею. там ведь пишется с:\ ...
а у меня все находится на е:\ ...
ну я воспользовался bat файлом, а как это надо было?
Понял, спасибо. т.е. надо поставить сначала перенаправление на диск, а потом только писать путь.
а может есть такае же программа сделана на Дельфи или другом языке чтобы запустил программу указал папку как в винтовсе и выбрал файл и он отредоктировалсябы
Ну, напиши оболочку на Дельфи, которая будет давать пользователю возможность выбрать имя файла, а потом вызывать ShellExecute-ом эту самую утилиту, в чем проблема-то?
Не знаю я Дельфи языка еще вот в этом вся проблема а в cmd.exe как то боязнено лезть могу неправильно наделать там чтото натворить нехочется терять ОС Vista я ведь совсем в досе и в cmd не разу не работал
Ну, вот тебе оболочка:Кладешь оба EXE-шника в одну папку, и запускаешь beauty2.exe. Дальше - разберешься Потестируй, если что не так работает, или какие еще функции добавить - говори, поправлю...
<файл удален...>
Было бы здорово добавить функцию "убрать форматирование" открытого файла, которая читала бы строку и удаляла пробелы до тех пор, пока не начался текст, а как только начался - идти на след строку и так до конца файла. Таким образом можно было бы автоматизировать чистку "самоформата", а не вручную деформатировать код.
Продолжаем.
Итак, просьба потестировать программку: http://forum.pascal.net.ru/index.php?showtopic=26376
Особо не вычищал ее, могут быть кое-где глючки, вот, собственно, для того, чтоб их убрать и была создана тема.
Недавно, отвечая на вопрос, попытался отформатировать код топикстартера к удобоваримому виду при помощи ptop из FPC 2.6.0 с настройками по-умолчанию. Результат немного огорчил.
Что было
...................
If a=0 then
Begin
If b=0 then
If c=0 then
Writeln('-1')
else
Writeln('0')
Else
Begin
x:=c/b;
...................
...................
If a=0 Then
Begin
If b=0 Then
If c=0 Then
Writeln('-1')
Else <---------- что это?
Writeln('0')
Else
Begin
x := c/b;
...................
...................
if a = 0 then
begin
if b = 0 then
if c = 0 then
Writeln('-1')
else
Writeln('0')
else
begin
x := c / b;
...................
cialis walmart
Zythromax Vs Cephalexin
The quality and quantity of work produced here are absolutely informative. Thanks for sharing. https://www.wintoto.org