27. juni 2004 - 08:48Der er
21 kommentarer og 1 løsning
Konventer Binær til Decimal
Jeg forsøger at lave et lille program der skal konverter Decimal til Binær og omvent. Konventeringen Decimal til Binær virker fint. Men konventeringen Binær til Decimal virker ikke.
Får fejlmeddelsen: [Error] Unit1.pas(92): Incompatible types: 'String' and 'Integer' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Hvad går der galt? Hvordan skal det skrives?
Mine Delphi 6 koder:
function TForm1.IntToBin(Value : Integer): String; var i: Integer; activ : boolean; begin activ := false; for i:= 31 downto 0 do if Value and (1 shl i) = 0 then begin if activ then Result := Result + '0'; end else begin Result := Result + '1'; activ := true; end; end;
function TForm1.BinToInt(Value: String): LongInt; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:= 1 to size do if Value[i] = '1' then Result := result + round(power(2,size - i)); end;
procedure TForm1.LMDButton1Click(Sender: TObject); Var DecToBin:Integer; begin DecToBin:=StrToInt(LMDEdit1.Text); LMDMemo1.Text:=(IntToBin(DecToBin)); end;
procedure TForm1.LMDButton2Click(Sender: TObject); begin Close; end;
procedure TForm1.FormCreate(Sender: TObject); begin LMDEdit1.Clear; LMDMemo1.Clear; end;
procedure TForm1.LMDButton3Click(Sender: TObject); Var BinToDec:Integer; begin BinToDec:=StrToInt(LMDEdit1.Text); LMDMemo1.Text:=(BinToInt(BinToDec)); end;
Håber jeg lige må stille jer et spørgsmål mere! Hvis der ikke indskrives noget i LMDEdit1 så får jeg fejmeddelsen: www.sunwind.dk/error.jpg Hvordan laves det så, så der poper en meddelse op med bemærkning om, at indskrive et tal inde beregningen. Og brugeren får en chanse merer for at indskrive og kun et tal.
begin tmp := value; digits[0] := '0'; digits[1] := '1'; Result := ''; while tmp > 0 do begin Result := digits[tmp and 1] + Result; tmp := tmp shr 1; end; end;
function BinToInt(Value: String): LongInt;
var i, Size: Integer;
begin Result := 0; Size := Length(Value); for i := 1 to size do begin Result := Result shl 1; if Value[i] = '1' then begin Result := result + 1; end; end; end;
Tak for dit alternativ Function'er Men få følgende fejlmeddelse:
[Hint] Unit1.pas(97): Value assigned to 'BinToDec' never used [Error] Unit1.pas(27): Unsatisfied forward or external declaration: 'TForm1.IntToBin' [Error] Unit1.pas(28): Unsatisfied forward or external declaration: 'TForm1.BinToInt' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
procedure TForm1.LMDButton3Click(Sender: TObject); Var BinToDec:Integer; begin BinToDec:=StrToInt(LMDEdit1.Text); Try If LMDEdit1.Text <> '' then LMDMemo1.Text:=IntToStr(BinToInt(LMDEdit1.Text)) Except On Exception DO MessageDlg('Skriv tal fra 0-255', mtInformation,[mbOk], 0) ELSE End;
begin If LMDEdit1.Text <> '' then LMDMemo1.Text:=IntToStr(BinToInt(LMDEdit1.Text)) ELSE MessageDlg('Skriv tal fra 0-255', mtInformation,[mbOk], 0) end;
Men nedstående vil ikke funger. Kan du se hvad der skal ændres?
procedure TForm1.LMDButton1Click(Sender: TObject); Var DecToBin:Integer; begin If LMDEdit1.Text <> '' then LMDMemo1.Text:=IntToStr(IntToBin(LMDEdit1.Text))) ELSE MessageDlg('Skriv tal fra 0-255', mtInformation,[mbOk], 0) end;
Men denne her virker. Jeg vil blot lærer af dette her!
procedure TForm1.LMDButton1Click(Sender: TObject); Var DecToBin:Integer; begin Try DecToBin:=StrToInt(LMDEdit1.Text); LMDMemo1.Text:=(IntToBin(DecToBin)); Except On Exception DO MessageDlg('Skriv tal fra 0-255', mtInformation,[mbOk], 0) ELSE End; end;
begin If LMDEdit1.Text <> '' then LMDMemo1.Text:=IntToBin(StrToInt(LMDEdit1.Text)) ELSE MessageDlg('Skriv tal fra 0-255', mtInformation,[mbOk], 0) end;
Hej arne Tak det virker meget fint nu. Jeg kan fortælle dig, jeg har prøvet med mange forskellige løsninger. Men jeg er ikke fortrolig med: StrToInt og IntToStr m.v.
Men rigtigt mange tak for din hjælp!
Det kan oplyses at det lille konvertering program, skal jeg brug når der arbejdes med pic16f84 og pic16f872. Et lille hurtigt hjølpe værktøj.
Med venlig hilsen Monie Jacobsen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.