You can find them in the Underground
You can get Heart Scales in Pearl from digging in the Underground and (P.S. This is for after you get the National Dex) from wild Luvdisc.
Some people may give them to you or you dig underground.
Heart scales are obtainable at the pokeathlon prize exchange booth. The pokeathlon is north of goldenrod city, in the Johto region. Hope I helped!
get an explorer kit from the old man in eterna city and dig up heart scales.
To find heart scales on Pokemon diamond/pearl you need the explorer kit to go underground. once you are underground look for cracks inthe wall, and eventully you will find a heart scale in the cracks.
To learn moves you forgot or didn't learn(exept TM & hm)
try trading heart scales to teach your Pokemon new moves to the guy in pastoria city.
The move tutor is in the South-east of Pastoria City near water. You will need heart scales for the guy to be able to teach it to you. You can find heart scales in the underground.
If you dig underground and dig in the walls you can get heart scales.
Heart Scales can sometimes be found on Luvdisc when they are caught.
on Pokemon diamond and pearl you will need the explore kit to go underground then after mining the walls for loot there is a chance you may find a heart scale also fosils and evoloution stones
Go underground by using your toolkit, then keep digging for treasure until you get lucky