Autor |
Beitrag |
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Mi 07.11.07 20:37
ja, in schau mal in meinem ersten Beitrag wie ich Breite und Höhe berechne, gibt das Wort ein und drücke die Taste F1
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
gandalf ftw 
Hält's aus hier
Beiträge: 14
|
Verfasst: Do 08.11.07 17:15
bei deinem haste ja geschrieben faktor: double - wie bekomm ich das hin das man da nen beliebigen faktor per edit feld eingeben kann?
ich habs ma versucht in dem ich da ne variable hintersetze aber denn zeigt er mir an integer und extend nich vereinbar oder sowas
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Do 08.11.07 17:18
Delphi-Quelltext 1: 2:
| var Faktor: Double; Faktor := FloatToStr(Edit1.Text); |
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
gandalf ftw 
Hält's aus hier
Beiträge: 14
|
Verfasst: Do 08.11.07 17:26
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Do 08.11.07 18:54
(a) b düfte in undefiniert sein
(b) Welche Delphi-Version?
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Shorty
      
Beiträge: 107
Win XP, Ubuntu 8.04
Delphi 7 Prof., Delphi 2005 Pers.
|
Verfasst: Do 08.11.07 20:51
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Do 08.11.07 20:52
mein Fehler, 
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Herr Bananerama
      
Beiträge: 130
|
Verfasst: Fr 09.11.07 00:44
Du musst das noch runden, beispielweise mit round oder einfach StrToInt benutzen.
Übrigens ... ich würde nicht moveto und linto benutzen sonder Canvas.Rectangle. Ist dann kürzer und es ergibt in jedem Fall ein rechteck. Außerdem kann man das ausmahlen und TRects übergeben
Deine version läuft auch, bzw. wirst du sehen wenn du es compilierst
|
|
gandalf ftw 
Hält's aus hier
Beiträge: 14
|
Verfasst: Fr 09.11.07 16:05
der zeigt mir trotzdem integer und extendend sind inkompatible typen
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Fr 09.11.07 16:22
das ist klar. einen integer kannst du problemlos für ein Extended verwenden (da jede Ganzzahl auch eine rationale Zahl ist). Andersrum geht es logischerweise nicht. Du könntest höchstens den Wert auf eine Ganzzahl runden (mir round) oder alle Kommastellen abschneiden (mit trunc). Im Übrigen denke ich, dass mit der Aufgabe das Stauchen / Skalieren einer Rechteckigen Grafik gemeint ist.
|
|
jaenicke
      
Beiträge: 19322
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.11.07 16:24
gandalf ftw hat folgendes geschrieben: | der zeigt mir trotzdem integer und extendend sind inkompatible typen |
Wenn etwas nicht funktioniert, dann poste doch bitte jeweils deinen Quelltext, die genaue Fehlermeldung (in diesem Fall hast du das ja) und in welcher Zeile des geposteten Quelltext der Fehler auftritt.
Das kürzt das ganze hier erheblich ab...
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Sa 10.11.07 18:00
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Sa 10.11.07 18:36
Kroko hat folgendes geschrieben: | Kann es sein, dass uns gandalf ftw auf den Arm nehmen will  |
Kann es sein, daß er seit... wann hat das Schuljahr angefangen? 3 Monaten? ...einmal pro Woche 90 Minuten Informatikunterricht hat und wie so viele Informatikschüler keine sinnvolle Einführung in die IDE gekriegt hat und einfach nicht weiß, wie man mit der Kontexthilfe und den Fehlermeldungen richtig umgeht und ihm nie jemand richtig erklärt hat, was der Unterschied zwischen den verschiedenen Datentypen ist und wie und vor allem warum man sie korrekt ineinander überführen kann bzw muss und er einfach deinen vorgekauten Code nicht verstehen kann, weil ihm grundlegendes Wissen über Computertechnik und Programmierung fehlt?
Und nein, "da musst du round() verwenden, weil das ein Float ist" ist keine sinnvolle Erklärung.
@gandalf ftw:
Heutige Programmiersprachen unterscheiden in der Regel zwischen zwei grundlegenden Zahlenformaten, Fließkommazahlen und Ganzzahlen. Letztere sind die ganzen oder natürlichen Zahlen, wie du sie aus dem Matheunterricht kennst, erstere sind ein Teil der reellen Zahlen. Float, Single, Double, Extended sind allesamt Fließkommazahlen und unterscheiden sich lediglich in ihrer Genauigkeit (da der Computer nicht wirklich alle reellen Zahlen speichern kann, sind die Fließkommazahlen in der Computertechnik lediglich Näherungen). Integer, Byte, Short, und so weiter sind Ganzzahlen, die sich wiederum durch ihren Definitionsbereich (Integer zum Beispiel von rund -2 Milliarden bis +2 Milliarden) oder durch ihre Vorzeichenbehaftung (Integer kann auch negative Werte darstellen, Cardinal nicht) unterscheiden.
Um in der Mathematik aus einer reellen Zahl eine ganze Zahl zu machen, musst du wissen, wie du -5,312 als ganze zahl darstellen sollst. Das erwartete Ergebnis wäre -5, der Vorgang heißt runden. In Delphi übernimmt das die Funktion round(), der du als Parameter eine Fließkommazahl übergeben kannst und die als Rückgabewert eine Ganzzahl zurückliefert. Delphi kann diese Umwandlung nicht automatisch, da in einem Computer Fließkommazahlen und Ganzzahlen sehr unterschiedlich gespeichert werden. Das heißt überall, wo du zum Beispiel einen Integer erwartest, aber einen Double hast, musst du selbst die round-Funktion verwenden, um die Fließkommazahl zu runden.
Dann gibt es in Delphi als dritten grundlegenden Datentypen noch den String, der Zeichen enthält. Zur Umwandlung von Zahlenformaten in Strings und umgekehrt stehen 4 Funktionen zur Verfügung, IntToStr(), FloatToStr(), StrToInt() und StrToFloat(). Die Bedeutung dieser Funktionen sollte dir aus dem Englischunterricht klar sein, FloatToStr konvertiert Fließkommazahlen zu einem String.
Zu deinem Code: Wenn du bei deinem Code weißt, was du da tust und warum du es tust, lass dir auf keinen Fall sagen, daß eine andere Methode, die du nicht kennst, besser sei. Solange du noch lernst, ist die einzig richtige Lösung diejenige, die du auch verstehst und nachvollziehen kannst. Wenn du mit deinen 4 LineTo()s also zufrieden bist, ändere nichts daran. Woran du allerdings etwas ändern kannst, ist die Strukturierung deines Codes. Fällt dir auf, daß du jeweils zweimal 100 und 200 auf x oder y hinzuaddierst in deinen LineTo-Befehlen? Was bedeuten die 100 und 200 in diesem Fall konkret? Fallen die Variablennamen ein, die du statt der zwei Zahlen nehmen könntest? Wenn du diese Variablen statt der Zahlen nimmst, kannst du den Variablen andere Werte zuweisen und musst nicht jedesmal alle Vorkommen von 100 und 200 finden und ersetzen. Was passiert nun mit den beiden Werten, wenn das Rechteck doppelt so hoch oder doppelt so breit werden soll? Was musst du tun, um eine Zahl zu verdoppeln? Was um sie zu halbieren?
HTH
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Sa 10.11.07 20:18
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
gandalf ftw 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 11.11.07 16:05
so wie ich das jetzt verstehe muss bzw kann ich also die +100 bzw +200 als eine variable machen und die denn einsetzen oder? denn kann ich die mal den faktor nehmen wobei ich bei dem faktor den wert noch runden muss. bin ich jetzt so halbwegs richtig?
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: So 11.11.07 16:15
gandalf ftw hat folgendes geschrieben: | so wie ich das jetzt verstehe muss bzw kann ich also die +100 bzw +200 als eine variable machen und die denn einsetzen oder? |
Ja, aber wie könnten diese beiden Variablen denn sinnvolerweise heißen?
gandalf ftw hat folgendes geschrieben: | bin ich jetzt so halbwegs richtig? |
Ja.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
gandalf ftw 
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 12.11.07 19:44
also so zu sagen h:=200 und b:=100
und davor h:round und b: round oder wo muss der rundungs befehl rein
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Mo 12.11.07 19:46
Sorry, aber vergiss es oder lies mal meine Signatur, zweiter Teil!
[EDIT] Der erste Teil passt aber auch!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|