Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann mir jemand bei der erstellung eines Quelltextes helfen? (https://www.delphipraxis.net/2205-kann-mir-jemand-bei-der-erstellung-eines-quelltextes-helfen.html)

Bloodhound 13. Jan 2003 20:14

wo muss denn die function hin??

Hansa 14. Jan 2003 06:28

Hi,

kurze Zwischenfrage (das fragen wohl alle Programmierer) : Bis wann soll das fertig sein ?

Gruß
Hansa

Bloodhound 14. Jan 2003 06:52

am besten wäre heute dann könnt ich es morgen abgeben :cry:

Hansa 14. Jan 2003 07:27

haha,

so ungefähr habe ich mir das gedacht. Selbst wenn Dir tatsächlich hier einer die Hausaufgaben macht, glaubst Du der Lehrer würde dich nicht fragen, wie Du das hingekriegt hast ? Was nützt Dir das überhaupt ? Selbst wenn das hier tatsächlich noch hinhaut, bist Du genau so weit wie vorher, die Defizite sind immer noch vorhanden! Für mich ist das pure Zeitverschwendung ! :spin:

Um die minimale Chance zu nutzen und Dir den Mut nicht zu rauben hab ich das hier mal so hingeknallt :
Code:
unit Unit1;

interface

uses
  Math, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Edit2Exit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

FUNCTION Multipliziere (a,b : real) : real;
  BEGIN
    Multipliziere := a * b;
  END;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
  Label3.Caption := FloattoStr (Multipliziere (StrToFloat (Edit1.Text),StrToFloat (Edit2.Text)));
end;

end.
Hier ist KEINE Fehlerprüfung vorhanden. KEINE Besonderheiten. Wirklich ABSOLUT NICHTS besonderes. Ich habe lediglich die Prozedur "Multipliziere" geschrieben und die Unit "Math" in die Uses Liste eingefügt (die ich hierfür aber nicht brauche), damit Du siehst, wo die hin muß :chat: . Auf der Form habe ich zudem 2 Edit-Felder 2 Labels und dann noch ein drittes fürs Ergebnis angeordnet. Die Caption, also die Beschriftung des 3. Labels zeigt das Ergebnis. Das wird angezeigt, sobald das zweite Edit verlassen wird (Edit2Exit). So ungefähr mußt Du das machen.

Gruß
Hansa

Bloodhound 14. Jan 2003 13:21

Vielen dank, ich bin grad dabei deine eingaben nachzuvollziehen, wenn ich das anschau raff ich schon was für was ist und kanns anderen auch erklären.
Allerdings muss irgendwo ein End fehlen, stattdessen ist ein ungültiges zeichen#160 vorhanden :freak:

Hansa 14. Jan 2003 13:26

Hi,

ausnahmsweise ist der Quelltext sogar getestet. :chat: Ist das chr (160) vielleicht nur bei Dir ?

Gruß
Hansa

MrSpock 14. Jan 2003 13:35

Hallo Bloodhound,

so wie Hansa es geschrieben hat, ist es absolut in Ordnung. Ich hatte oben die Funktion als Methode des Formulars beschrieben. Wenn du das ralisieren willst, wäre die Deklaration wie folgt:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
     ...
  private
    { Private declarations }
    function SinWithScale(a, x, b, fi: extended; useRad: Boolean): extended;
  public
    { Public declarations }
  end;
Unterhalb des Tags implementation folgt dann irgendwo:

Delphi-Quellcode:
function TForm1.SinWithScale(a, x, b, fi: extended; useRad: Boolean): extended;
var
   erg  : extended;
begin
  if Not useRad then
  begin
     { hier musst du die Werte x, b und fi in Rad umwandeln,
       da der Benutzer diese in Grad angegeben hat }
  end;

  erg := a*sin(b*(x-fi));

  if Not useRad then
     { hier den erhalten Wert wieder in Grad umwandeln };

  Result := erg;
end;
Wie Hansa habe ich auch keine Fehlerbehandlung eingefügt, dazu solltest du einen try ... except Block verwenden.

Wenn du die Kommentare (also das Umwandeln von Grad in Rad bzw umgekehrt noch erledigst, hast du schon die Funktion fertig.

Such doch mal in der Hilfe unter RadToDeg :mrgreen: .

Hansa ist vielleicht etwas scharf in Ton, aber er hat natürlich Recht, wenn er sagt, dass das Abschreiben allein nichts bringt. Für 15 Punkte in Mathe oder Informatik solltest du versuchen mehr allein zu schaffen. Wenn du eine gezielte Frage hast -auch wenn sie sehr einfach ist- wirst du auch weiterhin Hilfe erhalten.

Wenn du die Funktion fertig hast, versuche mal eine Listbox zu füllen, in der du alle x-Werte von -Pi bis Pi, im Abstand von 0.1 und deren Funtionswert ausgibst. Wenn du das hast, kämen wir zur graphischen Anzeige.

Bloodhound 14. Jan 2003 16:31

Hmm das mit den Gradangaben muss wohl ein missverständniss sein.
Die Parameter sind alle ganz normale zahlen, die umwandlung ist allso eigendlich überflüssig denke ich.
Das Prog muss "nur"

die Eingabe in Edit 1(a)
die Eingabe in Edit 2(b)==> 2pi/b=c
die Eingabe in Edit 3(fi)

in die Formel f(x)=a*sin(c(x-fi) einsetzen.

B sollte sowohl als Zahlenwert wie auch in pi angegeben werden können.
Das lässt sich aber denke ich lösen wenn ich ein mit einer If verknüpfunge 2 Buttons einbinde der eine der b direkt in c umrechnet , den anderen bei dem b zuerst mit pi multipliziert wird und dann umgerechnet

MrSpock 14. Jan 2003 17:00

Hallo Bloodhound,

OK, wenn du keine Angaben in Grad brauchst, kannst du den letzten Parameter aus der Parameterliste streichen. Du könntest eventuell eine CheckBox neben das Eingabefeld stellen mit der Beschriftung "*Pi". Wenn diese markiert ist, multiplizierst du b mit pi, sonst übergibst du b direkt als Parameter an die Funktion. Bei der Eingabe über Edit-Felde erhälst du in der Eigenschaft Text den Eingabewert als String. Diesen musst du natürlich in einen Realzahl umwandeln, dazu kannst du die Funktion StrToFloat aus der SysUtils Bibliothek benutzen. Das Ganze solltest du in einen try ... except Block packen, da der User ja auch einen ungültigen Wert angeben kann. Anstatt eines einfachen Edt Feldes kannst du auch ein MaskEdit Feld benutzen, dann kannst du noch beseer kontrollieren, was der Benutzer eingeben darf.

Jetzt müsste es mit der Listbox klappen, oder?

Bloodhound 14. Jan 2003 19:57

Ich habe das Programm mal so geschrieben wie es sein sollte.
Mein problem ist jetzt das ich nicht die Befehle für die komentare weiß ansonsten ist denke ich alles soweit eichtig


Delphi-Quellcode:
unit Unit1;

interface

uses
  math, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;

type
  TForm1 = class(TForm)
    a: TEdit;
    b: TEdit;
    fi: TEdit;
    Ergebnis: TEdit;
    Berechnen: TButton;
    CheckBox1: TCheckBox;
    procedure aChange(Sender: TObject);
    procedure ErgebnisChange(Sender: TObject);
    procedure bChange(Sender: TObject);
    procedure fiChange(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure BerechnenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.aChange(Sender: TObject);
begin
   //Eingabe fließt als a in ergebnis ein
end;

procedure TForm1.bChange(Sender: TObject);
begin
   //2*3,14159 geteilt durch Eingabe b fließt als B in Ergebnis ein
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
   {wenn Checkbox markiert wird eingabe in b (b mal mit 3,14159 multipliziert)}
end;

procedure TForm1.fiChange(Sender: TObject);
begin
   //Eingabe fließt als fi in Ergabnis ein
end;

procedure TForm1.BerechnenClick(Sender: TObject);
begin
   //Bei klick des Buttons wird ergebnis angezeigt
end;

procedure TForm1.ErgebnisChange(Sender: TObject);
begin
   (*Ergebnis grundform f(x)=Eingabe in feld a*sin(eingabe in feld b(x-eingabe in feld fi))*)
   {mit sin bzw. x muss nichts gerechnet werden es müssen nur die eingaben eingesetzt werden.}

end;

end.
[edit=Daniel B]Delphi-Tags; Bitte das nächste mal nicht [ code], sondern [ delphi] benutzen. Danke. Kommentar-Zeichen. MfG Daniel B.[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 2 von 6     12 34     Letzte »    

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