Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rechner machen mit Brüche (https://www.delphipraxis.net/59138-rechner-machen-mit-brueche.html)

OwNy 18. Dez 2005 13:02

Re: Rechner machen mit Brüche
 
nun sagt es mir [Fehler] Unit10.pas(63): Undefinierter Bezeichner: 'stringtofloat'

edit: habs es hies Decimal := strtofloat(edit1.text)
edit2.: danke es geht :) ihr seit die besten :D
edit3.: das nächste problem... hatte das vorher in neues unit gemacht nu möchte ich es in das des rechners!

Delphi-Quellcode:
procedure TForm1.Rechnen2Click(Sender: TObject);

VAR
a, b, e : REAL;

begin
a:= strtofloat (TFa.text);
b:= strtofloat (TFb.text);

e:= a/b;
TFe.Text := floattostr (e);

showmessage ('kannste haben :>');
end;
so! nun muss ja das neue darunter, hab ich gemacht nun sieht das so aus:

Delphi-Quellcode:
procedure TForm1.Rechnen2Click(Sender: TObject);

VAR
a, b, e : REAL;

begin
a:= strtofloat (TFa.text);
b:= strtofloat (TFb.text);

e:= a/b;
TFe.Text := floattostr (e);

showmessage ('kannste haben :>');
end;


procedure TForm1.Button1Click(Sender: TObject);

var
  Form1: TForm1;


implementation

{$R *.dfm}

type
  TFraction = record
    Numerator: Integer;
    Denominator: Integer;
  end;

function Dec2Frac(const Decimal, Accuracy: Double): TFraction;
var
  tempd: Double;
  f: TFraction;
  neg: Shortint;
begin
  f.Numerator := 0;
  f.Denominator := 1;
  if Decimal < 0 then
    neg := -1
  else
    neg := 1;
  tempd := 0;
  while Abs(tempd - Decimal) > Accuracy do begin
    if Abs(tempd) > Abs(Decimal) then
      inc(f.Denominator)
    else
      f.Numerator := f.Numerator + neg;
    tempd := f.Numerator / f.Denominator;
  end;
  //tempi := gcd(f.Numerator,f.Denominator);
  Result := f;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Decimal: Double;
  Rational: TFraction;
begin

  Decimal := strtofloat(TFe.text);

  // Umwandlung in einen Bruch
  // je kleiner der 2. Parameter, desto genauer das Ergebnis und desto länger die Rechenzeit
  Rational := Dec2Frac(Decimal, 0.000001);

  // Ergebnis anzeigen (Ausgabe für 5.46: 273/50):
  ShowMessage('Numerator: ' + IntToStr(Rational.Numerator) + #13#10 +
              'Denumerator: ' + IntToStr(Rational.Denominator));
end;

end.
da soll er jetz aus TFe (ergebniss von der division) den bruch machen, also Decimal := strtofloat(TFe.text);

sollte stimmen aber nun sagt er: [Fehler] Unit1.pas(87): ';' erwartet, aber 'IMPLEMENTATION' gefunden

wieso?
mfg

blawen 18. Dez 2005 13:23

Re: Rechner machen mit Brüche
 
Die vielen Edits des obigen Beitrags machen meinen Kommentar überflüssig - gelöscht

malo 18. Dez 2005 15:18

Re: Rechner machen mit Brüche
 
Kann es sein, dass du zweimal "Implementation" in deinem Programm hast? :mrgreen:

Du hast also einen Implemenatation-Abschnitt IN einem selbigen gemacht...

Tipp: Kopiere nicht nur Quelltexte, sondern lies sie, und wende sie an. Du wirst sehen, dass Matzes Implementation-Abschnitt den einer gesamten Unit darstellt.

Also diese beiden Codezeilen löschen:

Delphi-Quellcode:
implementation

{$R *.dfm}
Und zwar die, die weiter unten sind (aus dem reinkopierten Bereich) :zwinker:

OwNy 18. Dez 2005 16:40

Re: Rechner machen mit Brüche
 
hab ich gemacht nu kommen diese fehler:
[Fehler] Unit1.pas(137): Deklaration erwartet, aber Dateiende gefunden
[Fehler] Unit1.pas(135): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(118): ';' erwartet, aber '.' gefunden
:/
mfg

Daniel G 18. Dez 2005 16:48

Re: Rechner machen mit Brüche
 
Zitat:

Zitat von OwNy
hab ich gemacht nu kommen diese fehler:
[Fehler] Unit1.pas(137): Deklaration erwartet, aber Dateiende gefunden

Das

Delphi-Quellcode:
end.
(nicht zu verwechseln mit
Delphi-Quellcode:
end;
) gehört ganz ans Ende des Codes.
Zitat:

Zitat von OwNy
[Fehler] Unit1.pas(135): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(118): ';' erwartet, aber '.' gefunden
:/
mfg

Ohne Quellcode kann ich dir nur das sagen, was da steht. In der Zeile befindet sich ein Punkt, der Compiler erwartet aber ein abschließendes Semikolon (;)

OwNy 18. Dez 2005 17:05

Re: Rechner machen mit Brüche
 
am ende is ein end.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Rechnen: TButton;
    TFx: TEdit;
    TFy: TEdit;
    TFs: TEdit;
    TFa: TEdit;
    TFb: TEdit;
    TFe: TEdit;
    Rechnen2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure RechnenClick(Sender: TObject);
    procedure Rechnen2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




procedure TForm1.RechnenClick(Sender: TObject);

VAR
x, y, s : REAL;
begin
x:= strtofloat (TFx.text);
y:= strtofloat (TFy.text);

s:= x*y;

TFs.Text := floattostr (s);

showmessage ('kannste haben :>');

end;



procedure TForm1.Rechnen2Click(Sender: TObject);

VAR
a, b, e : REAL;

begin
a:= strtofloat (TFa.text);
b:= strtofloat (TFb.text);

e:= a/b;
TFe.Text := floattostr (e);

showmessage ('kannste haben :>');
end;


procedure TForm1.Button1Click(Sender: TObject);

var
  Form1: TForm1;


implementation

{$R *.dfm}

type
  TFraction = record
    Numerator: Integer;
    Denominator: Integer;
  end;

function Dec2Frac(const Decimal, Accuracy: Double): TFraction;
var
  tempd: Double;
  f: TFraction;
  neg: Shortint;
begin
  f.Numerator := 0;
  f.Denominator := 1;
  if Decimal < 0 then
    neg := -1
  else
    neg := 1;
  tempd := 0;
  while Abs(tempd - Decimal) > Accuracy do begin
    if Abs(tempd) > Abs(Decimal) then
      inc(f.Denominator)
    else
      f.Numerator := f.Numerator + neg;
    tempd := f.Numerator / f.Denominator;
  end;
  //tempi := gcd(f.Numerator,f.Denominator);
  Result := f;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Decimal: Double;
  Rational: TFraction;
begin

  Decimal := strtofloat(TFe.text);

  // Umwandlung in einen Bruch
  // je kleiner der 2. Parameter, desto genauer das Ergebnis und desto länger die Rechenzeit
  Rational := Dec2Frac(Decimal, 0.000001);

  // Ergebnis anzeigen (Ausgabe für 5.46: 273/50):
  ShowMessage('Numerator: ' + IntToStr(Rational.Numerator) + #13#10 +
              'Denumerator: ' + IntToStr(Rational.Denominator));
end;

end.
mfg

ManuMF 18. Dez 2005 18:00

Re: Rechner machen mit Brüche
 
Und immer noch 2 mal implementation :roll: ...

Will sagen: lösche das zweite
Delphi-Quellcode:
implementation

{$R *.dfm}
raus und verschiebe das
Delphi-Quellcode:
type
  TFraction = record
    Numerator: Integer;
    Denominator: Integer;
  end;
hinter
Delphi-Quellcode:
uses
  Windows, ...
.

Gruß,
ManuMF

OwNy 18. Dez 2005 18:42

Re: Rechner machen mit Brüche
 
so, wurde gemacht un wieder 3 fehler :/

[Fehler] Unit1.pas(117): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(134): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(136): Deklaration erwartet, aber Dateiende gefunden

sieht nu folgender masen aus die sachen wo ich machen sollte
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFraction = record
    Numerator: Integer;
    Denominator: Integer;
  end;
das
Delphi-Quellcode:
implementation

{$R *.dfm}
hab ich rausgelöscht.
mfg

Khabarakh 18. Dez 2005 19:00

Re: Rechner machen mit Brüche
 
Zeig doch mal etwas Eigeninitiative :roll: .
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
  Form1: TForm1;
Mit einer halben Prozedur im Code kann das ja nichts werden.

ManuMF 18. Dez 2005 19:04

Re: Rechner machen mit Brüche
 
Lies dir am Besten mal die Grundlagen durch.

Gruß,
ManuMF


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

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