| Autor |
Beitrag |
TheD
      
Beiträge: 27
|
Verfasst: Mi 16.04.03 20:22
Hallöchen,
Quelltext 1: 2: 3: 4: 5: 6: 7:
| for iForCBPort := 0 to ComboBoxPort.Items.Count -1 do begin if not (ComboBoxPort.Items.Strings[iForCBPort] in ('COM1' or 'COM2' or 'COM3')) then begin ComboBoxPort.Items.Delete(iForCBPort); end; //if end; //IForCBPort |
Damit möchte ich alle Einträge aus einer ComboBox löschen, die nicht COM1-COM3 heissen.
Aber ich erhalte ich der if-Zeile folgende Meldung:
[Error] Unit2.pas(70): Operator not applicable to this operand type
Was mach ich den falsch?
_________________ Bis dannn... TheD!
Wer im Schlachthaus sitzt, sollte nicht mit Schweinen werfen!
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 16.04.03 20:28
Probiers mal mit einem Vergleich mit
Quelltext 1:
| ['COM1', 'COM2','COM3'] |
wenn ich mich noch recht entisinne, komme nur grad net annen Delphi-Rechner ran.
Gruß
|
|
TheD 
      
Beiträge: 27
|
Verfasst: Mi 16.04.03 20:32
Dann heisst es:
[Error] Unit2.pas(70): Ordinal type required
[Error] Unit2.pas(70): Incompatible types: 'Integer' and 'String'
Weider in der if Zeile.
_________________ Bis dannn... TheD!
Wer im Schlachthaus sitzt, sollte nicht mit Schweinen werfen!
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Mi 16.04.03 22:17
Der in-Operator gibt nur für Sets. Und ein Set ist auf ordinale Typen (Char, Integer aller Art) beschränkt. Das was du vor hast geht aus diesem Grund nicht, weil ein String eben kein einfacher Typ ist sondern ein komplexer. Das Selbe Problem ergibt sich bei der case of-Anweisung.
Man kann sich jedoch eine Abhilfe verschaffen, indem man die offenen Array Parameter ausnützt.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| function IsStrIn(const Value: string; const Args: array of string): Boolean; var i: Integer; begin Result := True; for i := 0 to High(Args) do if Args[i] = Value then Exit; Result := False; end; |
Quelltext 1: 2: 3:
| begin if IsStrIn(ComPort, ['COM1', 'COM2', 'COM3']) then ... end; |
_________________ Ist Zeit wirklich Geld?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 16.04.03 22:43
| Zitat: | | weil ein String eben kein einfacher Typ ist sondern ein komplexer |
Besser beschrieben wäre es mit "kein aufzählbarer", komplex kann zu vieles heißen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Do 17.04.03 13:26
Hallo TheD!
Hat zwar nix mit deinem Thema zu tun, aber du kannst nicht mit einer For-To-Do Schleife Items aus der Liste löschen, da, sobald ein Item gelöscht wurde, die Größe der Liste kleiner wird und du am Ende ein Fehler bekommst, da das Item X gar nicht mehr existiert.
Deshalb nimm für sowas einen While/Repeat-Schleife, bei der du I nur erhöhst, wenn das Item nicht gelöscht wurde.
Gruß wulfskin!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 17.04.03 14:13
@wulfskin: nicht ganz richtig. Du kannst Die FOR-Schleife beim höchsten Index starten lassen und bis 0 laufen lassen, dann geht das!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Do 17.04.03 15:49
| Peter Lustig hat folgendes geschrieben: | | @wulfskin: nicht ganz richtig. Du kannst Die FOR-Schleife beim höchsten Index starten lassen und bis 0 laufen lassen, dann geht das! |
Stimmt  !
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
TheD 
      
Beiträge: 27
|
Verfasst: Fr 18.04.03 15:27
Oh, ja stimmt, hab da gar nciht dran gedacht. Danke für den Tip.
Frohe Ostern noch. 
_________________ Bis dannn... TheD!
Wer im Schlachthaus sitzt, sollte nicht mit Schweinen werfen!
|
|