![]() |
Brauche Nachhilfe in Case
Hi,
ich habe 3-4 solcher abfragen/änderungen. Sowas lässt sich doch bestimmt mit case einfacher lösen. Ich verstehe es einfach nicht. Vielleicht kann mir jemand helfen. Vielen Dank.
Code:
if MainFormMC2004.ComPort.Port = 'COM1' then
begin ComboBoxPort.ItemIndex:=0; end else if MainFormMC2004.ComPort.Port = 'COM2' then begin ComboBoxPort.ItemIndex:=1; end else if MainFormMC2004.ComPort.Port = 'COM3' then begin ComboBoxPort.ItemIndex:=2; end else if MainFormMC2004.ComPort.Port = 'COM4' then begin ComboBoxPort.ItemIndex:=3; end else if MainFormMC2004.ComPort.Port = 'COM5' then begin ComboBoxPort.ItemIndex:=4; end else if MainFormMC2004.ComPort.Port = 'COM6' then begin ComboBoxPort.ItemIndex:=5; end else if MainFormMC2004.ComPort.Port = 'COM7' then begin ComboBoxPort.ItemIndex:=6; end else if MainFormMC2004.ComPort.Port = 'COM8' then begin ComboBoxPort.ItemIndex:=7; end; |
Hallo Daniel,
bad news :cry: : case benötigt einen Selector, der ein ordinaler Typ sein muss, STRINGs werden nict unterstützt. Hättest du einen eigenen Aufzählungstyp:
Code:
könntest du case verwenden.
type
tComPorts=(COM1, COM2, COM3); |
Ich hab keine Aufzählung. Naja, trotzdem Danke.
|
Hallo Daniel,
als Nachtrag: du könntest entweder eine Funktion schreiben, die den Index zurückgibt und dann diese bei der Zuweisung aufrufen:
Code:
wobei GetIndex im OPrinzip wie in deinem Code definiert wird. Eventuell ließe sich auch die Tag Eigenschaft von ComPort benutzen. Wenn es dir gelänge das Tag immer mit dem Inhalt von "Port" zu synchronisieren. Dann wäre deine Zuweisung:
ComPortBox.ItemIndex := GetIndex(MainFormMC2004.ComPort.Port);
Code:
Leider kenne ich die ComPort Komponente nicht und kann deshalb keine tieferen Details zeigen.
ComPortBox.ItemIndex := MainFormMC2004.ComPort.Tag
|
Im diesem speziellen Fall könntest Du folgendes tun
Code:
case IntToStrDef(Copy(MainFormMC2004.ComPort.Port, 3, 2), -1) of
-1:; //Fehler 1: Port 1 2: Port 2 3: Port 3 ... end; |
Moin Daniel B,
oder so:
Code:
ComboBoxPort.ItemIndex := StrToInt(AnsiLastChar(MainFormMC2004.ComPort.Port))-1;
|
Zitat:
|
Zitat:
Dieses AnsiLastChar macht mir zuschaffen. Call AnsiLastChar to obtain locate the last character in a string. This function supports multi-byte character sets (MBCS). :?: :roll: :?: |
AnsiLastChar gibt die Letzte stelle deines Strings aus. Also hier: com1 also 1 und dann mit StrtoInt nach interger und noch -1 und schon kann man direkt zuweisen.
|
Zitat:
|
Was steht da ????? :twisted: :twisted: :lol:
|
multi-byte character sets (MBCS) = WideChar, das hatte ich nicht kapiert.
Danke euch. |
Träum' ich, oder hat da mal was anderes gestanden :oops:
|
Hasch ja recht. Hatte noch mal glück, dass ich mit dem Editieren schneller war :lol: :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz