Delphi-PRAXiS
Seite 2 von 2     12   

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)

Hansa 15. Jan 2003 08:25

Hi,

Zitat:

Zitat von MrSpock
Hansa ist vielleicht etwas scharf im Ton, aber er hat natürlich Recht.

Wenn sowas in einem Tag fertig werden soll, dann hilft sonst nichts. :mrgreen: Außerdem wage ich zu behaupten : Ohne mein Beispiel wäre hier nicht mehr allzu viel passiert.

@Bloodhound : Versuche deinen Lehrer zu überzeugen, daß Du ihm ein perfektes Programm zeigen wirst, aber erst am Montag. Das könnte noch hinhauen.

Dann zu den Fehlern :
Code:
fi := 'Wert für fi(die eingabe muss noch *(-1)genommen werden;
Da fehlt am Schluß das ' (einfaches Apostroph) vor dem ;
Am Anfang steht eins, alles was danach kommt, wird von Delphi als BESTANDTEIL des strings gewertet !! Auch das "end" in der nächsten Zeile, daher kommen die Fehler :!: Das ist mir noch an drei anderen Stellen aufgefallen. Achte unbedingt darauf, daß ' nur im PAAR auftreten darf !! Alles zwischen dem führenden ' und dem abschließenden ' ist KEIN Code, sondern ein String.

Gruß
Hansa

Hansa 15. Jan 2003 08:45

Das hier ist noch schlimmer :

Code:
procedure TForm1.ErgebnisChange(Sender: TObject);
begin
if checkbox1.checked then
* btemp := b 'Wenn checkbox angehakt muss b mit pi multipliziert werden;
else
* btemp := floattostr(3,14159 * strtofloat(b));
DeinLabel.Caption := 'f(x) =' a + '*sin(btemp(x-' + (-fi) + '))';
guck Dir mal Dein a und b an. :spin: Die stehen einfach so im Raum rum!

Gruß
Hansa

Bloodhound 15. Jan 2003 13:37

Hallo,
wo muss das a und b denn stehen??
Ich kann das Projekt einfach nicht kompilieren, kann das daran liegen das das Prog in Delphi6 geschrieben wurde und ich ne Trial von Delphi 7 habe??

nailor 15. Jan 2003 13:56

Wenn sie neuer als 30 Tage ist, muss es (bei den verwendeten Funktionen) gehen.

nailor 15. Jan 2003 13:58

Zitat:

Zitat von Hansa
Das hier ist noch schlimmer :

Code:
procedure TForm1.ErgebnisChange(Sender: TObject);
begin
if checkbox1.checked then
* btemp := b 'Wenn checkbox angehakt muss b mit pi multipliziert werden;
else
* btemp := floattostr(3,14159 * strtofloat(b));
DeinLabel.Caption := 'f(x) =' a + '*sin(btemp(x-' + (-fi) + '))';
guck Dir mal Dein a und b an. :spin: Die stehen einfach so im Raum rum!

Gruß
Hansa

Die Prozedur erinnert mich sehr an eine von mir, die ich unter http://www.delphipraxis.net/viewtopic.php?t=2411 gepostet habe. Da waren das string-Variablen und somit an der Stelle völlig OK. Wenn jetzt in dem Projekt die Variablen aber nicht deklariert sind, dann wird es auch nicht gehen...

Bloodhound 15. Jan 2003 15:17

Jo das war auch dein Text ich dachte ich könnte das übernehmen!!
Wie kann ich selbiges Problem von dieser Basis ausgehend lösen??
Delphi-Quellcode:
unit Unit1;

interface

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

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

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.aChange(Sender: TObject);
begin
//
end;

procedure TForm1.bChange(Sender: TObject);
begin
//
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
//
end;

procedure TForm1.fiChange(Sender: TObject);
begin
//
end;

procedure TForm1.BerechnenClick(Sender: TObject);
begin
//
end;

procedure TForm1.ErgebnisChange(Sender: TObject);
begin
//
end;

end.

Bloodhound 15. Jan 2003 18:00

Der Lehrer hat mir nochmal bis Freitag Zeit gegeben, musste ihm aber versprechen noch nen Handbuch mitzuschreiben, aber das ist ja kein Problem

Hansa 15. Jan 2003 19:10

Hi,

Nailor hat doch geschrieben a und b seien String- Variablen. Also mußt Du VAR a:string; und VAR b:string; irgendwo stehen haben. Bei Dir sind sie aber vom Typ TEdit. Willst Du den Wert verwenden, mußt Du a.Text, b.Text usw. verwenden !! Solange das mit den ' aber nicht klar ist, compiliert Dein Programm nie :!: Noch einmal : Dann ist dein Quelltext Bestandteil eines strings, also von irgendwelchen Daten. Die werden von keiner Programmiersprache als Anweisung interpretiert :!:

Gruß
Hansa

