07. februar 2004 - 16:04Der er
6 kommentarer og 1 løsning
tæl tegn i memo1
min kode er som følger:
const genstandtael: set of Char = ['|']; var I: Integer; genstande: Integer; begin genstande := 0; for I := 1 to Length(Memo1) do begin if UpperCase(Memo1)[I] in genstandtael then begin genstande := genstande + 1; end; end; ShowMessage(IntToStr(genstande));
problemet er at den ikke kan "finde" Memo1... den ved simpelthen ikke hvad Memo1 indeholder, altså udskriver den 0 også selvom jeg har sat Memo1 til at indeholde 3 |'er
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
var Count : integer; st : string; begin Count := 0; st := Memo1.Text; // Might add UpperCase() for i := 1 to length(st) do if st[i] = '|' then inc(Count); // More hack'ish: inc(Count,integer(st[i] = '|')); result := Count + 3; end;
I dit eksempel bruger du length forkert. Den korrekte måde er length(Memo1.Text). Dernæst kalder du UpperCase ligeså mange gange som teksten er lang - det er ineffektivt. Desuden søger du efter '|', så det er unødvendigt. Sidst så har du opdaget set's - og det er også fint nok - bare ikke her.
Gu er min kode ikke fuld af fejl! Det eneste der manglede var en variabel ved navn 'i' (har testet det).
function TForm1.CountDelimiters : integer; var i, Count : integer; st : string; begin Count := 0; st := Memo1.Text; // Might add UpperCase() for i := 1 to length(st) do if st[i] = '|' then inc(Count); result := Count + 3; end;
eller nørdens variant:
function TForm1.CountDelimiters : integer; var i, Count : integer; st : string; begin Count := 0; st := Memo1.Text; // Might add UpperCase() for i := 1 to length(st) do inc(Count,integer(st[i] = '|')); result := Count + 3; end;
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.