Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi a>=100 (https://www.delphipraxis.net/186978-%3D100.html)

DarthYoda 18. Okt 2015 20:09

Delphi-Version: 5

a>=100
 
Guten Abend,

Wie kann man das schreiben, wenn die Caption (alles Zahlenwerte) eines Labels a>=100 ist, das dann irgendwas passieren soll .

Danke im Vorraus

LG DarthYoda

Mavarik 18. Okt 2015 20:19

AW: a>=100
 
Warum hat den eine Caption einen Zahlenwert und nicht ein Integer?

DarthYoda 18. Okt 2015 20:19

AW: a>=100
 
Ja sry ich mein Integer

BUG 18. Okt 2015 20:34

AW: a>=100
 
Es gibt mehrere Wege, das anzugehen. Im Grunde läuft es immer darauf hinaus, die Bedingung da zu prüfen, wo du den Wert setzt.
Delphi-Quellcode:
if a >= 100 then
begin
  // tue etwas
end;
einLabel.caption := inttostr(a);

DarthYoda 18. Okt 2015 20:44

AW: a>=100
 
Ich glaub ich hab mich etwas falsch Ausgedrückt. Ich will, dass wenn die Label.Caption >=100 ist, dass dann beispielsweise die Caption vom Form geändert wird.

blawen 18. Okt 2015 20:50

AW: a>=100
 
Zitat:

Zitat von DarthYoda (Beitrag 1319010)
Ich glaub ich hab mich etwas falsch Ausgedrückt. Ich will, dass wenn die Label.Caption >=100 ist, dass dann beispielsweise die Caption vom Form geändert wird.

Irgendwie sehe ich Dein Problem nicht. Bei obigen Code musst Du nur noch den Inhalte (Caption) in einen Zahlenwert umwandeln...

Delphi-Quellcode:
if (IntToStr(Label1.Caption) >= 100) then

DarthYoda 18. Okt 2015 21:00

AW: a>=100
 
Danke jz sollte es klappen...

Tut mir leid wenn ich wie ein noob rüberkomme, aber ich hab delphi erst seit einigen Tagen.

LG

BUG 18. Okt 2015 21:06

AW: a>=100
 
Zitat:

Zitat von blawen (Beitrag 1319012)
Delphi-Quellcode:
if (IntToStr(Label1.Caption) >= 100) then

Und wann würde man das ausführen?
Geht natürlich mit einem Timer (quasi Polling); die sauberer Variante wäre imho der Zeitpunkt wo auch
Delphi-Quellcode:
Label1.caption
gesetzt wird (also quasi ein Push).


Aber das Problem scheint ja gelöst zu sein :wink:

blawen 18. Okt 2015 21:45

AW: a>=100
 
Zitat:

Zitat von BUG (Beitrag 1319014)
Und wann würde man das ausführen?

Würde ich pers. auch beim setzen überprüfen...
Und wenn es mehr als 1-2 Labels sind, würde ich es nochmals anders angehen - aber auf eine allgemeine Frage, kann man oft nur allgemein antworten. :glaskugel:

Luckie 19. Okt 2015 00:38

AW: a>=100
 
Generells Problem bei dir: Datenhaltung in einer visuellen Komponente. Stichwort: Trennung von der Darstellung und der Datenverarbeitung.

AlexII 19. Okt 2015 10:59

AW: a>=100
 
Zitat:

Zitat von Luckie (Beitrag 1319018)
Generells Problem bei dir: Datenhaltung in einer visuellen Komponente. Stichwort: Trennung von der Darstellung und der Datenverarbeitung.

Hast Du ein Beispiel wie man das getrennt hält?

p80286 19. Okt 2015 11:09

AW: a>=100
 
Na wenn die Ausgabe in einem Label z.B. der Inhalt der Variablen "RecordCount" ist, dann hast Du die Möglichkeit
Delphi-Quellcode:
if RecordCount >100 then Panel1.colour:=blue;
oder aber
Delphi-Quellcode:
if Strtoint(label1.caption)>100 then Panel1.Color:=blue;
Und wenn Du es halbwegs richtig machen willst, muß noch jede Menge Fehlerprüfung in die zweite Möglichkeit integriert werden. Dazu bin ich aber jetzt zu bequem.

Und wahrscheinlich ist die angestrebete Farbänderung sowieso davon abhängig welchen Wert "RecordCount" hat und nicht welchen Inhalt die Caption eines Labels.

Gruß
K-H

BUG 19. Okt 2015 13:33

AW: a>=100
 
Systematisiert ist dieser Ansatz in MVC (und verwandten Mustern: MVVM, ... ).

Mavarik 19. Okt 2015 15:38

AW: a>=100
 
Zitat:

Zitat von AlexII (Beitrag 1319048)
Zitat:

Zitat von Luckie (Beitrag 1319018)
Generells Problem bei dir: Datenhaltung in einer visuellen Komponente. Stichwort: Trennung von der Darstellung und der Datenverarbeitung.

Hast Du ein Beispiel wie man das getrennt hält?

Wenn ich dazu komme mache ich mal ein "richtiges" Beispiel...


Beispiel: (Bitte so nicht programmieren. Da fehlt noch ganz viel und auf man(n) nutzt keine festen Links... )

Form:

Delphi-Quellcode:
TForm1 = class(TForm)
    VorName: TEdit;
    PLZ: TEdit;
    Ort: TEdit;
    procedure AllChange(Sender: TObject);
  public
    Procedure Data2Form;
    Procedure Form2Data;
    { Public-Deklarationen }
  end;

 procedure TForm1.AllChange(Sender: TObject);
 begin
   Form2Data;
 end;

 Procedure TForm1.Data2Form;
 begin
   VorName.Text := StupidData.FVorName;
   PLZ.Text := StupidData.FPLZ;
   Ort.Text := StupidData.FOrt;
 end;

 Procedure TForm1.Form2Data;
 begin
   StupidData.FVorName := VorName.Text;
   StupidData.FPLZ := PLZ.Text;
   StupidData.FOrt := Ort.Text;
 end;
Und den Record...(Auch hier: Bitte nicht auf Form1 usw. zugreifen)
Soll nur ein Beispiel sein...

Delphi-Quellcode:
Type
   TStupidData = Record
                   FVorName : String;
                   FPLZ : String;
                   FOrt : String;
                   Procedure SetVorname(AValue : String);
                   Procedure SetPLZ(AValue : String);
                   Procedure SetOrt(AValue : String);
                   Property VorName : String write SetVorName;
                   Property PLZ : String write SetPLZ;
                   Property ORT : String write SetOrt;
                 end;

var
   StupidData : TStupiddata;

implementation

Procedure TStupidData.SetVorname(AValue : String);
begin
  FVorName := AValue;
  Form1.Data2Form;
end;

Procedure TStupidData.SetPLZ(AValue : String);
begin
  FPLZ := AValue;
  Form1.Data2Form;
end;

Procedure TStupidData.SetOrt(AValue : String);
begin
  FORT := AValue;
  Form1.Data2From;
end;

alleinherrscher 19. Okt 2015 15:52

AW: a>=100
 
Hallo mal wieder! Luckie hat es ja schon auf den Punkt gebracht, aber vielleicht bedarf es noch einer etwas "anfänger-gerechteren" Erklärung.

Zitat:

Zitat von DarthYoda (Beitrag 1319006)
Guten Abend,

Wie kann man das schreiben, wenn die Caption (alles Zahlenwerte) eines Labels a>=100 ist, das dann irgendwas passieren soll .

Danke im Vorraus

LG DarthYoda

Aus deiner Fragestellung kann man entnehmen, dass du denkst, in deiner Caption würden Zahlenwerte (Integers) gespeichert. Dies ist aber nicht der Fall. Wenn du in der Delphi Hilfe nachschaust, wirst du sehen, dass TCaption vom Typ String ist (http://docs.embarcadero.com/products..._TCaption.html). Das bedeutet, dass in deiner Caption also keine Zahlenwerte gespeichert werden, sondern ein String, also ein Text, der natürlich eine Zahl darstellen kann. Genauso gut könnte dort aber auch "Blub5" drin stehen. Wenn du dir als Programmierer sicher bist, dass in einem String ein Integer dargestellt ist, kannst du mit StrToInt diesen String in einen Interger umwandeln. Erst dann macht dein Vergleich a>=100 sinn. Ansonsten würdest du quasi Äpfel (Strings) mit Birnen (Integers) vergleichen.

Besten Gruß,
Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 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