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

Вниз

Invalid pointer operation.   Найти похожие ветки 

 
Merry   (2006-10-04 21:03) [0]

Когда-то давно на форуме взяла  код полезной функции, переводящей денежные суммы  из цифр  в пропись.
Почему-то при выполнении:
Edit2.Text:=TextSum(StrToFloat(Edit1.text));  
перевод проходит, в Edit2 я вижу результат, но при этом выдаётся ошибка:"Invalid pointer operation."
Что она означает? Как от неё избавиться?
Код функции следующий:
  {------------------------ Деньги прописью ---------------------}

function Conv999(M: longint; fm: integer): string;
const
c1to9m: array [1..9] of string [6] =
("один","два","три","четыре","пять","шесть","семь","восемь","девять");
c1to9f: array [1..9] of string [6] =
("одна","две","три","четыре","пять","шесть","семь","восемь","девять");
c11to19: array [1..9] of string [12] =
("одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать",
"шестнадцать","семнадцать","восемнадцать","девятнадцать");
c10to90: array [1..9] of string [11] =
("десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят",
"семьдесят","восемьдесят","девяносто");
c100to900: array [1..9] of string [9] =
("сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот",
"восемьсот","девятьсот");
var

s: string;
i: longint;
begin

s := "";
i := M div 100;
if i<>0 then s:=c100to900[i]+" ";
M := M mod 100;
i := M div 10;
if (M>10) and (M<20) then s:=s+c11to19[M-10]+" "
else
begin
if i<>0 then s:=s+c10to90[i]+" ";
M := M mod 10;
if M<>0 then
if fm=0 then s:=s+c1to9f[M]+" "
else s:=s+c1to9m[M]+" ";
end;
Conv999 := s;
end;
{--------------------------------------------------------------}
function TextSum(S: double): string;
var
i: longint;
j: longint;
r: real;
t: string;

begin

t := "";

j := Trunc(S/1000000000.0);
r := j;
r := S - r*1000000000.0;
i := Trunc(r);
if j<>0 then
begin
t:=t+Conv999(j,1)+"миллиард";
j := j mod 100;
if (j>10) and (j<20) then t:=t+"ов "
else
case j mod 10 of
0: t:=t+"ов ";
1: t:=t+" ";
2..4: t:=t+"а ";
5..9: t:=t+"ов ";
end;
end;

j := i div 1000000;
if j<>0 then
begin
t:=t+Conv999(j,1)+"миллион";
j := j mod 100;
if (j>10) and (j<20) then t:=t+"ов "
else
case j mod 10 of
0: t:=t+"ов ";
1: t:=t+" ";
2..4: t:=t+"а ";
5..9: t:=t+"ов ";
end;
end;

i := i mod 1000000;
j := i div 1000;
if j<>0 then
begin
t:=t+Conv999(j,0)+"тысяч";
j := j mod 100;
if (j>10) and (j<20) then t:=t+" "
else
case j mod 10 of
0: t:=t+" ";
1: t:=t+"а ";
2..4: t:=t+"и ";
5..9: t:=t+" ";
end;
end;

i := i mod 1000;
j := i;
if j<>0 then t:=t+Conv999(j,1);
t := t+"руб. ";

i := Round(Frac(S)*100.0);
t := t+Long2Str(i)+" коп.";
TextSum := t;
End

Да ,ещё 3-я строка снизу выдаёт ошибку. Я заменила её на
t := t+IntToStr(i)+" коп."; Но это, наверное, не совсем корректно. Потому что
i: longint, а не integer. А какой функцией перевести Longint в String??


 
Ketmar ©   (2006-10-04 21:09) [1]

всё читать ниасилил. а LongInt -- это то же самое, что и Integer. потому что справка рулит. %-)


 
Джо ©   (2006-10-04 21:23) [2]

> но при этом выдаётся ошибка:"Invalid pointer operation."

У меня не выдается. Код не читал, ибо не враг своему здоровью :) Ты бы его отформатировал, что ли...


 
Правильный Вася   (2006-10-04 22:08) [3]

да негде там такой ошибке быть
наверно в другом месте


 
guav ©   (2006-10-05 00:19) [4]

Ошибку может вызывать и приведеный код, но вряд ли.
Если при включении проверки диапазонов повторяется та же ошибка, тогда точно согласен с

> [3] Правильный Вася   (04.10.06 22:08)


 
Германн ©   (2006-10-05 01:17) [5]


> Merry   (04.10.06 21:03)
>
> Когда-то давно на форуме взяла  код полезной функции, переводящей
> денежные суммы  из цифр  в пропись.


Кстати сей код без ошибок работает в TP7. Проверил сам. Но с библиотекой TurboProfessional. Long2Str именно оттуда.
function Long2Str(L : LongInt) : string;
   {-Convert a long/word/integer/byte/shortint to a string}
 var
   S : string;
 begin
   Str(L, S);
   Long2Str := S;
 end;


 
Ketmar ©   (2006-10-05 01:46) [6]

>[5] Германн(c) 5-Oct-2006, 01:17
>с библиотекой TurboProfessional.
слушай, намыль, а? библиотеку, в смысле. и ещё: если есть TechnoJocks Object Toolkit -- тоже намыль, плз. а то в гугле, заразы, TOT не дают %-((


 
Германн ©   (2006-10-05 02:13) [7]


> Ketmar ©   (05.10.06 01:46) [6]
>
> >[5] Германн(c) 5-Oct-2006, 01:17
> >с библиотекой TurboProfessional.
> слушай, намыль, а? библиотеку

На мыло в анкете?
TPguide нужен или нет?


 
Германн ©   (2006-10-05 02:14) [8]

TechnoJocks Object Toolkit - этого зверя я не встречал, увы!


 
Ketmar ©   (2006-10-05 02:39) [9]

>[7] Германн(c) 5-Oct-2006, 02:13
>На мыло в анкете?
угу.

>TPguide нужен или нет?
лей всё. оно ж, вроде, маленькое %-)


 
Германн ©   (2006-10-05 02:57) [10]

Отправил всё, что мог. Если что-то лишнее не обессудь.


 
Ketmar ©   (2006-10-05 03:18) [11]

>[10] Германн(c) 5-Oct-2006, 02:57
>Отправил всё, что мог. Если что-то лишнее не
>обессудь.
tnx. лишнее выкину, если что. а TOT я только что нашёл. %-)
а вот TurboPower Object Professional нигде не дают. TP его не открыла, зараза. %-)


 
Германн ©   (2006-10-05 03:33) [12]


> а вот TurboPower Object Professional нигде не дают.

А что это?
Стало даже очень интересно!  Поясни, пож-ста.


 
Ketmar ©   (2006-10-05 04:33) [13]

>[12] Германн(c) 5-Oct-2006, 03:33
>А что это?
продолжение Turbo Professional. тоже для BP/DOS/DPMI. только ещё больше, ещё страшнее, и объектное. %-)


 
Германн ©   (2006-10-05 04:50) [14]


> Ketmar ©   (05.10.06 04:33) [13]
>
> >[12] Германн(c) 5-Oct-2006, 03:33
> >А что это?
> продолжение Turbo Professional. тоже для BP/DOS/DPMI. только
> ещё больше, ещё страшнее, и объектное. %-)
>

Я в восторге! Но увы первый раз слышу! :-(
Я даже не понимаю "продолжение Turbo Professional. тоже для BP/DOS/DPMI."
Мне тоже хотелось бы это иметь у себя.


 
Ketmar ©   (2006-10-05 05:47) [15]

>[14] Германн(c) 5-Oct-2006, 04:50
>Я даже не понимаю "продолжение Turbo
>Professional. тоже для BP/DOS/DPMI."
идеологическое развитие библиотеки "Turbo Professional". тоже для доса и турбо/борланд паскаля. к сожалению, оригинальной версии нет. есть только переточеная версия под Virtual Pascal. стукни в асю, если оно тебе надо в таком виде. %-)


 
isasa ©   (2006-10-05 08:55) [16]

Ketmar ©   (05.10.06 01:46) [6]
См почту.



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

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

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1159878142
XTD
2006-10-03 16:22
2006.10.22
Сколько максимум может быть получателей Е-майл IdSMTP1?


2-1160276062
m-kirill-2003
2006-10-08 06:54
2006.10.22
Кнопка на новую форму.


2-1159702149
Фиббоначи
2006-10-01 15:29
2006.10.22
Последовательность Фиббоначи


2-1159962647
zorik
2006-10-04 15:50
2006.10.22
Расширеный DBGrid


15-1159715141
vidiv
2006-10-01 19:05
2006.10.22
Расшаривание видео по интернету