07. oktober 2003 - 13:00Der er
9 kommentarer og 1 løsning
Jeg må være blind
Nu har jeg stirret mig blind længe nok. Jeg har et array of integer og en Tstringlist. Jeg vil herefter checke om items's i arrayet er i min Tstringlist. Hvad gør jeg forkert ?
<snip>
var strlist : tstringlist; aint,i : integer; begin strlist := tstringlist.Create; strlist.Add('11'); strlist.Add('56'); strlist.Add('44'); strlist.Add('22'); memo1.Clear; begin for i := 0 to strlist.Count - 1 do
begin for AInt := low(myarray) to high(myarray) -1 do if strlist.IndexOf(inttostr(myarray[i])) = -1 then memo1.Lines.Add('match')
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Nedenstående kode giver no match, match, match, match hos mig.
procedure TForm1.Button1Click(Sender: TObject); var strlist : tstringlist; aint,i : integer; Match: Boolean; begin strlist := tstringlist.Create; strlist.Add('11'); strlist.Add('56'); strlist.Add('44'); strlist.Add('22'); memo1.Clear; for i := 0 to strlist.Count - 1 do begin Match := False; for AInt := low(myarray) to high(myarray) -1 do Begin if strlist.IndexOf(inttostr(myarray[i])) = -1 then Else Begin Match := True; Break; End; End; If Match Then memo1.Lines.Add('match') Else memo1.Lines.Add('no match') End; strlist.free; end;
for AInt := low(myarray) to high(myarray) -1 do skal vist være for AInt := low(myarray) to high(myarray) do som doc404 også gør opmærksom på :-)
Dernæst, så prøv at fjerne
for i := 0 to strlist.Count - 1 do
Derfor:
var strlist : tStringList; aint : Integer; begin strlist := tStringList.Create; strlist.Add('11'); strlist.Add('56'); strlist.Add('44'); strlist.Add('22'); memo1.Clear;
for AInt := low(myarray) to high(myarray) do if strlist.IndexOf(inttostr(myarray[AInt])) = -1 then memo1.Lines.Add('match') else memo1.Lines.Add('no match');
for I := 0 to strlist.Count - 1 do for AInt := low(myarray) to high(myarray) do if strlist[I] = inttostr(myarray[AInt]) then begin memo1.Lines.Add('match'); Break; end else if AInt = high(myarray) then memo1.Lines.Add('no match');
Snowballs løsning kommer til at virke den rigtige vej, hvis du udskifter for i := 0 to strlist.Count - 1 do begin med for i := strlist.Count - 1 downto 0 do begin :-)
athlon-pascal > som jeg sagde "jeg kan nu godt selv rette det" :-)
Tak for hjælpen
Stoney
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.