IPB
ЛогинПароль:

> Форматтер кода, Подскажите где найти
sheka
сообщение 26.08.2009 20:32
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


подскажите, пожалуйста, где можна найти такую программку, которая оформляла бы текст программы, или как такую самому сделать.
например, так:
из:
begin
a:=1;
end;

в:
begin
a:=1;
end;

Даже как называется не знаю:)
пробовал что-то сам такое сделать за минут 10, но там столько разных вариантов...

Что-то типа такого вышло:
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.



Сообщение отредактировано: sheka - 27.08.2009 19:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   Форматтер кода   26.08.2009 20:32
volvo   Ты о форматтере кода? Полезные программы и утилит...   26.08.2009 21:36
sheka   Да, спасибо, о ней. Только как этим "форматте...   26.08.2009 22:45
volvo   Ей надо передавать параметры через командную строк...   26.08.2009 22:51
sheka   Разберешься? Врядли. На сколько я понял надо з...   26.08.2009 23:10
volvo   Взял неформатированный файл (без отступов вообще),...   26.08.2009 23:27
sheka   Класс, супер, то что хотел! Только один вопрос...   27.08.2009 0:18
volvo   Я вот так делаю:   27.08.2009 0:35
sheka   Понял, спасибо. т.е. надо поставить сначала перена...   27.08.2009 0:39
maksimla   а может есть такае же программа сделана на Дельфи ...   26.10.2009 16:25
volvo   Ну, напиши оболочку на Дельфи, которая будет дават...   26.10.2009 16:58
maksimla   Не знаю я Дельфи языка еще вот в этом вся проблема...   27.10.2009 9:38
volvo   Ну, вот тебе оболочка: Кладешь оба EXE-шника в од...   28.10.2009 1:39
Jabbson   Было бы здорово добавить функцию "убрать форм...   27.05.2010 23:57
volvo   Вот так что-ли? <файл удален...>   28.05.2010 1:52
Jabbson   Вот так что-ли? Да, класс!!! Тепер...   18.07.2010 11:07
volvo   Долго думал, почему такое происходит. Потом сообра...   1.08.2010 22:26
volvo   Продолжаем. Итак, просьба потестировать программку...   7.09.2010 15:26
Федосеев Павел   Недавно, отвечая на вопрос, попытался отформатиров...   20.01.2013 17:54


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 9.11.2024 21:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"