Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probs mit Variablentypen (https://www.delphipraxis.net/41363-probs-mit-variablentypen.html)

roxxy 2. Mär 2005 13:06


Probs mit Variablentypen
 
Ich stehe total aufm Schlauch...
Ich will dieses Prog schreiben, doch Delphi mag mich wohl irgendwie nicht mehr.
Ich wollte erst den Variablen den typ float zuweisen, aber dann wurde mir gesagt: undefinierter Bezeichner.
Jetzt habe ich double genommen und kann keine Typumwandlung mehr machen.
Ich hatte auch schon extended aber das hat auch absoult nicht funktioniert.... :wall:

Hoffe, dass mir jemand mit guter Anleitung helfen kann...
Bin am verzweifeln...


Delphi-Quellcode:
unit Kasse;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    EdKasseAnfang: TEdit;
    EdFlaschen05Anfang: TEdit;
    EdFlaschen1Anfang: TEdit;
    EdFlaschen15Anfang: TEdit;
    EdKasseEnde: TEdit;
    EdFlaschen05Ende: TEdit;
    EdFlaschen1Ende: TEdit;
    EdFlaschen15Ende: TEdit;
    EdDifferenz: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
FlaschenAnfang:double;
FlaschenEnde:double;
KasseAnfang:double;
KasseEnde:double;
Einnahmen:double;
Differenz:double;
FlaschenDifferenz:double;
begin
 FlaschenAnfang:=(EdFlaschen05Anfang.text*0.5)+(EdFlaschen1Anfang.text)+(EdFlaschen15Anfang.text*1.5);
 FlaschenEnde:=(EdFlaschen05Ende.text*0.5)+(EdFlaschen1Ende.text)+(EdFlaschen15Ende.text*1.5);
 KasseAnfang:=EdKasseAnfang;
 KasseEnde:= EdKasseEnde;
 Einnahmen:=KasseEnde-KasseAnfang;
 FlaschenDifferenz:=FlaschenAnfang-FlaschenEnde;
begin
 if (KasseEnde-FlaschenEnde) not KassenAnfang then
  begin
   EdDifferenz:=(KasseEnde-FlaschenEnde)-KassenAnfang;
  end
  else
   EdDifferent:=0;
end;
end;
end.
Diese Fehler bekomme ich:
Delphi-Quellcode:
[Fehler] Kasse.pas(54): Inkompatible Typen: 'String' und 'Extended'
[Fehler] Kasse.pas(54): Inkompatible Typen: 'String' und 'Extended'
[Fehler] Kasse.pas(55): Inkompatible Typen: 'String' und 'Extended'
[Fehler] Kasse.pas(55): Inkompatible Typen: 'String' und 'Extended'
[Fehler] Kasse.pas(56): Inkompatible Typen: 'Double' und 'TEdit'
[Fehler] Kasse.pas(57): Inkompatible Typen: 'Double' und 'TEdit'
[Fehler] Kasse.pas(61): Operator oder Semikolon fehlt
[Fehler] Kasse.pas(64): Inkompatible Typen: 'TEdit' und 'Extended'

gordon freeman 2. Mär 2005 13:16

Re: Probs mit Variablentypen
 
Schau dir diese Zeile nochmals genauer an:

Delphi-Quellcode:
(EdFlaschen05Anfang.text*0.5)
Du willst einen String, nämlich EdFlaschen05Anfang.text mit einer Zahl multiplizieren, ohne den String vorher umzuwandeln. Ein

strtofloat, oder ähnliches würde abhilfe schaffen!

read you, gordon

//Edit1: Hatte "floattostr" geschrieben :oops:

Gollum 2. Mär 2005 13:19

Re: Probs mit Variablentypen
 
Hallo,

die Fehlermeldung bedeutet vereinfacht gesagt, dass Du mit einem Textfeld rechnen willst, was aber, wie Du an den Fehlermeldungen sehen kannst, nicht geht. Du musst den Inhalt der Editfelder zuerst z.B. mit StrToFloat in eine Fließkommazahl umwandeln:
Delphi-Quellcode:
...
FlaschenAnfang:=StrToFloat(EdFlaschen05Anfang.text)*0.5+StrToFloat(EdFlaschen1Anfang.text)+StrToFloat(EdFlaschen15Anfang.text)*1.5;
...
Welchen Datentyp Du dan benutzt, Double oder Extended, ist dann egal.

roxxy 2. Mär 2005 13:24

Re: Probs mit Variablentypen
 
Zitat:

Zitat von Gollum
Hallo,

die Fehlermeldung bedeutet vereinfacht gesagt, dass Du mit einem Textfeld rechnen willst, was aber, wie Du an den Fehlermeldungen sehen kannst, nicht geht. Du musst den Inhalt der Editfelder zuerst z.B. mit StrToFloat in eine Fließkommazahl umwandeln:
Delphi-Quellcode:
...
FlaschenAnfang:=StrToFloat(EdFlaschen05Anfang.text)*0.5+StrToFloat(EdFlaschen1Anfang.text)+StrToFloat(EdFlaschen15Anfang.text)*1.5;
...
Welchen Datentyp Du dan benutzt, Double oder Extended, ist dann egal.


Wenn ich das genau so eingebe wie du es geschrieben hast, bekomme ich diese Fehlermeldung:

[Fehler] Kasse.pas(54): Es gibt keine überladene Version von 'FloatToStr', die man mit diesen Argumenten aufrufen kann

Muetze1 2. Mär 2005 13:27

Re: Probs mit Variablentypen
 
Moin!

Zitat:

Zitat von roxxy
Zitat:

Zitat von Gollum
Hallo,

die Fehlermeldung bedeutet vereinfacht gesagt, dass Du mit einem Textfeld rechnen willst, was aber, wie Du an den Fehlermeldungen sehen kannst, nicht geht. Du musst den Inhalt der Editfelder zuerst z.B. mit StrToFloat in eine Fließkommazahl umwandeln:
Delphi-Quellcode:
...
FlaschenAnfang:=StrToFloat(EdFlaschen05Anfang.text)*0.5+StrToFloat(EdFlaschen1Anfang.text)+StrToFloat(EdFlaschen15Anfang.text)*1.5;
...
Welchen Datentyp Du dan benutzt, Double oder Extended, ist dann egal.


Wenn ich das genau so eingebe wie du es geschrieben hast, bekomme ich diese Fehlermeldung:

[Fehler] Kasse.pas(54): Es gibt keine überladene Version von 'FloatToStr', die man mit diesen Argumenten aufrufen kann

Wenn du es wirklich genau so eingegeben hast, dann frage ich mich wie der Compiler auf "FloatToStr()" kommt, da er nur "StrToFloat()" verwendet. Daher stimmt da was beim abschreiben nicht...

MfG
Muetze1

roxxy 2. Mär 2005 13:31

Re: Probs mit Variablentypen
 
Danke Muetze1.


ich wäre fast noch daran verzweifelt..... :roll:


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