Avatar billede soren23hansen Nybegynder
04. september 2002 - 21:13 Der er 13 kommentarer og
1 løsning

Forløbende nummer

Hej, jeg har en knap som skal opdatere et nummer (lægge en til) når der trykkes på den og vise dette tal i en edit box. Har fx. prøvet med Edit2.text:= IntToStr(1 + (StrToInt(Edit2.text))); men det virker ikke.
Avatar billede snowball Novice
04. september 2002 - 21:18 #1
Nedentående virker:

var
  nummer: Integer;
begin
  nummer := StrToInt(Edit1.Text);
  Inc(nummer);
  Edit1.Text := IntToStr(nummer);
end;

Snowball
Avatar billede stoney Nybegynder
04. september 2002 - 21:21 #2
eller
edit1.Text := inttostr(strtoint(edit1.Text)+1);


Stoney
Avatar billede hermandsen Juniormester
04. september 2002 - 21:22 #3
>>soren23hansen
Sæt lige point antallet lidt ned før du accepterer et svar... 15 point er rigeligt til sådan et spørgsmål...

Er du forresten sikker på at der står et tal i Edit2.Text? Hvis der ikke gør kan den jo ikke konvertere...

Prøv i stedet:

try
  Edit2.Text := IntToStr(1+StrToInt(Edit2.Text));
except
  ShowMessage('Skriv lige et rigtigt tal i Edit2 først, tak!');
end;
Avatar billede hermandsen Juniormester
04. september 2002 - 21:22 #4
Du har desuden en parantes for meget i dit eksempel! ;)
Avatar billede soren23hansen Nybegynder
04. september 2002 - 21:25 #5
Den kommer med denne besked Edit1 is not a valid integer value
Avatar billede hermandsen Juniormester
04. september 2002 - 21:26 #6
Øhhh, i dit eksempel kan jeg ikke se at der står Edit1 nogen steder!!! :)
Avatar billede snowball Novice
04. september 2002 - 21:30 #7
soren23hansen: Det gør den fordi der står bogstaver og ikke et tal når du prøvet at konvertere fra String til Integer !

Snowball
Avatar billede hermandsen Juniormester
04. september 2002 - 21:35 #8
Ellers så prøv det her:

var
  I, Code: Integer;
  S: String;
begin
  S := Edit2.Text;
  Val(S, I, Code);
  if Code = 0 then
  begin
    Inc(I);
    Edit2.Text := IntToStr(I);
  end
  else
    ShowMessage('Du behøver da vist ikke lære alfabetet, men tallene burde du kigge lidt mere på!');
end;
Avatar billede soren23hansen Nybegynder
04. september 2002 - 22:05 #9
Jeg undskylder at jeg ikke har fået sagt tydligt nok hvad det er jeg mener og at jeg har sat for høje point. Jeg skal ikke selv skrive starte værdien
. Har prøvet med dette men ved ikke om der findes "null" i delphi og om det er sådan man sætter startværdien til 0.
if edit2.text = null
Edit2.text:= IntToStr(0);
else
edit2.Text := inttostr(strtoint(edit2.Text)+1);
Avatar billede hermandsen Juniormester
04. september 2002 - 22:21 #10
Du får lige noget kode med et par kommentarere eller 2! ;)

//Nu skal vi prøve noget. Sker der en fejl, så stopper programmet ikke bare, men kører videre efter at det enten har færdiggjort finally eller except
try
  Edit2.Text := IntToStr(StrToInt(Edit2.Text)+1); //Her kan vores fejl opstå
except //Hvis der sker en fejl, så køres det som står inden for except
  Edit2.Text:= '0'; //Efter som der er sket en fejl sætter vi bare teksten i edit2 til at være '0'
end; //og de levede lykkeligt til deres dages ende! ;)
Avatar billede soren23hansen Nybegynder
04. september 2002 - 22:40 #11
Til hermandsen
Mange tak men programmet går ned... men der står 0 næste gang man køre det. Jeg kan godt se hvad du mener med except og det burde vel også virke. Jeg har prøvet at teste om værdien er null med en if sætning for at få den til at sætte til 0 hvis der ingen værdi er men kan ikke få det til at virke.
Avatar billede hermandsen Juniormester
04. september 2002 - 22:48 #12
Prøv lige at smide hele proceduren her ind, så kigger vi på den! ;)
Avatar billede soren23hansen Nybegynder
04. september 2002 - 22:57 #13
procedure TForm1.Button2Click(Sender: TObject);
begin
if Edit2.text = null
Edit2.Text:= '0'; //Her melder den fejl
else
Edit2.Text := IntToStr(StrToInt(Edit2.Text)+1);
end. //Slutter denne "end" if sætningen eller skal den ikke være 
        der.
end;
end.
Avatar billede hermandsen Juniormester
04. september 2002 - 23:11 #14
Nej, den melder faktisk fejl før...

I Delphi er der ikke noget der hedder null, jeg tror faktisk det er nil du tænker på, og det har egentlig ikke noget med sagen at gøre! :)

En tom streng hedder bare ''

I Delphi angiver man strenge med '<streng>' 'Hey, her har vi en streng!'.

Jeg kommenterer lige din procedure først...

procedure TForm1.Button2Click(Sender: TObject);
begin
if Edit2.text = null //Hvis det her var rigtigt skulle der være et semikolon for enden.
Edit2.Text:= '0'; //Her melder den fejl. //Ja, men grunden til at den melder fejlen der er på grund af en fejl fra forrige linie.
else //For at have else, skal du også have et then. Det hedder "if, then, else" i Delphi.
Edit2.Text := IntToStr(StrToInt(Edit2.Text)+1); //Den her burde faktisk være god nok, med mindre der sker en konverteringsfejl fordi at Edit2.Text f.eks. indeholder et bogstav.
end. //Slutter denne "end" if sætningen eller skal den ikke være 
        der.
    //Der skal faktisk først være "end." (med punktum) til sidst, alle andre end's skal være "end;" (med semikolon). Dog skal der i dette tilfælde ikke være noget end, da du ikke har et begin ud over det der starter proceduren...
end; //Det her end; slutter proceduren
end. //Slut på den unit


Jeg vil anbefale dig at låne Delphi 4 Programmering af Per Amdal Steffensen på biblioteket. Den er utrolig godt skrevet og før du ved af det smider du rundt omkring dig med pointere, dll-filer og dynamiske array'es...

Jeg har faktisk lige lånt den da jeg havde brug for at få opdateret min viden omkring OOP (Objekt Orienteret Programmering), og selv om det er anden gang jeg læser den, synes jeg stadig det er god og lærrig bog... Den er virkelig et "must" til alle danske Delphi-programmørere, og spørg bare hvor mange af Ekspertens Delphi-brugere der ikke har haft fingrene i den bog... :)

Hvis du vil kan du kontakte mig på ICQ eller MSN, så skal jeg gerne hjælpe dig videre med dit projekt... Du kan finde mine info under min bruger-profil! ;)

//hermandsen
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