Avatar billede zer0c00l Juniormester
21. august 2002 - 21:01 Der er 7 kommentarer og
4 løsninger

if then else (delphi noob)

Hejsasa..

Jeg sidder lige og læser i en tutorial og der er noget jeg ikke forstår.. HLÆÆÆLP :)

Der står:

Man kan naturligvis lave flere betingelser i en sætning, det kan f.eks. se sådan her ud:

if Sætning sand then
  Gør noget
else
  if Sætning sand then
    Gør noget andet
else
  if Sætning sand then
    Gør noget tredje


Jeg har prøvet at lave en klap med denne kommando:

  if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed1'
  else
    if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed2'
  else
    if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed3'
  else
  Label1.Caption := 'Label1';

Men lige meget hvor mange gange man trykker på knappen skifter "Label1" kun mellem "Label1" og "Mulighed1".. Jeg troede at den ville skifte mellem mulighed 1, 2 og 3 i vilkårlig rækkefølge når man trykkede på knappen, men nej nej... Hvad er så meningen med det??

Håber I forstår..
Avatar billede niels_kristian Nybegynder
21. august 2002 - 21:03 #1
det er vel fordi at label1.caption er = Label1 og der for kommer den kun til:

  if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed1'
Avatar billede pellelil Nybegynder
21. august 2002 - 21:05 #2
if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed1'
  else
    if Label1.Caption = 'Mulighed1' then
  Label1.Caption := 'Mulighed2'
  else
    if Label1.Caption = 'Mulighed2' then
  Label1.Caption := 'Mulighed3'
  else
  Label1.Caption := 'Label1';
Avatar billede niels_kristian Nybegynder
21. august 2002 - 21:05 #3
hvis du vil have et eller andet som ikke skal være den samme så kik her:
http://www.eksperten.dk/spm/162496
Avatar billede niels_kristian Nybegynder
21. august 2002 - 21:06 #4
så tager det et tilfældigt tal
21. august 2002 - 21:07 #5
Uden at have noget kendskab til delphi, tror jeg nok jeg kan give et hint (fjen selv End if hvis det ikke skal være på, og indsæt else - det finder du ud af :) ):


if Label1.Caption = 'Label3' then
  Label1.Caption := 'Label1'
End if

if Label1.Caption = 'Label1' then
  Label1.Caption := 'Label2'
End if

if Label1.Caption = 'Label2' then
  Label1.Caption := 'Label3'
End if

(husk at sidte label1 caption til Label3 i din form_load() eller hvad det nu hedder).

men nu burde det køre i række følge, kan du se det?

Er label1 caption 'Label3' bliver den til 'Label1' er den et bliver den til 'Label2' o.s.v.

/Casper www.enter-s.dk
Avatar billede pellelil Nybegynder
21. august 2002 - 21:11 #6
Du kan gøre det endnu nemmere ved at lade eksempelvis en Integer styre din label.

begin
  IntVar := IntVar + 1;
  if IntVar = 4 then IntVar := 1;
  Case IntVar of
    1 : Label1.Caption := 'Mulighed1';
    2 : Label1.Caption := 'Mulighed2';
    3 : Label1.Caption := 'Mulighed3';
    4 : Label1.Caption := 'Mulighed4';
  end;
end;
Avatar billede zer0c00l Juniormester
21. august 2002 - 22:49 #7
I skal lige vide at jeg er totalt fucked-up-noob til delphi og fatter ikke en skid :) Jeg vil bare gerne vide hvad meningen med den tutorial er nå den kun vælger mulighed 1 hele tiden..
Avatar billede pellelil Nybegynder
22. august 2002 - 08:09 #8
Hvor "totalt f*cked-up-noob" er du? "IF" betyder "Hvis" og når du i alle dine IF's skriver " if Label1.Caption = 'Label1'", så har du et problem. I dit eksempel kan din caption have 4 forskellige værdier så hvis vi skulle kigge på pseudo-koden ville det være noget i retning af :
<SNIP>
  Hvis Caption er "Mulighed 1"
    så skal Caption være "Mulighed 2"
  ellers Hvis Caption er "Mulighed 2"
    su smkal Caption være "Mulighed 3"
  ellers Hvis Caption er "Mulighed 3"
    så skal Caption være "Mulighed 4"
  ellers skal Caption være "Mulighed1"
</SNIP>
Avatar billede dcgeek Nybegynder
22. august 2002 - 08:31 #9
Hvis du vil have den til at skifte tilfældigt, skal du gøre således:

var i : integer;
begin
  i := random(3)+1;
  if i = 1 then
  label1.caption := 'Mulighed1';
  if i = 2 then
  label1.caption := 'Mulighed2';
  if i = 3 then
  label1.caption := 'Mulighed3';
end;
Avatar billede assassin Juniormester
22. august 2002 - 08:59 #10
if Label1.Caption = 'Label1' then // hvis dette er rigtigt så
  Label1.Caption := 'Mulighed1'  // sættes captionen til 'Mulighed1'
  else
    if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed2'
  else
    if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed3'
  else
  Label1.Caption := 'Label1';

Det har intet at gøre med hvor mange gange du trykker på knappen.

Hvis den første linie: if Label1.Caption = 'Label1' then er rigtig så udføres Label1.Caption := 'Mulighed1' og så går den ud og kontrollere ikke de andre muligheder.

Jeg går udfra at label.caption er 'label1' og derfor kommer den ikke videre.

Prøv at sætte en Label2, og Label3 på din form og 2 ekstra knapper.
Alle 3 knapper skal udføre nedenstående kode:

if Label1.Caption = 'Label1' then
  Label1.Caption := 'Mulighed1'
  else
    if Label1.Caption = 'Label2' then
  Label1.Caption := 'Mulighed2'
  else
    if Label1.Caption = 'Label3' then
  Label1.Caption := 'Mulighed3'
  else
  Label1.Caption := 'Anden mulighed';

Jeg håber det hjælper på forståelsen.
Avatar billede zer0c00l Juniormester
22. august 2002 - 11:56 #11
Tror det var det pellelil skrev jeg ville frem til :) Der e rbare ikke nogen videre mening med det idet den jo ikke tager dem i vilkårlig rækkefølge, men hv fanden :) Mange tak for hjælpen alle..
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