| |
|
|
|
|
|
|
|
|
|
|
òåìí äãìôé ùéòåø 7: èéôåì áùâéàåú á EuroCC
äöâðå àú äåøàú ä- Case , ùîçìéôä îñôø äåøàåú î÷åððåú ùì if…then…else. äëðåú 1.
àí òãééï ìà òùéú æàú, äåøã îéã àú euoroen03.zip
ì-
\DelphiLa (ãó
ääåøãåú ). 2.
öåø ñôøéä çãùä \DelphiLa\EuroEN03. 3.
äòú÷ àú euoroen03.zip
ì- \DelphiLa\EuroEN03
åòùä ìå "unzip"
ìñôøéä æå. áãå÷ ù÷áìú àú ä÷áöéí euroen03.dpr,
euroform.dfm
å- euroform.pas. áùìá æä, àúä éåãò èåá îàã ìùéí øëéáéí á- form,
àéê ìòøåê àú äîàôééðéí (properties) ùìäí, åàéê ìëúåá îáöòé àéøåòéí (event
handlers). àæ
ãéìâúé òì äçåîø ìîúçéìéí. áùéòåø æä úáðä éùéøåú òì ÷áöé ä-EuroEN03
ùäåøãú. îä
ðåñó ìèåôñ (Form)? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
procedure TForm1.CurrConvert; var Amount: real; begin Amount := StrToFloat(InputEdit.Text);
if CurrRadioG.ItemIndex = 1 then Euro := Amount / cfBEF else if CurrRadioG.ItemIndex
= 2 then Euro := Amount / cfFRF else if CurrRadioG.ItemIndex = 3 then Euro :=
Amount / cfNLG else Euro := Amount; ConvertShow; SetLabelInvisible; end; |
2.
ô÷èåøé ääîøä àéðí îùúðéí éåúø: äöäøðå òìéäí ëòì ÷áåòéí. éåúø
îæàú, ðéúï ìäùúîù á÷áåòéí àìä áëì äùâøåú á- unit,
ëéååï ùäöäøðå òìéäí îéã áúçéìú çì÷ äîéîåù (implementation-section).
îéã ìàçø îëï, úøàä àú ääöäøä òì äîùúðä äâìåáìé Euro.
procedure TForm1.CurrConvert; var Amount, // Amount to
convert to Euro CFactor: real; // Conversion factor begin Amount := StrToFloat(InputEdit.Text);
case CurrRadioG.ItemIndex of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor
:= cfNLG; else CFactor := 1; // first radiobutton is for Euro end; Euro := Amount
/ CFactor; // ...and so on... |
3.
äôøåöãåøä ConvertShow
îùúîùú áîùúðä FStr
ùáå éäéå äòøëéí ùì îçøåæú äôåøîè
(øàä ùòåø 4 formatting string).
ð÷áò àú òøëä ëê ùúøàä 2 àå 4 ñôøåú òùøåðéåú áúåöàåú, áúìåú áëôúåø äøãéå ùðáçø
á- DecimalsRadioG.
ëîå ëï ùéí ìá ìùéîåù áîùúðä äâìåáìé Euro
åá÷áåòéí äâìåáìééí cfBEF,
cfFRE,
å- cfNLG (ô÷èåøé
ääîøä).
procedure TForm1.ConvertShow; var FStr: string; begin if DecimalsRadioG.ItemIndex
= 0 then FStr := '0.00' else FStr := '0.0000'; EuroLabel.Caption := FormatFloat(FStr,
Euro) + ' EURO '; BEFLabel.Caption := FormatFloat(FStr, Euro * cfBEF) + ' BEF/LUF';
FRFLabel.Caption := FormatFloat(FStr, Euro * cfFRF) + ' FRF '; NLGLabel.Caption
:= FormatFloat(FStr, Euro * cfNLG) + ' NLG '; end; |
4.
ãáø ìà äúçãù á- SetlabelInvisible,
àðçðå òãééï îùúîùéí áàåúä èëðé÷ä ùäåöâä áùéòåø 4.
äñãøä
ùì äåøàåú if…then…else…
î÷åððåú, áçéùåá ùì äîùúðä Euro
éëåìä ìääôê îòè àøåëä, àí ðåñéó ÷åã ðåñó òáåø òåã îèáòåú. òãéó ìäçìéó àú äøöó
äîñåøáì ùì if…then…else…
áô÷åãú case.
ëê äúëðéú äåôëú äøáä éåúø ÷øéàä (åâí îäéøä, àí úùéí àú äòøëéí ùì ä- selector
áñãø òåìä). àéï
ãøê èåáä éåúø ìäîçéù æàú îàùø ÷öú ÷åã: ô÷åãú
ä- case
îëéìä áéèåééí (áéèåéé ä- selector) ùúåöàúí áòøê îñåâ ñéãåøé. ùðé äñåâéí äñéãåøééí äéãåòéí
äí (character)
char å- integer,
àáì éùðí òåã ñåâéí ñéãåøééí øáéí. ò÷åá
àçø øùéîú äàôùøåéåú òáåø ä- selector.
ëì ùåøä îëéìä òøê, øùéîú òøëéí, èååç ùì òøëéí àå ùéìåáéí ùì äð"ì. äòøëéí
öøéëéí ìäéåú ÷áåòéí åééçåãééí. ëì àôùøåú îìååä á- statement. ìáñåó,
éëåìä ìäéåú ô÷åãú else,
ùîèôìú áëì äî÷øéí ùìà äåîøå òãééï. ëîåáï,
ùëì "statement" áøùéîä éëåìä ìäéåú áìå÷ ùì ô÷åãåú, î÷åððåú áéï
îéìåú äîôúç
begin
å-
end. òì
éãé ùéîåù áîáðä try…except, ðåëì ìèôì áúðàé äùâéàä áòöîðå åìäöéâ
äåãòú ùâéàä îùìðå. ãáø ëæä éãçå÷ àú äåãòú äùâéàä ùì ãìôé. ùðä
àú äôøåöãåøä CurrConvert ëãìäìï: ëàùø
äåøàä æå úéëùì áâìì è÷ñè ìà çå÷é á÷åôñú äòøéëä: àí
ëï, ääåøàä ùìàçø îëï îáåöòú. àí
àéï çøéâä îúàéîä ááìå÷ ä-except. ãìôé ðåèìú àú äôé÷åã åîøàä äåãòú ùâéàä îùì òöîä,
ëàùø àçøéä äúëðéú éëåìä ìäúçãù (áøåá äî÷øéí, ìôçåú, àí àéðä î÷ôéàä àú úëðéúê…). áî÷øä
ùìðå öøéëä ìäéåú çøéâú "Conversion", ëê ùúðàé “on EconvertError"
éúàéí. EconvertError äåà áéìè-àéï åéù òåã äøáä ëàìå: EdivByZero,
EzeroDivide, åëå'…(äñúëì á- Delphi’s Help system). áñìðâ
ùì îúëðúéí æä ð÷øà "ìùðåú àú ä- Z-order ùì àåáéé÷è âøôé" (ðéúï
ìùéí àåáéé÷èéí âøôéí àçã òì äùðé, ëê ðåöøåú ùëáåú). ðéúï ìùìåç øëéá åéæåàìé ìø÷ò
úçéìä òì éãé áçéøúå åàçø ëê òì éãé ìçéöä àú äàôùøåú Send to Back áúôøéè
ä- Edit. ùéèä àìèøðèéáéú: áçø àú äøëéá òí ëôúåø éîðé áòëáø åáçø
á- Send to Back áúôøéè äîäéø ùîåôéò. Copyright (C) 2000 Guido Festraets Webmaster
of the DelphiLand site: http://www.festra.com
procedure TForm1.ConvertShow; var FStr: string; begin if DecimalsRadioG.ItemIndex
= 0 then FStr := '0.00' else FStr := '0.0000'; EuroLabel.Caption := FormatFloat(FStr,
Euro) + ' EURO '; BEFLabel.Caption := FormatFloat(FStr, Euro * cfBEF) + ' BEF/LUF';
FRFLabel.Caption := FormatFloat(FStr, Euro * cfFRF) + ' FRF '; NLGLabel.Caption
:= FormatFloat(FStr, Euro * cfNLG) + ' NLG '; end;
ùéîåù
á- "CASE" áî÷åí á- IF – éí î÷åððéí
procedure TForm1.CurrConvert; var Amount, // Amount to convert to Euro CFactor:
real; // Conversion factor begin Amount := StrToFloat(InputEdit.Text); case CurrRadioG.ItemIndex
of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor := cfNLG; else CFactor
:= 1; // first radiobutton is for Euro end; Euro := Amount / CFactor; // ...and
so on...
var SelChar: char; // This is the selector ... begin ... case SelChar of 'a' :
statement1; 'b' : statement2; 'c', 'C', 'd' : statement3; // a LIST of values
'e'..'j' : statement4; // a RANGE of values 'k', 'K', 'l'..'z': statement5; //
a LIST and a RANGE end; ...
èéôåì
áùâéàåú ÷ìè
procedure TForm1.CurrConvert; var Amount, CFactor: real; begin try Amount := StrToFloat(InputEdit.Text);
case CurrRadioG.ItemIndex of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor
:= cfNLG; else CFactor := 1; end; Euro := Amount / CFactor; ConvertShow; SetLabelInvisible;
except { When there is a conversion error, we end up here, IMMEDIATELY after trying
to execute the function StrToFloat() } on EConvertError do MessageDlg('Illegal
input!', mtWarning, [mbOk], 0); end; end;Amount:=StrTot[FloaEdit.Text]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||