AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Befehl 'round' macht schlapp

Ein Thema von joelnbp · begonnen am 22. Jan 2014 · letzter Beitrag vom 24. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2      
joelnbp

Registriert seit: 16. Mär 2013
Ort: Berlin, Berlin
9 Beiträge
 
FreePascal / Lazarus
 
#1

Befehl 'round' macht schlapp

  Alt 22. Jan 2014, 20:05
Delphi-Version: 5
Hallo,

ich habe leider wieder ein Frage, und hoffe die Lösung unterliegt nicht einen ärgerlichen 'Schusselfehler'.

Um Punktezahlen in einen Schulnoten-System anzeigen zu lassen, fand ich eine Formel:
  • (Erreichte Punktzahl * 5) / Gesatmmtpunktzahl - 6
Das Minus sollte man sich weg denken - ich habe es einfach mal duch (-a)-(-b) verschwinden lassen ;D.
Das ganze habe ich in einem separaten Projekt gemacht.
Der Code sieht so aus:

label3.caption:=FloatToStr(round((-((StrToFloat(label1.caption) *5) / StrToFloat(Label2.caption))-(-6)))); Es funktionier wunderbar!
Doch dann will ich es in mein eigentliches Projekt einfügen, und...FEHLER...
Der Code hat nur andere Namen:

panel22.caption:=FloatToStr(round((-((StrToFloat(panel5.caption) *5) / StrToFloat(panel6.caption))-(-6)))); Ich kann den Befehl round in diesem Projekt nicht benutzen. Egal wie. Das verstehe ich einfach nicht. Provisorisch habe ich darunter die selbe Rechnung ohne Rundung, doch da scheitert die Ausgabe natürlich bei Kommastellen.
Auf den Bildschirmfoto sollte das zu sehen sein (bitte meinen restlich zu sehenden Quelltext nicht auslachen ).
Wieso? Kann mir jemand helfen? Gibt es vielleicht auch eine ganz andere Möglichkeit? Wenn ich die Suchmaschine nutze, komme ich nur auf so komplizierte Funktionen.

Ich freue mich jetzt schon sehr auf eine Antwort! Das schätze ich sehr .

LG Joel
Miniaturansicht angehängter Grafiken
screenshot-40-.jpg   screenshot-41-kopie.png  

Geändert von joelnbp (22. Jan 2014 um 20:13 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Befehl 'round' macht schlapp

  Alt 22. Jan 2014, 20:15
Schreibe die Zahlen in den Controls (Panel, Edit usw.) zunächst in lokale Variablen. Die heißen dann sinngemäß 'ErreichtePunktzahl', 'GesamtPunktZahl' usw. Diese Variablen sind vom Typ 'Double'. So etwa:
Delphi-Quellcode:
Var
  ErreichtePunktzahl : Double;

Begin
  ErreichtePunktzahl := StrToFloat(Panel3.Caption);
  ...
  // Jetzt die Formel, natürlich mit den Variablennamen
  Ergebnis := ....
  // Jetzt das Ergebnis runden
  Ergebnis := Round (Ergebnis,...); // Wie geht das nochmal?

  // Und zum Schluß das Ergebnis anzeigen.
  ZielPanel.Caption := FloatToStr(Ergebnis); // oder wie auch immer das geht
Dann kommst Du selbst auf den Fehler, denn dein Code ist doch ziemlich unübersichtlich, findest Du nicht? Deshalb erkennst du auch nicht, wo der Fehler ist. Aber so (also in kleinen Schritten, mit Zwischenergebnissen etc.) siehst Du das dann sofort.

Hoffe ich. Wenn nicht, wieder melden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#3

AW: Befehl 'round' macht schlapp

  Alt 22. Jan 2014, 20:36
Funktion Round und Round.Text (paar Zeilen weiter oben im Screenshot) ..... ich ahne Böses.

Hat Lazarus denn kein Code-Insight?
Maus über Round halten und schauen was im Hint steht,
bzw. Strg+Linksklick auf das Round und schauen wo man landet. (zumindestens geht das so im Delphi)



Abgesehn davon, würde ich dir dringend empfehlen den Komponenten mal einen ordentlich nahmen zu geben.
(OK, ein "Round" ist zu finden, aber sonst heißt dennoch alles Button1, Label1 usw.)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Jan 2014 um 20:40 Uhr)
  Mit Zitat antworten Zitat
joelnbp

Registriert seit: 16. Mär 2013
Ort: Berlin, Berlin
9 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 15:50
Erstmal muss ich mich entschuldigen, dass ich einfach nicht geschrieben habe. Das mache ich eigentlich überhaupt nicht gerne: Nach einer so netten Hilfe einfach nicht schreiben.

Also vielen Dank! Wie man gemerkt hat, war es ein ärgerlicher Fehler, und zum Glück hat kam round nocheinmal auf dem Screenshot vor .
Danke himitsu!

Ja, finde ich! Ich sollte mir mehr mühe geben, damit der Quelltext mehr Struktur hat. Daran muss ich echt noch arbeiten! Aber dankeschön Furtbichler!

