Mit aktuelle problem er at jeg har en variabel indeholdende f.eks "checkbox1.checked". Spørgsmålet er så om hvordan jeg lettest kan bruge dette i en sammenligning (if checkbox1.checked=1 then...). Jeg kan sagtens omgå problemet på en række måder, men jeg støder på det igen og igen, så jeg ønsker en løsning svarende til $$variabel=1 i php. Altså hvis indholdet af variablen evalueret er lig 1...
procedure TForm1.Button1Click(Sender: TObject); var i : integer; location : string; begin for i:=1 to 34 do begin location := 'checkbox'+inttostr(i)+'.checked'; showmessage(location); if (location)=1 then begin edit1.text:=edit1.text + inttostr(i) + 'a=1&'; end else begin edit1.text:=edit1.text + inttostr(i) + 'a=0&'; end; end; edit1.text[170]:=' '; end;
end.
If parametren er ugyldig da den sammenligner strengen med 1.... Jeg søger en metode, der får den til at sammenligne, den egenskab strengen henviser til, med 1. :) (Der er enkle måder at omgås det på her, men jeg kunne godt bruge en sådan metode i mange andre tilfælde.)
I php ville man kunne gøre således: $variabel1="et eller andet"; $variabel2="variabel1"; $variabel3=$$variabel2;
Nu er variabel1=variabel3, variabel2 er altså bare brugt som pointer.
Der er flere muligheder. En ofte benyttet metode er, at padle igennem controller (components) for en given parent. Har du f.eks. placeret 34 checkbox'e på en form, kan du referere til dem sådan her:
idx: integer; C: TCheckBox;
for idx := 0 to DinForm.ControlCount - 1 do begin if DinForm.Controls[idx] is TCheckBox then begin C := TCheckBox(DinForm.Controls[idx]); if C.Checked then .... end; end
Dette svarer til dine PHP-pointer operationer (som jeg i øvrigt ikke er bekendt med). Jeg er fog ikke helt klar over, om det er det svar du ønsker..?
Synes godt om
Ny brugerNybegynder
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.