Autor Beitrag
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 08.11.07 17:18 
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 08.11.07 17:26 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject);
var X,Y:integer;
    P:TPoint;
    a,b:double;

begin
  a:=floattostr(Edit1.text);
  X:=100;
  Y:=100;
  P.x:=100;
  P.y:=200;
  with Image1.Canvas do
  begin
  penpos:=P;
  h:=200*a;
  g:=100*b
lineto(x,y);
lineto(x+a,y);
lineto(x+a,y+b);
lineto(x,y+b);
end;end;



so sieht mein button jetzt aus aber da steht es gibt keine überladene version von float to str

Moderiert von user profile iconjasocul: Delphi-Tags hinzugefügt
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 107

Win XP, Ubuntu 8.04
Delphi 7 Prof., Delphi 2005 Pers.
BeitragVerfasst: Do 08.11.07 20:51 
user profile icongandalf ftw hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
a:=floattostr(Edit1.text);					

Da sitzt der Fehler, du möchtest einen String in eine Fließkommazahl umwnadeln, deswegen brauchst du das so machen:
ausblenden Delphi-Quelltext
1:
a:= StrToFloat(Edit1.Text)					

Die Fehlermeldung, dass es keine überladene Version gibt, folgt daraus, dass du eine Methode mit falschen Parametern aufruft und Delphi eine überladene Methode mit genau diesen Parametern nicht findet.

MfG Shorty
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 08.11.07 20:52 
mein Fehler, :oops:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 09.11.07 16:05 
der zeigt mir trotzdem integer und extendend sind inkompatible typen
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.11.07 16:24 
user profile icongandalf 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 10.11.07 18:00 
Zitat:
vielleicht so, wenn es parallel zum Bildschirm liegt,
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
TRechteck = record
  P: TPoint; //linke untere Ecke
  Breite,
  Hoehe: Integer:
end;

procedure Zeichne(const ACanvas: TCanvas; const R: TRechteck);
begin
  with R do ACanvas.Rectangle(P.X,P.Y,P.X+Breite,P.Y-Hoehe);
end;

procedure Skaliere(var R: TRechteck; const AFaktor: Double);
begin
  with R do
  begin
    Breite := Round(Breite*AFaktor);
    Hoehe := Round(Hoehe*AFaktor);
  end;
end;

Kann es sein, dass uns user profile icongandalf ftw auf den Arm nehmen will :?:

_________________
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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 10.11.07 18:36 
user profile iconKroko hat folgendes geschrieben:
Kann es sein, dass uns user profile icongandalf 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 10.11.07 20:18 
user profile icontommie-lie hat folgendes geschrieben:
user profile iconKroko hat folgendes geschrieben:
Kann es sein, dass uns user profile icongandalf 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.
...

Da macht es sich jemand sehr einfach bzw.
Wenn der Hund nicht schwimmen kann, ist das Wasser schuld!

_________________
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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 11.11.07 16:15 
user profile icongandalf 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: 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!