Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Перевод из десятичной системы в восмеричную.   Найти похожие ветки 

 
INTAARI   (2004-03-19 18:08) [0]

Добрый день!!!
Может кто знает имеется ли в дельфи стандартная функция перевода из десятичной системы в восмеричную  наоборот.


 
Digitman ©   (2004-03-19 18:13) [1]

Есть такие ф-ция иль нет их, при работающей голове они пишутся буквально в течение не более пяти минут... сожалею, что ты столь занят и у тебя этих 5-ти минут попросту нет, коль скоро задал столь примитивнейший вопрос


 
INTAARI   (2004-03-19 18:19) [2]

В дельфе много простых функций, но мы же не пишем их аналог, а берем и исползуем, хотя замечание считаю корректным.


 
WebErr ©   (2004-03-19 18:22) [3]


> Добрый день!!!
> Может кто знает имеется ли в дельфи стандартная функция
> перевода из десятичной системы в восмеричную  наоборот.

Нет такой функции! :)
Цикл, где поочерёдно берешь число по модулю 8 (mod 8 эквивалентно and 7 !!!), запоминаешь результат, само число делишь на 8 (div 8 то же что и shr 3) и на следующую итерацию... :))))


 
RomeoGolf   (2004-03-19 18:27) [4]


function OcttoLong(s1:String):word;
const
 OctChars : array[0..7] of Char ="01234567";
var
  N,Ls: word;
  s: string;
  Mn,R: word;
begin
S:=UpperCase(s1);
  Ls:=Length(s); R:=0; Mn:=1;
  for n:=1 to Ls Do
  begin
     if (s[Ls-N+1]>="a") and (s[Ls-N+1]>="z") Then
         s[Ls-N+1]:=Chr(ord(s[Ls-N+1])-32);
     R:=R+(Pos(s[Ls-N+1],OctChars)-1)*Mn;
     Mn:=Mn*8;
  end;
  OcttoLong:=R;
end;

Function WordtoOct(s1:word):String;
Var s2:word;
tmp: string;
begin
Tmp:="";
S2:=(((s1)shr 15)and 1);
tmp:=inttostr(s2);
s2:=(((s1)shr 12)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 9)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 6)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 3)and 7);
tmp:=tmp+inttostr(s2);
s2:=(s1 and 7);
tmp:=tmp+inttostr(s2);
Wordtooct:=tmp;
End;


Разумеется, не стандартное и довольно сырое. Писано не мной, одним моим коллегой, пригодится - хорошо.


 
Юрий Зотов ©   (2004-03-19 18:43) [5]

Что-то типа этого.

function IntToOct(Int: Int64): string;
var
 i: integer;
begin
 Result := ""
 for i := 1 to 22 do
 begin
   Result := IntToStr(Int and 7) + Result;
   Int := Int shr 3
 end
end;

function OctToInt(Oct: string): Int64;
var
 i: integer;
begin
 Result := 0;
 for i := 1 to Length(Oct) do
   Result := Result * 8 + StrToInt(Oct[i])
end;


 
WebErr ©   (2004-03-19 18:52) [6]

Короче смотри [3] :))))



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
11-1051875935
MaximusXP
2003-05-02 15:45
2004.04.11
Интерфейс в стиле ХР


1-1082739071
SergeyM
2004-04-23 20:51
2004.04.11
QReport в Delphi 7


8-1076337974
PHENIX physicist
2004-02-09 17:46
2004.04.11
Рисование на форме


14-1079601314
Chcnger
2004-03-18 12:15
2004.04.11
Верно ли?


14-1082003944
WondeRu
2004-04-15 08:39
2004.04.11
Кредит на образование!Что? Где? Почем?