AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Case in Funktion soll Message ausgeben

Ein Thema von Daniel B · begonnen am 9. Mär 2003 · letzter Beitrag vom 10. Mär 2003
Antwort Antwort
Daniel B
(Gast)

n/a Beiträge
 
#1

Case in Funktion soll Message ausgeben

  Alt 9. Mär 2003, 23:37
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
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 9. Mär 2003, 23:43

Ich versteh dein Prolem nicht. Was spricht dagegen, den Aufruf von ShowMessage in den Anweisungsblock der Abfrage auf 0 zu schreiben?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 9. Mär 2003, 23:58
Sollte eigentlich wirklich ohne Probleme gehen. Wird wohl Zeit für ein bissle Schlaf

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 10. Mär 2003, 00: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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 10. Mär 2003, 00:05
Okay. ShowMessage kommt, meines Wissen nach, aus der Unit Forms.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 10. Mär 2003, 00: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

Nachtrag: Wobei Messages nur drin steht, weil ich dachte das ShowMessage daher kommt. Hät ja sein können. War also nur ein Versuch!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 10. Mär 2003, 04:48
Dialogs!!!

Und hiermit verdonnere ich dich dazu deine Delphihilfe in Ordnung zu bringen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#8
  Alt 10. Mär 2003, 07:47
Zitat von Luckie:
Und hiermit verdonnere ich dich dazu deine Delphihilfe in Ordnung zu bringen.
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.
PS: Break geht im case sicher nicht.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9
  Alt 10. Mär 2003, 08: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;
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#10
  Alt 10. Mär 2003, 12:51
Hallo MrSpock,
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 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