Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];

Вниз

Ищу исходники функции 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
2-1282816133
Dmitriy
2010-08-26 13:48
2010.11.21
проблемы со StaticText


6-1228647321
cerber
2008-12-07 13:55
2010.11.21
подмена html


2-1282889483
Гость
2010-08-27 10:11
2010.11.21
Запись в ini-файл строки имеющей переводы строки


3-1247807671
belmol
2009-07-17 09:14
2010.11.21
множество в условии


2-1282718003
12
2010-08-25 10:33
2010.11.21
Как выбрать TTreeNode? Аналогично, если по нему кликнули мышкой





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский