Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - probleme bei stringmanipulation


Matthias-K - So 24.09.06 11:20
Titel: probleme bei stringmanipulation
moin,

ich hab folgendes problem:

ich hab ne checklistbox, welche mit 8 einträgen gefüllt ist.

nun will ich zur schnellen verarbeitung die werte in einem string schreiben. bei aktivierung des ersten eintrages soll der string dann so aussehen: 10000000
wenn die ersten 2 ausgewählt sind, dann so: 11000000

das prinzip sollte klar sein. nur kommt bei folgendem quelltext etwas unerklärbares raus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
procedure TfrmUser.FlatButton1Click(Sender: TObject);
var
  savestr : string[9];
begin
  savestr := '00000000';

{  with qcheck do
  begin
    close;
    sql.clear;
    sql.add('insert into ')
  end;}

//  savestr := 'test';
//  savestr[1] := '1';

  if box.Checked[1then
    savestr[0] := '1'
  else
    savestr[0] := '0';
  if box.checked[2then
    savestr[1] := '1'
  else
    savestr[1] := '0';
  if box.Checked[3then
    savestr[2] := '1'
  else
    savestr[2] := '0';
  if box.checked[4then
    savestr[3] := '1'
  else
    savestr[3] := '0';
  if box.Checked[5then
    savestr[4] := '1'
  else
    savestr[4] := '0';
  if box.checked[6then
    savestr[5] := '1'
  else
    savestr[5] := '0';
  if box.Checked[7then
    savestr[6] := '1'
  else
    savestr[6] := '0';
  if box.checked[8then
    savestr[7] := '1'
  else
    savestr[7] := '0';

  showmessage(savestr);
end;


so, wenn ich abwechselnd einen der einträge aktiviere
kommt bei dem string folgendes raus:
10101000

also müll! die ersten 3 werden ignoriert. das hab ich durchs testen rausgefunden! allerdings kann ich keinen fehler sehen!

vieleicht sieht einer von euch etwas.

mfg matthias


p.s. es handelt sic um eine flatlistbox


wulfskin - So 24.09.06 12:48

Hallo,

die Felder von Strings fangen mit eins (1) an! Der erste Index der Liste ist jedoch null (0)
Außerdem: Vielleicht schomal über eine Schleife nachgedacht? Das könnte dir einige Abfragen ersparen!

Gruß Hape!