Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Inkompatible typen String und integer (https://www.delphipraxis.net/98456-inkompatible-typen-string-und-integer.html)

NielsHillemeyer 27. Aug 2007 18:02


Inkompatible typen String und integer
 
Hi ich hab hier mal was zusammengeschreibselt aber delphi weißt mich auf inkompatible typen hin(string und integer).
Kann mir jemand helfen?
In die edit felder soll eine dualzahl eingegeben werden, je eine ziffer pro editfeld.
Bei drücken des Buttons soll die Dualzahl in eine Dezimalzahl umgewandelt und ausgegeben werden.
ohne die Function ist das kein problem, dass hab ich auch schon fertig, aber mein Lehrer besteht auf das procedure....

Delphi-Quellcode:
unit Umrechnung;

interface

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

type
  TForm1 = class(TForm)
    btn_Umrechnen: TButton;
    Edt64: TEdit;
    Edt32: TEdit;
    Edt16: TEdit;
    Edt8: TEdit;
    Edt4: TEdit;
    Edt2: TEdit;
    Edt1: TEdit;
    Edt128: TEdit;
    Label1: TLabel;
    procedure btn_UmrechnenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.btn_UmrechnenClick(Sender: TObject);

 function Umwandeln_und_Addieren(z1,z2,z3,z4,z5,z6,z7,z8:string):string;
Var
  Erg:string;
begin
  Erg:=Strtoint(z1)*128+Strtoint(z2)*64+Strtoint(z3)*32+Strtoint(z4)*16+Strtoint(z5)*8
  +Strtoint(z6)*4+Strtoint(z7)*2+Strtoint(z8)*1;

end;

Var
  z1,z2,z3,z4,z5,z6,z7,z8:string;
  Erg:integer;
begin
  z1:=Edt128.Text;
  z2:=Edt64.Text;
  z3:=Edt32.Text;
  z4:=Edt16.Text;
  z5:=Edt8.Text;
  z6:=Edt4.Text;
  z7:=Edt2.Text;
  z8:=Edt1.Text;
  erg:= Umwandeln_und_addieren(z1,z2,z3,z4,z5,z6,z7,z8);
  erg:=Inttostr(erg);
  Label1.Caption:=erg


end;

end.

mkinzler 27. Aug 2007 18:04

Re: Inkompatible typen String und integer
 
Ersetzte mal
Delphi-Quellcode:
Erg:string;
mit
Delphi-Quellcode:
Erg:integer;

SirTwist 27. Aug 2007 18:07

Re: Inkompatible typen String und integer
 
Zitat:

Zitat von mkinzler
Ersetzte mal...

Dann wird die eine Fehlermeldung weg sein, aber ein Ergebnis liefert die Funktion dann immer noch nicht zurück. Besser wäre

Delphi-Quellcode:
result := StroToInt(.....
Und das "Var erg: Integer" kann dann ganz wegfallen.

Apollonius 27. Aug 2007 18:10

Re: Inkompatible typen String und integer
 
Nein.
Delphi-Quellcode:
result:=inttostr(strtoint( {..........} );

s-off 27. Aug 2007 18:12

Re: Inkompatible typen String und integer
 
Zitat:

Zitat von Apollonius
Nein.
Delphi-Quellcode:
result:=inttostr(strtoint( {..........} );

Nein.
Delphi-Quellcode:
result:=inttostr(strtoint( {..........} ));
:mrgreen:

NielsHillemeyer 27. Aug 2007 18:20

Re: Inkompatible typen String und integer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Geht leider alles iwie nicht...
Ich pack ma das prog in den anhang..
Sry aber ich bin iwie mit proceduren und functionen nich so geschickt...

DeddyH 27. Aug 2007 18:30

Re: Inkompatible typen String und integer
 
Ohne zu testen:
Delphi-Quellcode:
procedure TForm1.btn_UmrechnenClick(Sender: TObject);

function Umwandeln_und_Addieren(z1,z2,z3,z4,z5,z6,z7,z8:string):integer;
Var
  Erg:integer;
begin
  Erg:=Strtoint(z1)*128+Strtoint(z2)*64+Strtoint(z3)*32+Strtoint(z4)*16+Strtoint(z5)*8
  +Strtoint(z6)*4+Strtoint(z7)*2+Strtoint(z8)*1;

end;

Var
  z1,z2,z3,z4,z5,z6,z7,z8:string;
begin
  z1:=Edt128.Text;
  z2:=Edt64.Text;
  z3:=Edt32.Text;
  z4:=Edt16.Text;
  z5:=Edt8.Text;
  z6:=Edt4.Text;
  z7:=Edt2.Text;
  z8:=Edt1.Text;
  Label1.Caption:=Inttostr(Umwandeln_und_addieren(z1,z2,z3,z4,z5,z6,z7,z8));


end;

NielsHillemeyer 27. Aug 2007 18:37

Re: Inkompatible typen String und integer
 
Das malnehmen ist weggefallen, darf es aber nicht, denn sonst rechnet das programm nicht ins zehnersystem um sondern gibt eine zufalsszahl aus. Wenn ich das multiplizieren wieder anfüge, dann sind die fehler wieder da.... :(

DeddyH 27. Aug 2007 18:46

Re: Inkompatible typen String und integer
 
Poste mal den aktuellen Quelltext.

//Edit: *Argh* :wall: Schreib die Funktion mal eben um:
Delphi-Quellcode:
function Umwandeln_und_Addieren(z1,z2,z3,z4,z5,z6,z7,z8:string):integer;
begin
  Result := Strtoint(z1)*128+Strtoint(z2)*64+Strtoint(z3)*32+Strtoint(z4)*16+Strtoint(z5)*8
  +Strtoint(z6)*4+Strtoint(z7)*2+Strtoint(z8)*1;
end;

FAlter 27. Aug 2007 18:58

Re: Inkompatible typen String und integer
 
Hi,

muss die Zahl denn unbedingt über mehrere Edits verteilt werden? Was machst du, wenn was anderes als 0 oder 1 eingegeben wird, z. B. 123?

Für ein einzelnes Edit gibt es schon jede Menge Lösungen... Hier im Forum suchenBinToInt

Ich würde es ganz spontan so lösen... Natürlich sollte man die Meldungen der Exceptions noch überarbeiten...

Delphi-Quellcode:
function BinToInt{64}(const Bin: String): Integer {Int64};
var
  I, L: Integer;
begin
  L := Length(Bin);
  if L = 0 then
    raise EConvertError.Create('String ist leer!!');
  if L > 32 {64} then
    raise EConvertError.Create('String zu lang!');

  Result := 0;

  for I := 1 to L do
    case Bin[I] of
      '0':;
      '1': Result := Result or (1 shl (L-I));
    else
      raise EConvertError.Create('Nur Ziffern 0 und 1 erlaubt!');
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToStr(BinToInt(Edit1.Text));
end;
Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Seite 1 von 2  1 2      

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