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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.08.2010 22:26
Сообщение #2


Гость






Цитата
а не, не легко, русский язык не воспринимает, а при попытке форматирования выдает ошибку "Невозможно открыть файл С, err =2"
Долго думал, почему такое происходит. Потом сообразил, что имеется в виду файл с кириллическим именем. Да, в этом случае будут сбои, естественно. Ибо утилита ptop - консольная, следовательно, OEM-кодировка, а моя программа - Юникодная... Конвертировать кодировки из одной в другую, да еще и UTF <-> OEM, да еще и не имея возможности это проверить (у меня, понимаешь ли, не русскоязычная Windows, если что. На русскоязычном софте свет клином не сошелся, есть и другие страны в мире) я не буду, муторно это, да и не надо никому. Посему программа из обращения изымается. Пользуйтесь консольной версией дальше, если лень просто напросто перевести имя файла в латиницу.

Цитата
с кодировкой прошлая версия работала стабильнее.
Неправда. Не могла она работать стабильнее по определению. Это был UNICODE-проект "от рождения", с кодировками в имени файла он работал всегда одинаково. Только латиница.

Тема с графической оболочкой закрыта.

Сообщение отредактировано: volvo - 7.09.2010 14:59
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 



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