11. februar 2002 - 12:23Der er
6 kommentarer og 4 løsninger
Hvorfor virker det ik'??
Hej alle! Et problem til:
Jeg har en TEdit hvor brugeren kan indtaste et ord. Et tryk på go knappen skal så Chekke om vært enkelt tal/bogstab er i en bestemt mængde i en konstant. Hvis TEdittens indhold er i const a så skal den tegne en cirkel et sted.
Hvis TEdittens indhold er i const b så skal den tegne en cirkel et andet sted o.s.v. det jeg har skrevet indtil videre ser sådan ud men det virker ikke:-( hvorfor?:
for i := 1 to length(Navn) do if pos(Navn[i],a) = 0 then Tal := 1; for i := 1 to length(Navn) do if pos(Navn[i],b) = 0 then Tal := 2; for i := 1 to length(Navn) do if pos(Navn[i],c) = 0 then Tal := 3; for i := 1 to length(Navn) do if pos(Navn[i],d) = 0 then Tal := 4; for i := 1 to length(Navn) do if pos(Navn[i],e) = 0 then Tal := 5; for i := 1 to length(Navn) do if pos(Navn[i],f) = 0 then Tal := 6; for i := 1 to length(Navn) do if pos(Navn[i],g) = 0 then Tal := 7; for i := 1 to length(Navn) do if pos(Navn[i],h) = 0 then Tal := 8; for i := 1 to length(Navn) do if pos(Navn[i],j) = 0 then Tal := 9;
if Tal = 1 then begin ICanvas.Canvas.Ellipse(5,0,38,31); ICanvas.Canvas.TextOut(16,0,'1'); end; if Tal = 2 then begin ICanvas.Canvas.Ellipse(70,0,103,31); ICanvas.Canvas.TextOut(80,0,'6'); end; if Tal = 3 then begin ICanvas.Canvas.Ellipse(135,0,168,31); ICanvas.Canvas.TextOut(145,0,'9'); end;
end;
end.
mening= hvis nu fx. der i editten står: ERIK så findes E'et i konstanten e R'et i konstanten i I'et i konstanten i og K'et i konstanten b
Så skal den alså tegne 4 ringe på de rigtige steder! i forhold til hvilken konstant de er i:-)
Nej du skal lave dine check om, du checker på om bogstavet IKKE står der, og hvis det er tilfældet sætter du TAL = 1-9, og da du checker på om 'K' står i J constanten får du vel sagten TAL = 9
begin Navn:= ENavn.Text; for i := 1 to length(Navn) do begin tal := 0; for j := 1 to 9 do if Pos(Navn[i],a[j] <> 0 then Tal := j; Case Tal of 0: ShowMessage('Fejl'); 1: begin ICanvas.Canvas.Ellipse(5,0,38,31); ICanvas.Canvas.TextOut(16,0,'1'); end; 2: begin ICanvas.Canvas.Ellipse(70,0,103,31); ICanvas.Canvas.TextOut(80,0,'6'); end; 3: begin ICanvas.Canvas.Ellipse(135,0,168,31); ICanvas.Canvas.TextOut(145,0,'9'); end; (*osv*) end; end; end;
For at få det sidste løst med at håndtere flere ville jeg bruge et temporært sted at gemme valgte eventuelt i en TStringList
nogenlunde således
for i := 0 to SL.Count - 1 do begin if strToint(Sl.Items[i]Tal = 1) then begin ICanvas.Canvas.Ellipse(5,0,38,31); ICanvas.Canvas.TextOut(16,0,'1'); end; end;
Const a: array[1..9] of string = ('ajsøAJSØ','bktåBKTÅ', osv.);
Der mangler iøvrigt en parantes i for-sætningen - den skal være:
for j := 1 to 9 do if Pos(Navn[i],a[j]) <> 0 then Tal := j;
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.