Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.06.2012, 13:49
YekaterinaMel YekaterinaMel вне форума
Прохожий
 
Регистрация: 15.06.2012
Сообщения: 1
Репутация: 10
Восклицание Помогите объяснить каждую строчку в этой программе

Это программа в Delphi по переводу из одной системы исчисления в другую(от2до10)Нужно объяснить КАЖДУЮ строчку что в ней делается
Код:
function TForm1.AddStr(s1, s2: String; notation: byte): String;
var s: String;
i, len, res: Integer;
begin
s := '';
if Length(s1) > Length(s2) then len := Length(s1) else len := Length(s2);
for I := Length(s1) to len do s1 := '0' + s1;
for I := Length(s2) to len do s2 := '0' + s2;
for I := 1 to len + 1 do s := '0' + s;
for I := len + 1 downto 2 do
begin
res := byte(s1[i]) + byte(s2[i]) + byte(s[i]) - 48 * 3;
if res >= notation then
begin
s[i - 1] := char(byte(s[i - 1]) + 1);
s[i] := char(res + 48 - notation);
end
else
s[i] := char(res + 48);
end;
while (s[1] = '0') and (Length(s) > 1) do Delete(s, 1, 1);
AddStr := s;
end;

function TForm1.MulStr(s: String; c: char; notation: byte): String;
var s1: String;
i, len, res: Integer;
int_res, rem_res: byte;
begin
len := Length(s);
s1 := '';
for I := 1 to len + 1 do s1 := s1 + '0';
for I := len + 1 downto 2 do
begin
res := (byte(s[i - 1]) - 48) * (byte(c) - 48);
int_res := res div notation;
rem_res := res mod notation;
rem_res := rem_res + byte(s1[i]) - 48;
if rem_res >= notation then
begin
int_res := int_res + 1;
rem_res := rem_res - notation;
end;
s1[i] := char(rem_res + 48);
rem_res := int_res + byte(s1[i - 1]) - 48;
s1[i - 1] := char(rem_res + 48);
end;
while (s1[1] = '0') and (Length(s1) > 1) do Delete(s1, 1, 1);
MulStr := s1;
end;

function TForm1.ConvertNotation(s1: String; from_not, to_not: byte): String;
var s2, s, mul_s: String;
i, len: Integer;
begin
s := '0';
len := Length(s1);
mul_s := '1';
for I := len downto 1 do
begin
s2 := MulStr(mul_s, s1[i], to_not);
s := AddStr(s, s2, to_not);
mul_s := MulStr(mul_s, char(from_not + 48), to_not);
end;

while (s[1] = '0') and (Length(s) > 1) do Delete(s, 1, 1);
ConvertNotation := s;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
Convert;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if byte(Key) - 48 > StrToInt(cb_from.Items[cb_from.ItemIndex]) - 1 then Key := #0;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Convert;
end;

procedure TForm1.cb_fromChange(Sender: TObject);
begin
Convert;
end;

procedure TForm1.Convert;
begin
Edit2.Text := ConvertNotation(Edit1.Text,
StrToInt(cb_from.Items[cb_from.ItemIndex]), StrToInt(cb_to.Items[cb_to.ItemIndex]));
end;

end.
Админ: Пользуемся тегами дл оформления кода!

Последний раз редактировалось Admin, 15.06.2012 в 14:07. Причина: неверно указала заголовок
Ответить с цитированием
  #2  
Старый 15.06.2012, 16:02
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

То есть вы ее скачали, а отдуваться нам?
Ответить с цитированием
  #3  
Старый 21.07.2012, 22:40
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 298
Репутация: -1806
По умолчанию

круто, самые конченные двоечники сессию сдавать начали
Ответить с цитированием
  #4  
Старый 22.07.2012, 00:12
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

и месяца не прошло, как robt заметил тему
Ответить с цитированием
  #5  
Старый 22.07.2012, 19:41
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 298
Репутация: -1806
По умолчанию

Цитата:
Сообщение от ChinYan
и месяца не прошло, как robt заметил тему
канечно незаметиш если ее дрочить из раздела в раздел, то в работе,то в новичках...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:52.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter