View Full Version : سوال:يك پروسيجر به نام set bit كه بيت nام را به دلخواه 0 يا 1 كند.
  
payampmk
چهارشنبه 02 تیر 1389, 15:13 عصر
به زبان پاسكال باشه.
خيلي زود ميخوام لطفا كمكم كنيد 
ممنون.
SAASTN
چهارشنبه 02 تیر 1389, 19:36 عصر
بیت nام چی رو؟
اگه منظور بیت nام از مثلا یه بایته یه چیزی شبیه به این:
type
  TBit = [0..7];
function SetBit(const Value: Byte; const Bit: TBit; const Flag: Boolean): Byte;
var
  Mask: Byte;
begin
  Mask := Power(2, Bit);
  if Flag then
    Result := Value or Mask
  else
  begin
    Mask := 255 - Mask;
	Result := Value and Mask;
  end;
end;
من function نوشتم. برای تبدیل این تابع به روال:
procedure SetBit(var Value: Byte; const Bit: TBit; const Flag: Boolean);
// result -> Value
البته یادم نیست توی پاسکال هم باید از Power استفاده می کردیم یا ^.
tdkhakpur
چهارشنبه 02 تیر 1389, 21:50 عصر
procedure SetBit( data: pchar; BitNo:integer; status: boolean );
var
  ChNo : integer;
  ch   : BYTE;
begin
  ChNo  := BitNo div 8;
  BitNo := BitNo mod 8;
  ch := BYTE(1 shl BitNo);
  if status then
   ch := byte(data[ChNo]) or ch
  else
  begin
   ch := not ch;
   ch := byte(data[ChNo]) and ch;
  end;
  data[ChNo] := char(ch);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  k : integer;
  BitNo, ChNo : integer;
  ch   : BYTE;
begin
   k:=1;
   SetBit( @k, 0, false);
   ShowMessage(IntTostr(k));
 end;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.