![]() |
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. |
Re: Inkompatible typen String und integer
Ersetzte mal
Delphi-Quellcode:
mit
Erg:string;
Delphi-Quellcode:
Erg:integer;
|
Re: Inkompatible typen String und integer
Zitat:
Delphi-Quellcode:
Und das "Var erg: Integer" kann dann ganz wegfallen.
result := StroToInt(.....
|
Re: Inkompatible typen String und integer
Nein.
Delphi-Quellcode:
result:=inttostr(strtoint( {..........} );
|
Re: Inkompatible typen String und integer
Zitat:
Delphi-Quellcode:
:mrgreen:
result:=inttostr(strtoint( {..........} ));
|
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... |
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; |
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.... :(
|
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; |
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... ![]() Ich würde es ganz spontan so lösen... Natürlich sollte man die Meldungen der Exceptions noch überarbeiten...
Delphi-Quellcode:
Mfg
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; FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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-2025 by Thomas Breitkreuz