Avatar billede slowaterz Nybegynder
09. december 2002 - 01:38 Der er 7 kommentarer og
1 løsning

Scope, "with" og ens property navne

Jeg har en underlig situation.

En eventhandler skal opdatere en Gauge komponent på formen. En af procedurens parametrene hedder "Progress".

Til at starte med lavede jeg en kodeblok, der så ca. sådan ud:

with GaugeProgress do
begin
  Progress := Progress;
  if (100 * Progress div MaxValue > PercentDone) then
    Apllication.ProcessMessages;
end;

Og så kom jeg til se, at programmet aldrig opdaterede min Gauge. I bagklogskabens ulideligt klare lys er det indlysende hvorfor.

Mit spørgsmål er : kan man få adgang til procedurens parameter "Progress" inde i min "with .. do" blok eller er jeg nødt til at droppe "with .. do" og skrive GaugeProgress foran hver af dens properties ?
Avatar billede angelod Novice
09. december 2002 - 01:44 #1
Hvorfor ikke bare ændre den variabel der hedder "Progress"? Kald den f.eks. "iProgress".

Bare et forslag. :)
Avatar billede slowaterz Nybegynder
09. december 2002 - 01:54 #2
Det er lidt indviklet - jeg bruger den færdige ADODataSet.OnFetchProgress event - der er parametrene givet på forhånd.
Avatar billede angelod Novice
09. december 2002 - 02:15 #3
Jamen.. Inden "with GaugeProgress" kan du jo bare køre en "iProgress := Progress;" og så bruge "iProgress" inde i din "With" ikke? :o)
Avatar billede slowaterz Nybegynder
09. december 2002 - 02:23 #4
Inføre en ekstra lokal variabel ?

Det kunne man vel godt ...

Men det er egentligt et generelt spørgsmål - hvordan får man fat i en variabel med samme navn fra den omkringliggende kodeblok ? Normalt bliver den jo skjult af den lokale variabel med samme navn.
Avatar billede angelod Novice
09. december 2002 - 02:26 #5
Jeg har selv haft problemet, men har ikke fundet anden løsning end at undgå konflikterne. Måske hvis man bruger namespaces i Delphi For .NET, men det har jeg ikke sat mig ind i endnu.
Avatar billede hermandsen Juniormester
09. december 2002 - 14:04 #6
Bare drop with-do'en! ;)
Avatar billede slowaterz Nybegynder
30. september 2004 - 15:08 #7
Det er vist på tide at aflive den her ...

Jeg endte godt nok med at "with-do"en ...
Avatar billede slowaterz Nybegynder
30. september 2004 - 15:09 #8
Der skulle have stået "... med at fjerne "with-do"en ..."
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester