Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
3-1078830044
Stas
2004-03-09 14:00
2004.04.11
Delphi8 и ADO


1-1082964495
Серж
2004-04-26 11:28
2004.04.11
CASE для Дельфи


14-1079055644
Soft
2004-03-12 04:40
2004.04.11
Способы тихого и болезненного умервщления Свидетелей Иеговых.


9-1065171136
Zergling
2003-10-03 12:52
2004.04.11
DerectDraw - SetPalette


3-1079533564
Kein
2004-03-17 17:26
2004.04.11
какая база данных побыстрей




   Наверх