I stedet for at erklære variablerne Qx inde i procedurerne, skal du erklærer dem som globale variable i fx. Form1. Vha. af Uses vil du kunne aflæse og tilskrive variablerne fra alle forms.
Jeg tror at du har glemt at ItemIndex er 0-baseret. D.v.s. at hvis første punkt er markeret, så er ItemIndex = 0, 2. punkt markeret giver ItemIndex = 1 osv.
okay. hvis jeg ikke ser meget feil.. da må du bytte om her:
Som jeg ser det har du programmert det på den måden at hvis ingen av radiogroupene er markert er verdien = 100 else 0 disse må du bytte om på..
begin If (RadioGroup1.ItemIndex > -1) and (RadioGroup2.ItemIndex > -1) and (RadioGroup3.ItemIndex > -1) and (RadioGroup4.ItemIndex > -1) then
begin If RadioGroup1.ItemIndex = 2 then Q1 := 100 <----- den skal være 0 Else Q1 := 0; <------- den skal være 100 (samme med alle de andre.) If RadioGroup2.ItemIndex = 1 then Q2 := 100 Else Q2 := 0; If RadioGroup3.ItemIndex = 3 then Q3 := 100 Else Q3 := 0; If RadioGroup4.ItemIndex = 1 then Q4 := 100 Else Q4 := 0;
IF (Radiogroup1.itemindex = -1) and (Radiogroup2.itemindex = -1) and (Radiogroup3.itemindex =-1) then begin {Skal ikke ske noget her} else Begin Q1:=100 Q2:=100 Q3:=100 Q4:=100 end;
Du bør og skal undgå globale variable! Delphi er objektorienteret og globale variable er tydlige tegn på, at programmet er skruet forkert sammen (din kode ovenfor understøtter dette).
Du kan i det mindste lave det som en array eller en record:
type TMyRecord = record Q1 : integer; Q2 : integer; .. end;
eller
var Q : array[0..7] of integer;
Et PS: Som Lanstorp også skrev: Du skal bruge 'div' i stedet for '/'. Den første operator laver en heltals division mens '/' konverterer heltallene til flydende decimaltal, dividerer dem og konverterer dem tilbage til heltal. Hvad tror du tager længst tid? En yderligere optimering koden ville være følgende:
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.