Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rechnen + Quadratzahlen (https://www.delphipraxis.net/110926-rechnen-quadratzahlen.html)

Dbof 26. Mär 2008 22:07


Rechnen + Quadratzahlen
 
Habe trotz SuFu nicht herausgefunden, wie ich eine Integer mit einer Quadratzahl multiplizieren kann.
ich möchte z.B. die Zahl "2" mit 2 hoch 10 malnehmen. Aus anderen Sprachen kenne ich das so:

2*2^10

Hier gelingt mir das nicht so. Habe durch sorgfältige Suche den Befehl sqr gefunde, kann aber nichts damit anfangen. Kann mir jemand etwas helfen??







P.S. Falls jemand weiß, wo ich ein/mehrere gute Anfänger-Tutoriale zu Delphi finden kann, darf sich gerne bei mir melden

Die Muhkuh 26. Mär 2008 22:12

Re: Rechnen + Quadratzahlen
 
Hi,

Anfänger Tutorials gibt's auf www.dsdt.info

Der Befehl für "Hoch" lautet:

Delphi-Quellcode:
Math.Power(Basis, Exponent);

Dbof 26. Mär 2008 22:45

Re: Rechnen + Quadratzahlen
 
Hab mich mal daran versucht, aber ich brauche umbedingt ein Beispiel, da ich nicht genau weiß, wie ich das Ergebnis anzeigen lasse.

Hier ist mein Versuch:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Function Power(Base, Exponent: Extended): Extended;
var
x, y : Extended;
  begin
  x := StrToInt(Base_edit.Text);
  y := 10;
  Power(x, y);
  Edit.Text := Power
end;
end.
Das ergibt folgende Fehler:
Code:
[Fehler] Unit1.pas(42): Nicht genügend wirkliche Parameter
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Komischerweiße wird mir beim Doppelklick auf die 1. Fehlmeldung die end; - Zeile Angezeigt.

cruiser 26. Mär 2008 23:08

Re: Rechnen + Quadratzahlen
 
Ouch.. was ist das denn? :wall:

in die uses (unter interface oder implementation) bindest du die unit math ein:

Delphi-Quellcode:
uses {...},{...},{...},math;
im ButtonClick Ereignis kannst du dann z.B. folgendes nutzen:

Delphi-Quellcode:
Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0),10));

Dbof 26. Mär 2008 23:40

Re: Rechnen + Quadratzahlen
 
:wiejetzt:


:wall: :wall: :wall:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Function Power(Base, Exponent: Extended): Extended;

begin
Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0), 10));
end;
begin
end;
end.
Etwa so ?

[Warnung] Unit1.pas(39): Rückgabewert der Funktion 'Power' könnte undefiniert sein
Anscheinend ist das so. Passiert nichts beim Klicken. :( :(

Dax 26. Mär 2008 23:43

Re: Rechnen + Quadratzahlen
 
Arbeite bitte mal diese Tutorials durch, dann wird es dir klar werden.

cruiser 26. Mär 2008 23:49

Re: Rechnen + Quadratzahlen
 
*lufthol* Erläutern wir mal deinen Quelltext (siehe Kommentare):

Delphi-Quellcode:
// Das OnClick-Ereignis
procedure TForm1.Button1Click(Sender: TObject);
  // Eine nested function namens Power
  Function Power(Base, Exponent: Extended): Extended;
  begin
    // In der nested function versuchst du etwas in der GUI zu machen
    Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0), 10));
    //                        ^
    //         Dieses Power ruft wieder die nested function auf

    // Da kein Wert zurück gegeben wird, kommt der Fehler
  end;
begin
  // Der Inhalt des Ereignisses wie du siehst
  // ist hier nichts, was soll also passieren?
end;

end. // << gehört zur Unit und sollte da auch bleiben,
     //    ist aber hier nicht dein Problem
Eine nested function ist eine function, die nur innerhalb einer anderen function oder procedure gültig ist.

Wenn du die Unit Math eingebunden hast reicht:

Delphi-Quellcode:
// Das OnClick-Ereignis
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Im OnClick machst du etwas mit der GUI
  Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0), 10));
  //                        ^
  //         Dieses Power ruft das Power aus der Unit Math auf
end;

Und bitte nimm den Rat an und geh die Tutorials durch. Danke.

Dbof 27. Mär 2008 00:26

Re: Rechnen + Quadratzahlen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry, wenn ich es nicht verstehe, werde morgen auf jeden Fall die Tutoriale durchmachen.

Du meinst also, ich kann das

begin
end;

weglassen?

Hier ist dann mein Quellcode mit eingebauten fehlern:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Function Power(Base, Exponent: Extended): Extended;
begin
Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0), 10));

end; //Rückgabewert der Funktion 'Power' könnte undefiniert sein
end; //BEGIN erwartet, aber END gefunden
end. // <---Hier wird ja das Dateiende deklariert



Nun eine Variante, die ich auch noch ausprobiert habe:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Function Power(Base, Exponent: Extended): Extended;
begin
Edit2.Text := '10' //Das ist einfach eine 2. Edit
end; //Rückgabewert der Funktion 'Power' könnte undefiniert sein
begin
Edit.Text := FloatToStr(Power(StrToIntDef(Base_edit.Text,0), 10));
end;
end. // <---Hier wird ja das Dateiende deklariert
So, nun kann man es wenigstens compilieren. Wenn im Edit-Feld "Base_edit" nichts eingegeben wird, kommt in "Edit" der Wert 0. Wird jedoch etwas eingegeben, meldet sich der Debugger mit der Fehlmeldung:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung: 'Ungültige Gleitkommaoperation'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Nun, es tut mir Leid, dass ich so viele Probleme habe, also habe ich mal das Programm gepostet(Anhang).

Die Muhkuh 27. Mär 2008 00:36

Re: Rechnen + Quadratzahlen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

hier ein ganz einfaches Beispielprojekt, danach solltest Du Dein Problem erkennen.

Medium 27. Mär 2008 10:12

Re: Rechnen + Quadratzahlen
 
Mach doch bitte erst ein paar Grundlagen-Tutorials, bevor du irgend etwas weiteres fragst. Es ist mehr als offensichtlich, dass du einfach nur irgendwie irgendwas hinschreibst, und komplett keine Vorstellung davon hast, was du tust. Null. Das ganze hier kann so zu nichts führen.
Wir helfen bei konkreten Problemen gern, aber dir feinschrittweise Delphi von null an beizubringen ist eigentlich nicht der Sinn des Forums. Dafür gibts Tutorials.


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