Autor Beitrag
Projekt Messdaten
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.10.02 08:20 
Hallo,
ich hab ein Problem mit einer ListBox. Ich möchte in ein Edit-Feld den Suchstring eingeben und wenn er ihn in der ListBox (Anzeige) findet, soll er die Zeile (Spalte 60 bis 62) in eine andere ListBox (PufferListBox) kopieren. Danach den Hex-Wert in einen Dezimal-Wert umwandeln (mit der function hextoint) und in eine ListBox (PositionListBox) schreiben. Bei meinen Programm führt er es aus, aber er kopiert alle Zeilen, auch die in der der Suchstring nicht vorkommt. Kann mir da vielleicht jemand helfen.
Danke, danke, danke
ausblenden 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:
procedure TMessdaten.Edit1KeyPress(Sender: TObject; var Key: Char); 
var 
i : integer; 
s : string; 
begin 
  if key=#13 then begin 
  key:=#0; 
  PositionPanel.visible := true; 
  PositionListBox.Clear; 
  i := 0; 
  while i < Anzeige.Items.Count do begin 
    s := IntToStr(Anzeige.Items.IndexOf(Edit1.Text)); 
    Anzeige.ItemIndex := StrToInt(s); 
    if pos(s , Anzeige.Items[i]) = 0  then 
    PufferListBox.Items.Add(Copy(Anzeige.Items[i], 60, 2)); 
    inc(i); 
  end; 
  i := 0; 
  while i < self.PufferListBox.Items.Count do begin 
    PositionListBox.Items.Add(IntToStr(hextoint(PufferListBox.Items.Strings[i]))); 
    inc(i); 
  end; 
  PufferListBox.Clear; 
  end; 
end;

mfg
Daniel
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 02.10.02 09:58 
Hi
ich versteh das zwar net so ganz was du mit PufferListBox machst, aber ich würde das so machen (nicht getestet):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TMessdaten.Edit1KeyPress(Sender: TObject; var Key: Char); 
var 
i : integer; 
s : string; 
begin 
 if key=#13 then begin 
    key:=#0; 
    PositionPanel.visible := true; 
    PositionListBox.Clear; 
  
   i := Anzeige.Items.IndexOf(Edit1.Text);
   if i >= 0 then begin
     s := Copy(Anzeige.Items[i], 60, 2);
     PufferListBox.Items.Add(s);
     PositionListBox.Items.Add(HexToInt(s));
   end;
 end;
end;

So wie ich das sehe, hast du PufferListBox nur verwendet um den Kopiervorgang zu komplizieren :shock:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Projekt Messdaten Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.10.02 10:10 
Hallo
es erscheint leider nur eine leere ListBox.

funktioniert leider nicht.

mfg
Daniel

P.S.: Vor HexToInt muss noch IntToStr stehen.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 02.10.02 10:21 
Projekt Messdaten hat folgendes geschrieben:

P.S.: Vor HexToInt muss noch IntToStr stehen.

Richtig. Setzen eins :roll:
Projekt Messdaten hat folgendes geschrieben:

es erscheint leider nur eine leere ListBox.

Dann wird er den String aus deinem Edit nicht gefunden haben. Wenn du mit IndexOf suchen willst muss der eingegebene String natürlich mit kompletten Eintrag in der Anzeige-Listbox übereinstimmen. Bei der Länge deiner Einträge (> 62 Zeichen) wird das nicht ganz einfach sein. Oder gibst du hier nur einen Teilstring ein?

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Projekt Messdaten Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.10.02 10:27 
Ja, ich will nur einen Teilstring eingeben.
Funktioniert das so nicht, oder was?

mfg
Daniel
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 02.10.02 11:40 
Dann geh mit einer for-Schleife durch die Items und vergleiche mit pos ob der Teilstring vorkommt.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 02.10.02 12:21 
Nach den Teilstrings suchen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TMessdaten.Edit1KeyPress(Sender: TObject; var Key: Char); 
var 
i : integer; 
s : string; 
begin 
if key=#13 then begin 
    key:=#0; 
     PositionPanel.visible := true; 
     PositionListBox.Clear; 
    
   for i := 0 to Anzeige.Items.Count - 1 do begin 
     if Pos(Edit1.Text, Anzeige.Items[i] > 0 then begin 
        s := Copy(Anzeige.Items[i], 60, 2); 
        PufferListBox.Items.Add(s); 
        PositionListBox.Items.Add(IntToStr(HexToInt(s))); 
     end;
   end; 
end; 
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Projekt Messdaten Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.10.02 13:46 
:D Klasse,
Danke Lothar. Jetzt funktioniert es. :D

Noch ne kleine Frage. :?: Kann mir vielleicht jemand sagen wie es möglich ist, jede Zeile einer ListBox durchzunummerieren.
Also vor jeden Eintrag, den ich mit einer for-Schleife ermittle (i),
sollte sich die Zahl ebenfalls mit z.B. inc(i) erhöhen.

mfg
Daniel