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

Вниз

Ищу исходники функции IntToStr на паскале   Найти похожие ветки 

 
IGray   (2010-08-12 08:37) [0]

Собственно сабж..
Мне нужно её доработать для отображения числа в произвольной системе счисления.

Заранее спасибо!


 
12 ©   (2010-08-12 08:41) [1]

не было там такой, вроде бы..
а в делфи ctrl+клик на слове

function IntToStr(Value: Integer): string;
asm
       PUSH    ESI
       MOV     ESI, ESP
       SUB     ESP, 16
       XOR     ECX, ECX       // base: 0 for signed decimal
       PUSH    EDX            // result ptr
       XOR     EDX, EDX       // zero filled field width: 0 for no leading zeros
       CALL    CvtInt
       MOV     EDX, ESI
       POP     EAX            // result ptr
       CALL    System.@LStrFromPCharLen
       ADD     ESP, 16
       POP     ESI
end;


 
MBo ©   (2010-08-12 09:07) [2]

Логика и алгоритм преобразования в строковый вид ясны или что-то непонятно?


 
KilkennyCat ©   (2010-08-12 09:16) [3]


> 12 ©   (12.08.10 08:41) [1]

маловато паскаля


 
Dimka Maslov ©   (2010-08-12 11:32) [4]

в сях _itoa работает с любой системой счисления от двоичной до тридцатишестеричной.
Решение задачи:
Пишем dll с одной функцией, подключаем её к своей программе.


 
icWasya ©   (2010-08-12 12:13) [5]

на паскале были процедуры str и val


 
Игорь Шевченко ©   (2010-08-12 13:23) [6]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1091#05
и сами исходники
http://www.delphikingdom.com/zip/d2005_utest.zip


 
Anatoly Podgoretsky ©   (2010-08-12 15:59) [7]

> Dimka Maslov  (12.08.2010 11:32:04)  [4]

Если расчеты делать по модулю Х, то проблемы могут возникнуть только с
60тиричной системой


 
ocean   (2010-08-12 16:38) [8]

> 12 ©   (12.08.10 08:41) [1]
Красиво. Как в анекдоте про Форда: купил картошку за 10 центов, продал за 12, и т.д., а потом умер дядя и оставил миллион.


 
ocean   (2010-08-12 16:43) [9]

(имеется в виду, красиво заполнил регистры, сохранил в стек, а потом бах - вызвал функцию, которая все сделала.)


 
Димка На   (2010-08-12 17:30) [10]

begin
star(....)
end;


 
Дмитрий С ©   (2010-08-12 17:40) [11]

str() точнее


 
Sha ©   (2010-08-12 21:31) [12]

Чур, кто про деление скажет - тот не умеет программировать


 
Дмитрий С ©   (2010-08-12 22:02) [13]


> Sha ©   (12.08.10 21:31) [12]

Неверные критерии. Самый простой способ - деление/остаток от деления.


 
Sha ©   (2010-08-13 02:34) [14]

> Дмитрий С ©   (12.08.10 22:02) [13]

Нормальные критерии: "да" и "нет" говорите, "div" и "mod" не берите.
Только твой пост не в ногу :)


 
Дмитрий С ©   (2010-08-13 03:18) [15]


> Sha ©   (13.08.10 02:34) [14]

Я не хочу быть "тот не умеет программировать", но как без деления эту задачу сделать даже и не знаю(


 
0x00FF00 ©   (2010-08-13 05:43) [16]

Дмитрий С ©   (13.08.10 03:18) [15]
Например, взятием только верхнего DWORD"а из результирующего QWORD"а после умножения "делимого" на специально подобранную константу.
Когда-то я её даже помнил, и один раз даже троллил препода с помощью указанного метода.


 
Sha ©   (2010-08-13 10:46) [17]

Еще можно без умножений

function MyIntToStr(n: integer): string;
var
 ch: array[0..9] of char;
 c, d: cardinal;
 i: integer;
begin
 if n<0 then Result:="-" else Result:="";
 FillChar(ch,SizeOf(ch),"0");
 c:=abs(n);
 d:=9;
 while c>d do begin
   inc(d,10);
   i:=0;
   while true do begin
     inc(ch[i]);
     if ch[i]<="9" then break;
     ch[i]:="0";
     inc(i);
   end;
 end;
 for i:=9 downto 0 do if ch[i]<>"0" then Result:=Result+ch[i];
 Result:=Result+chr(c-d+ord("9"));
end;

или исхитриться заюзать че-нить типа MulDiv и т.п.

В общем, каждый по-своему пишет :)


 
Anatoly Podgoretsky ©   (2010-08-13 19:01) [18]

> Дмитрий С  (13.08.2010 03:18:15)  [15]

По школе помню, деление можно заменить вычитанием.


 
Sha ©   (2010-08-13 19:27) [19]

> Anatoly Podgoretsky ©   (13.08.10 19:01) [18]
> По школе помню, деление можно заменить вычитанием.

Причем со школьным вычитанием получится еще и быстрее, чем у меня

> Дмитрий С  (13.08.2010 03:18:15)  [15]
> но как без деления эту задачу сделать даже и не знаю(

Просто добавь констант



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1281203081
track
2010-08-07 21:44
2010.11.21
старый софт


15-1281085272
Плохиш
2010-08-06 13:01
2010.11.21
Верните тепло!


2-1282828830
PeSmaker
2010-08-26 17:20
2010.11.21
"Вытаскивание" нужной информации из HTML-страницы.


2-1282770205
Arhi2med
2010-08-26 01:03
2010.11.21
как последовательно читать текст если элементы разделены ;


2-1282818621
abun
2010-08-26 14:30
2010.11.21
Манифест для Windows XP