Bloodhound 15. Jan 2003 20:41

So die String hab ich geändert, das mit den komentaren geht jetz denke ich auch in Ordnung

Delphi-Quellcode:
unit Unit1;

interface

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

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

var
  Form1: TForm1;
  a,b,fi: text;

implementation

{$R *.dfm}

procedure TForm1.aChange(Sender: TObject);
begin
a := 'Wert für a';
end;

procedure TForm1.bChange(Sender: TObject);
begin
 b := floattostr(2 * 3.14159 // '2 * 3.14159geteilt durch eingabe ist b')
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
//
end;

procedure TForm1.fiChange(Sender: TObject);
begin
fi := 'Wert für fi(die eingabe muss noch *(-1)genommen werden';
end;

procedure TForm1.BerechnenClick(Sender: TObject);
begin
//
end;

procedure TForm1.ErgebnisChange(Sender: TObject);
begin
if checkbox1.checked then
* btemp := b 'Wenn checkbox angehakt muss b mit pi multipliziert werden';
else
* btemp := floattostr(3,14159 * strtofloat(b));
DeinLabel.Caption := 'f(x) =' a + '*sin(btemp(x-' + (-fi) + '))';
end;

end.

Daniel B 15. Jan 2003 20:46

Du willst jetzt aber nicht behauoten das sich das komplizieren lässt oder?!?!?!

Grüsse, Daniel :hi:

Bloodhound 15. Jan 2003 20:48

:cry: :cry: :cry: :cry:Nee tuts sich leider auch nicht :cry: :cry:

nailor 15. Jan 2003 20:59

Als erstes mach mal alle von den "'" weg. Den ein-strichigen Anführungszeichen :wink: , die haben in Delphi eine Bedeutung. Dann mach alles was geschrieben ist und keine Anweisung für Delphi ist (Kommentare) in {} (geschweifte Klammern).

Daniel B 15. Jan 2003 21:01

Hättest DU jetzt behauptet das es geht, wär ich warscheinlich aus dem Fenster gesprungen, oder wenigstens mein Essen rausgeschmissen. ;)

Zitat:

Delphi-Quellcode:
procedure TForm1.bChange(Sender: TObject);
begin
b := floattostr(2 * 3.14159 // '2 * 3.14159geteilt durch eingabe ist b')
end;

Du hast mein Beitrag nicht gelesen, oder es nicht verstanden.

Kommentare macht man NICHT! mit einem ' !!!
Damit weisst man Strings Daten zu!

Wenn DU eine Funktion hast die () hat, darfst DU nicht in den Klammern, // verwenden. Denn alles was dahinter kommt, ist ein Kommentar, egal ob Du ein ) schriebst oder nicht.
Wenn DU in () was kommentieren willst, dann benutze { und } ! Aber nicht // in Klammern.
Nochmal:

//bis zum ende der Zeile!!!

{ von hier
über mehrere Zeilen,
bis hier }

(* und das gleiche,
über mehrere Zeilen,
erreicht man auch hiermit *)

Merke Dir das und höre bitte auf mit ' zu Kommentieren. Das geht NICHT!

Du solltest nicht in Deinem ersten Programm die Namen so "verunstalten", das hast Du jetzt nämlich davon.
Du verlierst die Übersicht, was was ist!
Deswegen verstehst Du es nicht. //Oder hast schwierigkeiten...

Grüsse, Daniel :hi:

Bloodhound 15. Jan 2003 21:14

Liste der Anhänge anzeigen (Anzahl: 2)
:oops: Um Gottes willen spring nicht wer soll mir dann noch helfen?? :lol: :lol:
So die Komentare hab ich jetzt geändert war das mit den ' von C gewohnt und wusste net das die ' für die Strings sind
Die geänderte file is im anhang, unter berücksichtigung das du C&P hasst

MrSpock 16. Jan 2003 07:46

Hallo Bloodhound,

es ist gar nicht notwendig, dem OnChange Event der einzelnen Editfeldern Code zuzuweisen. Dieses Event wird bei Eingabe jedes einzelnen Zeichens ausgelöst, aber du willst ja gar nichts mit dem "Zwischenergebnis" machen!? Du könntest hier eventuell prüfen, ob die Eingabe noch immer ein korrekter Float Wert ist und ggf. die Annahme des Zeichens verhindern. Dies könntest du jedoch -wie ich schon einnmal erwähnt hatte- einem MaskEdit Feld überlassen.

Eigentlich bräuchtest du nur dem "Berechnen" Button Code zuweisen. Dieser sollte dann den Inhalt der 3 Editfelder prüfen und bei Erkennen eines Fehlers, das entsprechende Feld aktivieren (z.B. ActiveControl=Edit1). Sind alle Eingaben korrekt, wird das Ergebnis berechnet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 Uhr.
Seite 2 von 2     12   

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