Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Case in Funktion soll Message ausgeben (https://www.delphipraxis.net/3387-case-funktion-soll-message-ausgeben.html)

Daniel B 9. Mär 2003 22:37


Case in Funktion soll Message ausgeben
 
Hallo,

Delphi-Quellcode:
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;
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?

Grüsse, Daniel :hi:

Chewie 9. Mär 2003 22:43

:wiejetzt:
Ich versteh dein Prolem nicht. Was spricht dagegen, den Aufruf von ShowMessage in den Anweisungsblock der Abfrage auf 0 zu schreiben?

sakura 9. Mär 2003 22:58

Sollte eigentlich wirklich ohne Probleme gehen. Wird wohl Zeit für ein bissle Schlaf ;-)

...:cat:...

Daniel B 9. Mär 2003 23:02

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:

sakura 9. Mär 2003 23:05

Okay. ShowMessage kommt, meines Wissen nach, aus der Unit Forms.

...:cat:...

Daniel B 9. Mär 2003 23:07

Anscheinend nicht:
Delphi-Quellcode:
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;
Grüsse, Daniel :hi:

Nachtrag: Wobei Messages nur drin steht, weil ich dachte das ShowMessage daher kommt. Hät ja sein können. ;) War also nur ein Versuch!

Luckie 10. Mär 2003 03:48

Dialogs!!!

Und hiermit verdonnere ich dich dazu deine Delphihilfe in Ordnung zu bringen. :warn:

Daniel B 10. Mär 2003 06:47

Zitat:

Zitat von Luckie
Und hiermit verdonnere ich dich dazu deine Delphihilfe in Ordnung zu bringen. :warn:

Hmm, na gut.
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:

MrSpock 10. Mär 2003 07:18

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;

Daniel B 10. Mär 2003 11:51

Hallo MrSpock,
Zitat:

Zitat von MrSpock
wo kommt eigentlich "Wert" her?

Das ist eine globale Intergervariable.
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 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz