Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Delphi => Konuyu başlatan: z - 14 Ekim 2015, 13:27:23

Başlık: Delphi'de binary sayı yazımı
Gönderen: z - 14 Ekim 2015, 13:27:23
Anlaşılır olması için bazı sayıları binary olarak yazmak istiyorum.

hex 100 değerini  Delphide $100 olarak yazabiliyoruz.

Peki 4 rakamını binary olarak 0100 şeklinde nasıl yazarım?
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: MCansız - 14 Ekim 2015, 13:33:42
https://github.com/AppoPro/Delphi-Binary-Converter

Projeyi inceleyin
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: z - 14 Ekim 2015, 15:56:18
Sorumla alakası yok.

var a:integer;

şeklinde tanımlı değişkene aşağıdaki gibi yada her nasılsa binary değer yazmayı soruyorum. Syntaxı nasıl onu soruyorum.

a:=b0100001011;

Eğer hex değer atmak isteseydik

a:=$100 yazıyorduk.

Binary nasıl yazılıyor onu soruyorum.
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: Gökhan BEKEN - 14 Ekim 2015, 16:01:54
C'de de olmuyor ama #define ile bütün ihtimalleri tanımlayarak olabilir.
örn:
#define 0b10101010 0xAA
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: engerex - 14 Ekim 2015, 16:06:53
%10001110 dener misin?
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: boreas - 14 Ekim 2015, 16:19:56
bildiğim kadarıyla öyle bir gösterim yok delphi'de anca bir obje oluşturularak yapılabilir. Değer binary girilir sonuc prosedürü sonucu integer olarak verir.
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: z - 14 Ekim 2015, 16:26:48
Program yazarken bit deseni göz önünde olsun istiyordum. Neyse const ile hallettim.
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: Yuunus - 14 Ekim 2015, 21:40:56
function HexToBin(Hexadecimal: string): string;
const
  BCD: array [0..15] of string =
    ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
    '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
  i: integer;
begin
  for i := Length(Hexadecimal) downto 1 do
    Result := BCD[StrToInt('$' + Hexadecimal)] + Result;
end;

ShowMessage(HexToBin('FCD1'));
işinizi görür zaten delphinin hazır fonksiyonuda aşağı yukarı aynı işi yapıyor
onunkide bu

function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler;
const
  Convert: array['0'..'f'] of SmallInt =
    ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15);
var
  I: Integer;
begin
  I := BufSize;
  while I > 0 do
  begin
    if not (Text[0] in ['0'..'f']) or not (Text[1] in ['0'..'f']) then Break;
    Buffer[0] := Char((Convert[Text[0]] shl 4) + Convert[Text[1]]);
    Inc(Buffer);
    Inc(Text, 2);
    Dec(I);
  end;
  Result := BufSize - I;
end;

soruyu yanlış anladım sanırım siz değer atamayı sormuşsunuz bildiğim kadarıyla kısa bir yolu yok bu işin yine yukarıdaki gibi bir function ile ali cengiz yapmanız gerekiyor.Delphinin kendi function nı var bintohex diye yine onlarda aynı işi yapmış girilen karakterleri toplayıp hex oluşturmuş.
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: engerex - 14 Ekim 2015, 22:04:57
Çözümün tam olarak nedir?
Ben oluyor diye hatırlıyorum. Sanırım yanlış hatırlıyorum.
Function BIN(deger : integer) : integer; olarak ufak bir fonksiyon yazarak ta çözülebilir. Çağrılırken int3 := bin(10011101); olarak çağrılabilir.
Başlık: Ynt: Delphi'de binary sayı yazımı
Gönderen: Yuunus - 14 Ekim 2015, 22:07:28
function BinToInt(Value: string): Integer;
var
  i, iValueSize: Integer;
begin
  Result := 0;
  iValueSize := Length(Value);
  for i := iValueSize downto 1 do
    if Value = '1' then Result := Result + (1 shl (iValueSize - i));
end;

//------------------------------------
a:=(BinToInt('101111011')); ancak bu şekilde olabilir doğrudan dediğiniz gibi bişey yok diye biliyorum delphinin kendi fonksiyonların dan da buna bakabilirsiniz.