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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.05.2008, 22:57
Nisan Nisan вне форума
Прохожий
 
Регистрация: 18.05.2008
Сообщения: 6
Репутация: 10
По умолчанию Двоичное кодирование

Здравствуйте. У меня есть исходник:

Код:
type
  Bits=array [0..7] of byte;

procedure dec2bin(x:byte; var b:Bits);
var bit,i:byte;
begin
  for i:=7 downto 0 do
  begin
    if (x and (1 shl i))<>0 then bit:=1 else bit:=0;
    b[i]:=bit;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
  
Var    f:TextFile;
     ch:char;
      b:Bits;
       i: Integer;

  s: string;

begin
   Memo1.Clear;
   AssignFile(f,'12345.txt');//Связываем переменную f с выбранным файлом
  Reset(f);//Открываем файл для чтения
  while not(eof(f)) do//это условие позволяет определить конец файла
  begin
  read(f,ch);//Считываем первый символ теста
    {Тут вставь различные обраоботки}
    dec2bin(Ord(ch),b);
      for i:= 0 to 7 do
    s:= s + IntToStr(b[i]);
      Memo1.Lines.Add(s);
       {Тут вставь вывод в Memo}
  end;
  CloseFile(f);//Закрываем файл
  Edit1.Text:=IntToStr(Memo1.Lines.Count);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Memo1.Lines.SaveToFile('s.txt');
end;
Admin: Пользуемся тегами!

Который переводит символы в двоичный код. Акто мне подскажет : как сделать обратные действия?

Последний раз редактировалось Admin, 19.05.2008 в 10:37.
Ответить с цитированием
  #2  
Старый 19.05.2008, 00:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Sum[n = 0..7](b(n)*2^n);

т.е. для 00001101 = 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 1*2^3 + 1*2^2 + 1*2^0 = 8 + 4 + 1 = 13
Ответить с цитированием
  #3  
Старый 19.05.2008, 00:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Или в виде кода:

Код:
function BinToDec(ABin : Bits) : Integer;
var
  I : Integer;
begin
  Result := 0;
  For I := 0 To 7 Do
    If ABin <> 0 Then Result := Result + power(2,I);
end;
Ответить с цитированием
  #4  
Старый 19.05.2008, 09:43
Nisan Nisan вне форума
Прохожий
 
Регистрация: 18.05.2008
Сообщения: 6
Репутация: 10
По умолчанию

В том то и дело, что нужно перевести символы. Приведённый мною код переводит символы в двоичный код. А функция только числа.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter