Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Integer to Binary ?? (https://www.delphipraxis.net/113813-integer-binary.html)

5etH 15. Mai 2008 08:44


Integer to Binary ??
 
Hallo Zusammen,

ich würde gerne wissen ob es mit einer bethode wie zb IntToBin Integer Zahlen nach Binär umzuwandeln oder gibts da nur die möglichkeit mit dem errechnen ?

Schonmal vielen Dank
5etH

Klaus01 15. Mai 2008 08:49

Re: Integer to Binary ??
 
IntToBin wandelt einen Interger in String um.
Der String besteht aus 0 und 1. Halt der Wert des Intergers
in Binärdarstellung. Rechnen kannst Du damit nicht.
Dazu ist der Integer da.

Grüße
Klaus

TeronG 15. Mai 2008 08:58

Re: Integer to Binary ??
 
Hier Hatte jemand mal Lösung gepostet Zahlen in Booleans zu wandeln... evtl hilft das ja weite. ^^

Edit:
Leichter verständlich ist es wohl, wenn du (Eingang shr i) and 1 <> 0 durch odd(Eingang shr i) ersetzt.

5etH 15. Mai 2008 09:12

Re: Integer to Binary ??
 
also ich hab jetzt ein programmteil der so aussieht

Delphi-Quellcode:
Var test : Integer;
test2 : String;
begin
  test := 13;
  test2 :=IntTOBin(test);
  showmessage(test2)
aber leider bekomme ich diese fehlermeldung:
[DCC Fehler] Unit7.pas(58): E2010 Inkompatible Typen: 'string' und 'procedure, untyped pointer or untyped parameter'

Klaus01 15. Mai 2008 09:14

Re: Integer to Binary ??
 
Zitat:

Zitat von 5etH
also ich hab jetzt ein programmteil der so aussieht

Delphi-Quellcode:
Var test : Integer;
test2 : String;
begin
  test := 13;
  test2 :=IntTOBin(test);
  showmessage(test2)
aber leider bekomme ich diese fehlermeldung:
[DCC Fehler] Unit7.pas(58): E2010 Inkompatible Typen: 'string' und 'procedure, untyped pointer or untyped parameter'

In dem Codesegment ist der Fehler nicht zu finden.
Poste mal die ganze Prozedur, heißt die Prozedur auch test?

Grüße
Klaus

5etH 15. Mai 2008 09:15

Re: Integer to Binary ??
 
procedure TForm7.Button1Click(Sender: TObject);
Var test : Integer;
test2 : String;
begin
test := 13;
test2 :=IntTOBin(test);
showmessage(test2)
end;

Matze 15. Mai 2008 09:17

Re: Integer to Binary ??
 
Das geht bei mir einwandfrei:

Delphi-Quellcode:
function IntToBin(Value: Cardinal): string;
var
  I: Integer;
begin
  SetLength(Result, 32);
  for I := 1 to 32 do
  begin
    Result[I] := Char(Ord('0') + (Value shr 31));
    Inc(Value, Value);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  test: Integer;
  test2: string;
begin
  test := 13;
  test2 := IntToBin(test);
  ShowMessage(test2)
end;
IntToBin ist eine der vielen erwähnten möglichen Funktionen aus der Code-Library.

Grüße

Edit: Nutze bitte, wie zuvor auch, die [delphi]-Tags. ;)

5etH 15. Mai 2008 09:23

Re: Integer to Binary ??
 
super aber wie kann ich das so justieren das der string nur 8 stellen hat also nur ein byte lang ist da ich ein programm für subnetmasking erstellen will und wenn ich die zeile

Delphi-Quellcode:
SetLength(Result, 32);
zu

Delphi-Quellcode:
SetLength(Result, 8);
ändere bekomme ich nur 8 nullen
und nicht 00001101

oder hab ich die funktion nicht verstanden ?

Klaus01 15. Mai 2008 09:32

Re: Integer to Binary ??
 
Cardinal ist 32bit breit, also sollten
auch 32 Stellen im String zu finden sein.
Wenn Du nur 8 Stellen brauchst gibt es mehrere Möglichkeiten:

a) Du baust Dir eine Funktion function byteToBin(b:Byte):String;
b) du löscht die ersten 24 Stellen des Strings
c) du kopierst Dir die letzten 8 Stellen des Strings in einen anderen String.

Grüße
Klaus

Matze 15. Mai 2008 09:33

Re: Integer to Binary ??
 
Hallo, da ein Cardinal 32 Bit groß ist, kannst du Byte (8 Bit) nehmen:

Delphi-Quellcode:
function IntToBin(Value: Byte): string;
var
  I: Integer;
begin
  SetLength(Result, 8);
  for I := 1 to 8 do
  begin
    Result[I] := Char(Ord('0') + Value shr 7);
    Inc(Value, Value);
  end;
end;
Theoretisch kannst du den Cardinal auch auf 8 Bit runterschrauben:

Delphi-Quellcode:
function IntToBin(Value: Cardinal): string;
var
  I: Integer;
begin
  SetLength(Result, 8);
  for I := 1 to 8 do
  begin
    Result[I] := Char(Ord('0') + (Value and $FF) shr 7);
    Inc(Value, Value);
  end;
end;
Doch letzteres nur zum Verständnis. Für 8 Bit wäre ein Cardinal übertrieben.

Grüße

Edit: Da war einer schneller.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.
Seite 1 von 2  1 2      

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