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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.053 c
3-1156518910
Winni
2006-08-25 19:15
2006.10.22
Не получается подключить БД Paradox через ODBC и ADO


6-1148679826
Николас
2006-05-27 01:43
2006.10.22
Как узнать IP адрес


3-1156851812
novill
2006-08-29 15:43
2006.10.22
Ошибка при IBEventAlerter.RegisterEvents;


2-1159969196
Игорь_
2006-10-04 17:39
2006.10.22
Создание нити и отправка ей сообщения.


2-1160050849
"Начинающий"
2006-10-05 16:20
2006.10.22
О blob полях





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