Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
General
»
IntToStr bring me to lost hairs
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
WIKI Timeout issues
Please read here if you have trouble connecting to the wiki
Recent
Layout problem by nested ...
by
Martin_fr
[
Today
at 10:29:38 pm]
Lazarus 4 - I give up and...
by
Martin_fr
[
Today
at 10:23:23 pm]
IBX installing - packages...
by
Nicole
[
Today
at 10:16:20 pm]
Status and Maintenance of...
by
hdb
[
Today
at 10:09:45 pm]
problem with the lps
by
Nicole
[
Today
at 10:06:30 pm]
How to export Pascal vari...
by
korba812
[
Today
at 10:05:04 pm]
Documentation
by
LemonParty
[
Today
at 10:03:21 pm]
Strict Aliasing Rule
by
nixbody
[
Today
at 10:01:29 pm]
Firebird 5.02. - the root...
by
Nicole
[
Today
at 09:54:46 pm]
RecordCount not working -...
by
CharlyTango
[
Today
at 09:43:24 pm]
IBX 2.7.2, What's wrong w...
by
rvk
[
Today
at 09:33:54 pm]
WinInet compiling errors.
by
440bx
[
Today
at 08:59:26 pm]
InstallAware 2025 Sources...
by
msintle
[
Today
at 08:29:41 pm]
Animation demo with multi...
by
TBMan
[
Today
at 06:25:26 pm]
I created a Hello World p...
by
Weiss
[
Today
at 05:25:28 pm]
[SOLVED] LAMW - UTF-8 cha...
by
Alcatiz
[
Today
at 05:08:51 pm]
[Solved] HMACSHA1Digest g...
by
fedkad
[
Today
at 04:41:07 pm]
TBitBtn no longer shows g...
by
Awesome Programmer
[
Today
at 04:38:15 pm]
Hints for method name mis...
by
CM630
[
Today
at 04:03:50 pm]
SnapModbus
by
Thaddy
[
Today
at 03:18:55 pm]
mormot
by
Thaddy
[
Today
at 03:01:26 pm]
Replace controls dynamica...
by
n7800
[
Today
at 02:42:14 pm]
[SOLVED]Trying to find/do...
by
tfurnivall
[
Today
at 02:28:03 pm]
[SOLVED] Z-order is not r...
by
Aruna
[
Today
at 01:59:22 pm]
How do you place a breakp...
by
Hansvb
[
Today
at 01:01:14 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: IntToStr bring me to lost hairs (Read 719 times)
paule32
Hero Member
Posts: 516
One in all. But, not all in one.
IntToStr bring me to lost hairs
«
on:
May 23, 2025, 04:41:25 pm »
I have this Function:
Code: Pascal
[Select]
[+]
[-]
function
IntToStr32
(
AValue
:
Integer
)
:
PChar
;
stdcall
;
export
;
var
temp
:
PChar
;
begin
temp
:
=
StrAlloc
(
64
)
;
_itoa
(
AValue
,
temp
,
10
)
;
if
AValue
=
123
then
writeln
(
'temp: '
+
temp
)
;
Exit
(
temp
)
;
end
;
when I call it with IntToStr32(123) I get no writeln
the Function _itioa is:
Code: Pascal
[Select]
[+]
[-]
function
_itoa
(
Value
:
Integer
;
Buffer
:
PChar
;
Radix
:
Integer
)
:
PChar
;
cdecl
;
external
'msvcrt.dll'
name
'_itoa'
;
But the following Code works:
Code: Pascal
[Select]
[+]
[-]
function
IntToStr32
(
AValue
:
Integer
)
:
PChar
;
stdcall
;
export
;
var
temp
:
PChar
;
begin
AValue
:
=
123
;
temp
:
=
StrAlloc
(
64
)
;
_itoa
(
AValue
,
temp
,
10
)
;
if
AValue
=
123
then
writeln
(
'temp: '
+
temp
)
;
Exit
(
temp
)
;
end
;
Logged
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.
marcov
Administrator
Hero Member
Posts: 12262
FPC developer.
Re: IntToStr bring me to lost hairs
«
Reply #1 on:
May 23, 2025, 04:45:19 pm »
_itoa has a return value. This is so you know how many characters you have written so that you can provide proper zero terminating.
Logged
paule32
Hero Member
Posts: 516
One in all. But, not all in one.
Re: IntToStr bring me to lost hairs
«
Reply #2 on:
May 23, 2025, 04:50:57 pm »
when I do:
temp := _itoa(AValue, temp, 10);
or:
StrCopy(temp, _itoa(AValue, temp, 10));
I get same results:
temp: 20971088
But not 123.
Logged
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.
Thaddy
Hero Member
Posts: 17176
Ceterum censeo Trump esse delendam
Re: IntToStr bring me to lost hairs
«
Reply #3 on:
May 23, 2025, 05:00:39 pm »
If you see a
pointer
value why do you stop thinking about what the pointer points to?
Also,
Why do you use C libraries for that?
The Pascal compiler handles that just as efficient.
If I wasn't already certified mad, you will make me even more mad with such questions where you do not do your own research.
Funny you focus on 32 Intel Windows, which is not obtainable from MS anymore.
«
Last Edit: May 23, 2025, 05:13:53 pm by Thaddy
»
Logged
Due to censorship, I changed this to "Nelly the Elephant". Keeps the message clear.
paule32
Hero Member
Posts: 516
One in all. But, not all in one.
Re: IntToStr bring me to lost hairs
«
Reply #4 on:
May 23, 2025, 05:13:14 pm »
good news:
I have found a Solution:
Code: Pascal
[Select]
[+]
[-]
function
IntToStr32
(
Value
:
Integer
)
:
string
;
stdcall
;
export
;
var
Buffer
:
array
[
0
..
31
]
of
Char
;
Temp
:
PChar
;
Negative
:
Boolean
;
Digit
:
Integer
;
Len
:
Integer
;
begin
Len
:
=
0
;
Temp
:
=
@
Buffer
[
0
]
;
Buffer
[
0
]
:
=
#0
;
Negative
:
=
Value <
0
;
if
Negative
then
Value
:
=
-
Value
;
repeat
Digit
:
=
Value
mod
10
;
Move
(
Buffer
[
0
]
,
Buffer
[
1
]
,
Len
+
1
)
;
Buffer
[
0
]
:
=
Chr
(
Ord
(
'0'
)
+
Digit
)
;
Inc
(
Len
)
;
Value
:
=
Value
div
10
;
until
Value
=
0
;
if
Negative
then
begin
Move
(
Buffer
[
0
]
,
Buffer
[
1
]
,
Len
+
1
)
;
Buffer
[
0
]
:
=
'-'
;
Inc
(
Len
)
;
end
;
SetString
(
Result
,
Buffer
,
Len
)
;
end
;
Logged
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.
Thaddy
Hero Member
Posts: 17176
Ceterum censeo Trump esse delendam
Re: IntToStr bring me to lost hairs
«
Reply #5 on:
May 23, 2025, 05:15:02 pm »
Yup, the setstring trick. (it is not a trick!)
One day you will learn.
Your code is still highly inefficient, though: you should use val(), which is also used by inttostr.
Then again: we discussed that.... and you did not understand that.
This part is exceptionally bad, what are you trying there?
Code: Pascal
[Select]
[+]
[-]
repeat
Digit
:
=
Value
mod
10
;
Move
(
Buffer
[
0
]
,
Buffer
[
1
]
,
Len
+
1
)
;
Buffer
[
0
]
:
=
Chr
(
Ord
(
'0'
)
+
Digit
)
;
Inc
(
Len
)
;
Value
:
=
Value
div
10
;
until
Value
=
0
;
Makes no sense.
«
Last Edit: May 23, 2025, 05:28:40 pm by Thaddy
»
Logged
Due to censorship, I changed this to "Nelly the Elephant". Keeps the message clear.
paule32
Hero Member
Posts: 516
One in all. But, not all in one.
Re: IntToStr bring me to lost hairs
«
Reply #6 on:
May 23, 2025, 06:48:49 pm »
it is not the efficency that I looking for.
I looking for workable...
Logged
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
General
»
IntToStr bring me to lost hairs
TinyPortal
© 2005-2018