Главная страница
    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.45 MB
Время: 0.038 c
7-1075199063
Sour
2004-01-27 13:24
2004.04.11
Почтовый клиент по умолчанию


14-1081963920
RealRascal
2004-04-14 21:32
2004.04.11
Замена блокноту


11-1060433412
=Sniper=
2003-08-09 16:50
2004.04.11
Проблема с Tooltip в Toolbar!


1-1082103462
scorpi
2004-04-16 12:17
2004.04.11
XP-дизайн.....


1-1080027420
Tornado
2004-03-23 10:37
2004.04.11
Вызвать раздел справки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский