/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Placering af (globale) konstanter
Fra : Ukendt


Dato : 15-01-06 22:07

Hej.

Er nedenstående rigtigt forstået?

Hvis jeg har lavet en unit, som er lavet specielt til opbevaring af mine
konstanter, så skal den se således ud:

---
unit Konstanter;

interface

Const
ALLE MINE KONSTANTER

implementation

end.
---

dvs at for at jeg kan bruge mine konstanter i mine øvrige forms og units, så
skal alle mine konstanter skal placeres under interface, Const - OG IKKE
under implementation, const.

På forhånd tak

/Michael



 
 
Uffe Kousgaard (15-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 15-01-06 22:41

"Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
news:43cab969$0$11698$ba624c82@nntp02.dk.telia.net...
> Hej.
>
> Er nedenstående rigtigt forstået?

Ja.



Ukendt (15-01-2006)
Kommentar
Fra : Ukendt


Dato : 15-01-06 22:46

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cac152$0$38637$edfadb0f@dread12.news.tele.dk...
> "Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
> news:43cab969$0$11698$ba624c82@nntp02.dk.telia.net...
>> Hej.
>>
>> Er nedenstående rigtigt forstået?
>
> Ja.

OK - det gælder vel også variabler.

Hvad sker der, hvis jeg putter det under _implementation_ i stedet for
_interface_? (er det så kun muligt at tilgå i denne unit?)

Hvordan kan det lade sig gøre at arbejde med editbokse fra Form1 i unit'en
Beregning?

Eksempel:

Jeg har skrevet:

Procedure test;
Var
Resultat = integer;
Begin
Resultat:= StrToInt(Form1.editbox1.Text)
End;

Men det vil den ikke godtage. Jeg tror, at det skyldes, at jeg skal markere
i unit'en tilhørende form1, at dens editbokse skal kunne tilgås i andre
unit's. Men hvordan gør jeg det i praksis (hvis det er der problemet ligger)

På forhånd tak.

/Michael



Uffe Kousgaard (15-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 15-01-06 22:56

"Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
news:43cac293$0$4820>
> OK - det gælder vel også variabler.

Ja.

> Hvad sker der, hvis jeg putter det under _implementation_ i stedet for
> _interface_? (er det så kun muligt at tilgå i denne unit?)

Så er variablerne kun tilgængelige i unit'et selv.

> Hvordan kan det lade sig gøre at arbejde med editbokse fra Form1 i unit'en
> Beregning?

Ved at tilføje navnet på det unit med form1 under uses i "Beregning". For at
undgår cirkulære referencer kan du blive nødt til at skrive dette EFTER
implementation. (Der kan godt være 2 uses sektioner i et unit - under
interface og under implementation).

hilsen
Uffe



Uffe Kousgaard (15-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 15-01-06 23:02

I øvrigt:

Hvis du i unit Beregning kun skal arbejde med værdien, der står i feltet
edit1, så er det en bedre idé at overføre denne værdi til din test procedure
som en parameter i stedet for at referere til form1.edit1.text.

hilsen
Uffe



Ukendt (16-01-2006)
Kommentar
Fra : Ukendt


Dato : 16-01-06 18:06

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cac651$0$38659$edfadb0f@dread12.news.tele.dk...
>I øvrigt:
>
> Hvis du i unit Beregning kun skal arbejde med værdien, der står i feltet
> edit1, så er det en bedre idé at overføre denne værdi til din test
> procedure
> som en parameter i stedet for at referere til form1.edit1.text.

Den fangede jeg desværre ikke, Uffe. (Parametre). Hvorfor er det i øvrigt en
bedre idet som du foreslår?

*Eksempel som jeg kan bruge*

Form1 har jeg herefter kaldt formIndtastning.

På FormIndtastning har jeg eksempelvis 3 tekstbokse. edtTal1, edtTal2,
edtTal3.

I en unit kaldet Beregning ønsker jeg at arbejde med det indtastede i "unit
Beregning"

Det jeg gjorde, og som jeg ikke fik til at fungere var flg.

---
Unit Beregning;

interface

implementation
uses indtastning;

Procedure Beregn;
Var
Resultat: integer;
Begin
Resultat:= StrToInt(FormIndtastning.edtTal1.Text) +
StrToInt(FormIndtastning.edtTal2.Text) +
StrToInt(FormIndtastning.edtTal3.Text);
End;

Hvad siger du til det samt det du nævnte med parametre in mente?



Ukendt (16-01-2006)
Kommentar
Fra : Ukendt


Dato : 16-01-06 18:01


"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cac4df$0$38714$edfadb0f@dread12.news.tele.dk...
> "Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
> news:43cac293$0$4820>
>> OK - det gælder vel også variabler.
>
> Ja.
>
>> Hvad sker der, hvis jeg putter det under _implementation_ i stedet for
>> _interface_? (er det så kun muligt at tilgå i denne unit?)
>
> Så er variablerne kun tilgængelige i unit'et selv.
>
>> Hvordan kan det lade sig gøre at arbejde med editbokse fra Form1 i
>> unit'en
>> Beregning?
>
> Ved at tilføje navnet på det unit med form1 under uses i "Beregning".

Det forstår jeg så ikke, for det _har_ jeg nemlig gjort.

For at
> undgår cirkulære referencer kan du blive nødt til at skrive dette EFTER
> implementation. (Der kan godt være 2 uses sektioner i et unit - under
> interface og under implementation).

Det kan så godt være, at det er her, det går galt, for jeg har _kun_
placeret min uses-sætning under *implementation* delen i Beregning med
teksten

---
Unit Beregning;

Interface

Implementation
uses form1;
---

Vil du have det således?

---
Unit beregning;

Interface
uses form1;

Implementation
uses form1;
---



Uffe Kousgaard (16-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 16-01-06 18:03

"Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
news:43cbd132$0$9303$ba624c82@nntp02.dk.telia.net...
>
> uses form1;

Læs dette grundigt og ret så ovenstående:
"Ved at tilføje navnet på det unit med form1 "

hilsen
Uffe



Ukendt (16-01-2006)
Kommentar
Fra : Ukendt


Dato : 16-01-06 18:13

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cbd1e2$0$84036$edfadb0f@dtext01.news.tele.dk...
> "Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
> news:43cbd132$0$9303$ba624c82@nntp02.dk.telia.net...
>>
>> uses form1;
>
> Læs dette grundigt og ret så ovenstående:
> "Ved at tilføje navnet på det unit med form1 "

Det har du selvfølgelig ret i. Det skulle heller ikke have været form1, men
unit1. Min fejl. Men der stod også _unit1_ og nu har jeg rettet det til
Indtastning (unit) under uses. (den tilhørende form hedder formIndtastnint).

Men jeg har stadig problemer jvf. mit andet indlæg



Ukendt (16-01-2006)
Kommentar
Fra : Ukendt


Dato : 16-01-06 20:39

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cbd1e2$0$84036$edfadb0f@dtext01.news.tele.dk...
> "Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
> news:43cbd132$0$9303$ba624c82@nntp02.dk.telia.net...
>>
>> uses form1;
>
> Læs dette grundigt og ret så ovenstående:
> "Ved at tilføje navnet på det unit med form1 "

Hej Uffe.

Til orientering kan jeg fortælle, at jeg har fundet fejlen eller manglen nu.

Det skyldes, at jeg skulle tilføje

---
Uses
SysUtils

under Interface i unit'en Beregning.
---

Uden den kan den ikke finde ud af StrToInt.

Unit'en Beregning er en tom unit uden tilhørende form og derfor er der ikke
tilføjet nogle erklæringer til denne Uses linie, som er helt blank og jeg
skal manuelt tilføje dem, jeg skal bruge, og nu har jeg tilføjet SysUtils. -
sådan har jeg forstået det.

/Michael



Ukendt (16-01-2006)
Kommentar
Fra : Ukendt


Dato : 16-01-06 19:45

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43cac4df$0$38714$edfadb0f@dread12.news.tele.dk...
> "Michael Sørensen" <ms1 (a) skindbeni . DANMARK> wrote in message
> news:43cac293$0$4820>

>> Hvordan kan det lade sig gøre at arbejde med editbokse fra Form1 i
>> unit'en
>> Beregning?
>
> Ved at tilføje navnet på det unit med form1 under uses i "Beregning". For
> at
> undgår cirkulære referencer kan du blive nødt til at skrive dette EFTER
> implementation. (Der kan godt være 2 uses sektioner i et unit - under
> interface og under implementation).

Dette virker desværre IKKE ved mig.

Et eller andet sted, så gør det jo nok, men jeg gør det forkert. Og jeg
mener trods alt ikke, at jeg er (så) dum

Herunder er mine 2 unit - en tilhørende min form og en, der står alene til
beregning.

Kan jeg få det skåret ud i pap, hvad jeg gør forkert her.



*** Unit'en Beregning ***
---
unit Beregning;

interface

implementation

uses Indtastning;

Procedure Beregn;
Resultat: integer;
Begin
Resultat:= StrToInt(FormIndtastning.edtTal1.Text) +
StrToInt(FormIndtastning.edtTal2.Text);
End;

End.
---

***Herunder ses unit'en tilhørende formen FormIndtastning.***
---
unit Indtastning;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TformKI = class(TForm)
edtTal1 TEdit;
edtTal2: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;

var
formIndtastning: TformIndtastning;

implementation

{$R *.dfm}

end.
---

Jeg får i øvrigt fejlen undeclared identifier StrToInt, når jeg prøver at
compilere og jeg får rød bølgestreg under IntToStr, men jeg må indrømme, at
jeg mener, at jeg gør det rigtigt.




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste