Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wieso ist das nicht definiert obwohl es definiert ist (https://www.delphipraxis.net/206101-wieso-ist-das-nicht-definiert-obwohl-es-definiert-ist.html)

Vebob 19. Nov 2020 12:24

Wieso ist das nicht definiert obwohl es definiert ist
 
Bei mir wird der Fehler inkorekter Integer Typ angezeigt aber warum
wollte nen Literverbrauch pro 100KM machen mit ner Simme mit nen Tank von 8 Litern und reservreverbrauch
Das wär mein Code:
unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edtKMA: TEdit;
edtKME: TEdit;
lblKM: TLabel;
btnBerechnen: TButton;
Label4: TLabel;
edtTank: TEdit;
lblBVerbrauch: TLabel;
Verbrauch: TLabel;
lblVerbrauch: TLabel;
procedure btnBerechnenClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnBerechnenClick(Sender: TObject);
var intKMA, intKME, intKM, intBVerbrauch, intTank, sng8, sng100, intVerbrauch : integer;

begin
intKMA := StrToInt (edtKMA.Text);
intKME := StrToInt (edtKME.Text);
intKM := intKME-intKMA;
lblKM.Caption := IntToStr (intKM);
intTank := StrToInt (edtTank.Text);
intBVerbrauch := intTank - sng8 ;
lblBVerbrauch.Caption := IntToStr (intBVerbrauch);
intVerbrauch := intBVerbrauch/sng100*intKM; hier ist das Siliconon rot aber why???
lblVerbrauch.Caption := IntToStr (intVerbrauch);

end;

end.

haentschman 19. Nov 2020 12:34

AW: Wieso ist das nicht definiert obwohl es definiert ist
 
Delphi-Quellcode:
intBVerbrauch/sng100*intKM
weil hier kein Integer herauskommt sondern ein Double (Kommastellen) :P

PS: Der Wert sng100 wird nicht zugewiesen. sng100 ist immer 0.

Je nach dem was du willst, kann man auch die Nachkommastellen abschneiden...z.B.
http://docwiki.embarcadero.com/Libra...e/System.Trunc

PS: Im Editor gibt es einen Knopf mit dem Delphi Helm. Dort packst du dann den Code rein...:zwinker:

Willkommen
:dp:

himitsu 19. Nov 2020 13:35

AW: Wieso ist das nicht definiert obwohl es definiert ist
 
Zitat:

PS: Der Wert sng100 wird nicht zugewiesen. sng100 ist immer 0.
Das ist eine lokale Variable, also ist der Wert per se "zufällig",
aber zum Glück sollte der Compiler dieses ja bemängeln. (wenn man nicht nur die Fehler, sondern auch die Warnungen des Compilers beachtet)

"immer 0" wäre toll, denn dann würde es hier spätestens zur Laufzeit immer knallen (Division durch 0), falls wer die Warnungen ignoriert. :stupid:

TurboMagic 19. Nov 2020 22:18

AW: Wieso ist das nicht definiert obwohl es definiert ist
 
Rund, Trunc oder div verwenden. Dann kommen auch integer Zahlen aus der durch / beauftragten Fließkommadivision raus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz