![]() |
Case in Funktion soll Message ausgeben
Hallo,
Delphi-Quellcode:
So, das klappt auch alles wie es soll, aber, wenn Wert = 0, dann soll nur eine ShowMessage ausgegeben werden, das kann ich aber nicht ins case schreiben, was macht man da?
function TDataModule1.GetSXBusNumber: String;
var sByte: String; begin case Wert of 0: begin ; end; 1: begin ComPort1.WriteStr(bla); ComPort1.ReadStr(sByte, 2); end; 2: begin ComPort1.WriteStr(blabla); ComPort1.ReadStr(sByte, 2); end; end; //case Result := sByte; end; Grüsse, Daniel :hi: |
:wiejetzt:
Ich versteh dein Prolem nicht. Was spricht dagegen, den Aufruf von ShowMessage in den Anweisungsblock der Abfrage auf 0 zu schreiben? |
Sollte eigentlich wirklich ohne Probleme gehen. Wird wohl Zeit für ein bissle Schlaf ;-)
...:cat:... |
1. ShowMessage ist mir in der Unit nicht bekannt, da es sich dabei um ein Datenmodul handelt. Deswegen warscheinlich auch nciht die nötige Unit eingebunden.
2. Der Aufruf passiert in einer normalen Unit. Aber die Funktion ist eben in einem DatenModul. Oder anders gesagt, in einer "fremden" Unit, die nicht die normalen uses enthält. Ich könnte ja einfach irgend ein String übergeben und in der richtigen Unit, dann dort mit if wieder abfangen, dies wollte ich aber vermeiden. Die Funktion soll mir sozusagen nur eine Message ausgeben und dann nicht mehr machen, bzw. nichts zurück liefern. Grüsse, Daniel :hi: |
Okay. ShowMessage kommt, meines Wissen nach, aus der Unit Forms.
...:cat:... |
Anscheinend nicht:
Delphi-Quellcode:
Grüsse, Daniel :hi:
uses
SysUtils, Classes, //Standardmässig drin Forms, Windows, //Wird für die Delay-Prozedur benötigt CPort, //TComPort-Komponente IniFiles, //Wird für INI und Registry, //Registry gebraucht Messages; Nachtrag: Wobei Messages nur drin steht, weil ich dachte das ShowMessage daher kommt. Hät ja sein können. ;) War also nur ein Versuch! |
Dialogs!!!
Und hiermit verdonnere ich dich dazu deine Delphihilfe in Ordnung zu bringen. :warn: |
Zitat:
Es ist noch viel schlimmer geworden. Immer wenn ich Delphi schliesse, dann bekomme ich die Meldung, Fehler in RTL60.BPL, oder so ähnlich. Wird wirklich langsam Zeit! Dann werde ich mal DIalogs benutzen. Naja, wiedem auch sei, die Message kommt jetzt, allerdings bekomme ich einen RunTime, weil Result immernoch auf die Variable mit dem Inhalt der ComPort zugrefit, dies habe ich zwar mit einem Exit weg bekommen, jedoch bekomme ich nach meiner gewollten Message, noch eine, allerdings ohne Text. :shock: PS: Break geht im case sicher nicht. Grüsse, Daniel :hi: |
Hallo Daniel B,
wo kommt eigentlich "Wert" her? Du solltest auf jeden Fall sByte vorbesetzen:
Delphi-Quellcode:
function TDataModule1.GetSXBusNumber: String;
var sByte: String; begin sbyte := ''; case Wert of 0: begin ShowMessage('Der Wert war 0'); end; 1: begin ComPort1.WriteStr(bla); ComPort1.ReadStr(sByte, 2); end; 2: begin ComPort1.WriteStr(blabla); ComPort1.ReadStr(sByte, 2); end; end; //case Result := sByte; end; |
Hallo MrSpock,
Zitat:
Die setze ich zu gewissen Zeitpunkten mal auf 0, 1 oder 2. Ich hab zwar die Message drin, es klappt auch, allerdings habe ich noch eine kleinigkeit und zwar nachdem ich meine Message weggeklickt habe, kommt noch eine, allerdings ohne Text. Aber das ist nicht schlimm, den ich werde keine Message ausgeben, sondern einfach '0' zurück liefern. Das Problem dabei, dieses Datenmodul, soll ich vielen Programmen benutzt werden. Wenn mein Ober-Softi jetzt diese Funktion aus meiner Unit benutzt und da tauchen dann in Seinem Programm, irgend welche Messages auf von denen Er nichts weiss, dann ist es auch Blöd. Hab mich mit Ihm vorhin nochmal drüber unterhalten und sind dann zu dem Entschluss gekommen einfach 0 zurück zu liefern. Trotzdem Danke ich Euch für die (eine Kuh macht Muh, viele Kühe machen)Mühe. ;) Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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