Liebe Grüße, Joel
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#5

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 16:00
Wenn ich mich hier einmal einmischen dürfte. Ich habe nichts zu bemängeln an den Antworten bevor das falsch verstanden wird bzw. auch als Off-Topic eingestuft wird. Das mag sich jetzt blöd anhören aber wie hast du diese blauen Schaltflächen hinbekommen? Als Bild erstellt und dann eingefügt oder ist das von Lazarus eine Extra? Oder sind das Einfach nur Panel's die Blau eingefärbt wurden und den inneren Schatten entfernt wurde?
Danke
Luki
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#6

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 16:53
Gute Frage.
Ich könnte mir auch fast vorstellen, daß das der normale Windows 8-Style für die VCL/LCL/Windows-Buttons ist.
wenn ja, dann kommt das praktisch von alleine, wenn man den normalen TButton unter Win8 laufen lässt.

Ansonsten gibt es Skins, welche das aussehen der Standardkomponenten beeinflusst, oder spezielle geskinnte/selbstgezeichnete Komponenten, oder man misbraucht einfach sowas wie TShape, oder man zeichnet den Button selber.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Feb 2014 um 16:56 Uhr)
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#7

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 17:00
Also von win8 kommt das nicht, habe ich nämlich auch und da ist nichts der gleichen.. Also kann man sich da so Skinpacks downloaden oder selber zeichnen? Zeichnen dann wie?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#8

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 17:29
Es gibt Komponentenpacks mit eigenem SkinSupport, z.B. von TMS, DevExpress usw.
War beim Kauf von Delphi nicht auch wieder ein Link dabei, wo du dir ein paar "Gratis"-Komponenten downloaden kannst? (mir war so, als war da auch mal was mit Skins dabei)

Bei Google suchenDelphi Skin oder Hier im Forum suchenSkin:
http://www.alphaskins.com/asdwnld.php
http://www.torry.net/pages.php?id=1544
http://www.link-rank.com/
...

TPanel nehmen, Rahmen weg (BorderStyle und BevelOuter), Hintergrundfarbe ändern, die Caption setzen und dann ins OnClick den gewünschen Code rein, der beim "Drücken" aufgerufen werden soll.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Feb 2014 um 17:36 Uhr)
  Mit Zitat antworten Zitat
michaelthuma
(Gast)

n/a Beiträge
 
#9

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 18:22
Habe das ausprobiert im Laz als auch im Delphi XE5. Funktioniert in beiden.

Welche ist die Fehlermeldung?

Solltest du im Laz programmieren, dann Klicke einfach auf die Klammern, solltest du mal Sorgen haben bezüglich Klammerung.

Mit der Maus über die Funktion double und es wird dir der Funktionsprototyp angezeigt.

Round gibt einen Int64 zurück ist aber an sich egal. Mich schlimmsten Fall mit einer Konstante ausmultiplizieren falls du sicher gehen willst.

const double : One = 1.0; Exkurs: Bei Sprachen außerhalb von Pascal - Vorsicht.
Beispiel: ABAP und Datum

Code:
DATA: BEGINN TYPE D VALUE '20001224',
      ENDE LIKE BEGINN.

BEGIN = SY-DATUM. - funktioniert, entspricht in dem Zusammenhang now()
BEGINN = '19990101'. - funktioniert, Zeichenketten können zugewiesen werden
ENDE = BEGINN + 1. - funktioniert, Folgetag
ENDE = '19990101' + 1 - denkste
Intern führt der ABAP Interpreter eine Konvertierung auf Integer durch und addiert - Tage bezogen auf den Startzeitpunkt. In der letzten Zeile sieht der ABAP Interpreter.

a) ... Oh, 1 eine Integer - was sonst.
b) ... '19990101' und das Plus dazwischen - ist auch ein Integer
und denkt sich ...
c) ... So ein netter Programmierer! Ganz integere Persönlichkeit, von der bekomm ich ne Integer - was sonst - spar ich mir das Umrechnen - einfach rein mit der Zahl - wird schon wissen was er tut. Tja. Gespart am falschen Platz

Der Fairness halber - es steht in der Doku.

Auch deswegen sind sämtliche Ratschläge Teilergebnisse in Variablen zu halten durchaus nützliche. Man soll eher mit Typen sehr sauber umgehen. 1.0 ist nicht unbedingt double 1.0 in jedem Fall und jeder Sprache.

Hallo,
Ich freue mich jetzt schon sehr auf eine Antwort! Das schätze ich sehr .
  Mit Zitat antworten Zitat
joelnbp

Registriert seit: 16. Mär 2013
Ort: Berlin, Berlin
9 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Befehl 'round' macht schlapp

  Alt 24. Feb 2014, 20:08
Hallo Luki206 und co

Da ich einer der wenigen bin, den das flache Windows 8+ Design sehr gefällt, habe ich es mit meinen wenigen Kenntnissen versucht, so gut wie möglich um zu setzen.

Es sind ganz normale Panels, die die Eigentschaft BevelOuter = bvNone haben. Dann sind sie flach und mit den Farben sollte ja alles klar sein.
Natürlich noch nen bisschen 'hover' mit reingepackt, und natürlich bekannte Button Funktionen wie z.B. enabled ergänzt (auf die einfachste Weise wie es geht; versteht sich ) .

Aber verändern die Skin-Packs nur das Aussehen von Delphi, oder nur das Anwendungs-Design? Und ist es dann auch auf einen PC ohne Skin-Pack zu sehen?
Und ist das auch mit Lazarus möglich?

Liebe Grüße, Joel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 05:20 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