unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Math;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
function toString(var a:boolean):string;
function denary:string;
procedure proses;
procedure tlsStrgrd;
procedure counter(l:integer);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const n=5;
var Form1: TForm1;
Q:array[0..n-1]of boolean;
l:integer=0;
jalan:boolean=false;
clock:boolean=true;
implementation{$R *.dfm}
function tform1.denary;
var i,j:integer;
begin
j:=0;
for i:=0 to n-1 do begin
j:=j+round(strtoint(toString(Q[i]))*Power(2,i));
end;
denary:=inttostr(j);
end;
function tform1.toString(var a:boolean):string;begin
toString:=inttostr(-1*strtoint(booltostr(a)));
end;
procedure tform1.counter(l:integer);
begin
if l<=n-1 then begin
Q[l]:=not Q[l];
if Q[l]=false then begin
l:=l+1;
counter(l);
end;
end;
end;
procedure tform1.tlsStrgrd;
var i:integer;
begin
for i:=0 to n-1 do begin
stringgrid1.Cells[i+2,1]:=toString(Q[i]);
end;
end;
procedure tform1.proses;
begin
clock:=not clock;
if clock=false then
begin
l:=0;
counter(l);
tlsStrgrd;
end;
stringgrid1.Cells[1,1]:=toString(clock);
stringgrid1.Cells[n+2,1]:=denary;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:= not jalan;
while jalan=true do begin
proses;
application.ProcessMessages;sleep(300);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
stringgrid1.ColCount:=n+3;
stringgrid1.Cells[1,0]:='clock';
stringgrid1.Cells[n+2,0]:='denary';
stringgrid1.Cells[n+2,1]:=denary;
stringgrid1.Cells[1,1]:=toString(clock);
for i:=0 to n-1 do begin
Q[i]:=false;
stringgrid1.Cells[i+2,0]:='Q'+inttostr(i);
stringgrid1.Cells[i+2,1]:=toString(Q[i]);
end;
end;
end.
Friday, November 14, 2014
Flexible Digital Counter using Delphi (with Recursive Procedure)
Updated version from before.
Thursday, November 13, 2014
Recursive Procedure on Delphi.
Yup, recursive procedure (not recursive function, :) ).
I use it to create a simulation about digital asynchronous binary n-bit counter, complete with the denary representation.
n-bit means it's very flexible, you can change n and its output (stringgrid, thats it) automatically adjust itself, :)
Here's the code
The screenshot.
I use it to create a simulation about digital asynchronous binary n-bit counter, complete with the denary representation.
n-bit means it's very flexible, you can change n and its output (stringgrid, thats it) automatically adjust itself, :)
Here's the code
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, math;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
function denary:integer;
function tostring(a:boolean):string;
procedure counter(m:integer);
procedure proses;
procedure isiStringgrid;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const n=3;
var
Form1: TForm1;
Q:array[0..(n-1)]of boolean;
clock:boolean=true;
l,denary:integer;
running:boolean=false;
implementation
{$R *.dfm}
function tform1.denary:integer;
var i,j:integer;
begin
j:=0;
for i:=0 to n-1 do begin
j:=j+round(power(2,i))*strtoint(tostring(Q[i]));
end;
denary:=j;
end;
function tform1.tostring(a:boolean):string;
begin
{}
tostring:=inttostr(-1*strtoint(booltostr(a)))
end;
procedure tform1.counter(m:integer);
begin
if l<=n-1 then begin
Q[l]:=not Q[l];
if Q[l]=false then begin
l:=l+1;
counter(l);
end;
end;
end;
procedure tform1.proses;
begin
clock:= not clock;
if clock=false then begin
l:=0;
counter(l);
isiStringgrid;
end;
stringgrid1.Cells[1,1]:=tostring(clock);
end;
procedure tform1.isiStringgrid;
var i:integer;
begin
for i:=0 to n-1 do begin
stringgrid1.Cells[2+i,1]:=tostring(Q[i]);
end;
stringgrid1.Cells[n+2,1]:=inttostr(denary);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
running:=not running;
if running=true then bitbtn1.Caption:='stop'else bitbtn1.Caption:='run';
while running=true do begin
proses;
application.ProcessMessages;sleep(500);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
stringgrid1.ColCount:=n+3;
bitbtn1.Caption:='run';
stringgrid1.Cells[1,0]:='clock';
stringgrid1.Cells[1,1]:=tostring(clock);
for i:=0 to n-1 do begin
Q[i]:=false;
stringgrid1.Cells[2+i,0]:='Q'+inttostr(i);
stringgrid1.Cells[2+i,1]:=tostring(Q[i]);
end;
stringgrid1.Cells[n+2,0]:='Denary';
stringgrid1.Cells[n+2,1]:=inttostr(denary);
end;
end.
The screenshot.
And the result, :)
Friday, November 7, 2014
iOS and OS X's Note
Friday, October 31, 2014
My New Toys, :)
Action Script3
(just for self documentation)
Notice how it differs from ActionScript 2, onRelease, onEnterFrame stuff.
Anyway, I'll tinker with this for next couple days, because it could be published as androidApps.apk via Adobe Air, for iOS too.
var vx:Number = 17;
var vy:Number = 3;
var jalan:Boolean = false;
var batasDrag:Rectangle = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
addEventListener(Event.ENTER_FRAME, utama);
/* Touch and Drag Event*/
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
kotak.addEventListener(TouchEvent.TOUCH_BEGIN, tekanKotak);
kotak.addEventListener(TouchEvent.TOUCH_END, lepasKotak);
tbStart.addEventListener(TouchEvent.TOUCH_TAP, toggleStart);
function utama(evtObj :Event):void
{
info.text = 'hallo';
if (jalan)
{
//kotak.y = 156.9;
kotak.x += vx;
kotak.y += vy;
info.text = "vx = " + String(vx);
info.appendText("\nvy = " + String(vy));
if (((kotak.x+kotak.width) >= stage.stageWidth) ||(kotak.x<0))
{
vx *= -1;
}
if (((kotak.y+kotak.height) >= stage.stageHeight) ||(kotak.y<0))
{
vy *= -1;
}
}
}
function toggleStart(event:TouchEvent):void
{
jalan = ! jalan;
}
function tekanKotak(event:TouchEvent):void
{
event.target.startTouchDrag(event.touchPointID, false, batasDrag);
jalan = false;
//kecepatan.text = "0";
}
function lepasKotak(event:TouchEvent):void
{
event.target.stopTouchDrag(event.touchPointID);
jalan = true;
}
/*tbStart.addEventListener(MouseEvent.CLICK,tbStartRelease);
function tbStartRelease(event:MouseEvent):void
{
jalan = ! jalan;
}
*/
(just for self documentation)
Notice how it differs from ActionScript 2, onRelease, onEnterFrame stuff.
Anyway, I'll tinker with this for next couple days, because it could be published as androidApps.apk via Adobe Air, for iOS too.
var vx:Number = 17;
var vy:Number = 3;
var jalan:Boolean = false;
var batasDrag:Rectangle = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
addEventListener(Event.ENTER_FRAME, utama);
/* Touch and Drag Event*/
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
kotak.addEventListener(TouchEvent.TOUCH_BEGIN, tekanKotak);
kotak.addEventListener(TouchEvent.TOUCH_END, lepasKotak);
tbStart.addEventListener(TouchEvent.TOUCH_TAP, toggleStart);
function utama(evtObj :Event):void
{
info.text = 'hallo';
if (jalan)
{
//kotak.y = 156.9;
kotak.x += vx;
kotak.y += vy;
info.text = "vx = " + String(vx);
info.appendText("\nvy = " + String(vy));
if (((kotak.x+kotak.width) >= stage.stageWidth) ||(kotak.x<0))
{
vx *= -1;
}
if (((kotak.y+kotak.height) >= stage.stageHeight) ||(kotak.y<0))
{
vy *= -1;
}
}
}
function toggleStart(event:TouchEvent):void
{
jalan = ! jalan;
}
function tekanKotak(event:TouchEvent):void
{
event.target.startTouchDrag(event.touchPointID, false, batasDrag);
jalan = false;
//kecepatan.text = "0";
}
function lepasKotak(event:TouchEvent):void
{
event.target.stopTouchDrag(event.touchPointID);
jalan = true;
}
/*tbStart.addEventListener(MouseEvent.CLICK,tbStartRelease);
function tbStartRelease(event:MouseEvent):void
{
jalan = ! jalan;
}
*/
Tuesday, October 21, 2014
Enable SMS Forwarding between iOS 8.1 and Yosemite
No code's shown on Mac?
Me too.
I have this solution after googling DuckDuckGoing.
here the excerpt
and yeah, it works, :)I've found a solution on another forum and it worked for me:Try this: Go to your iPhone Messages settings and turn off iMessages and turn it on again. Then go to the iMessages Settings on your Mac and do the same. After that it worked for me. Also make sure to activate your telephone number in the iMessages settings on your Mac.
Keynote on Linux
No, there's no native iWork on my Debian Sid.
It has done via iCloud Drive and iCloud Keynote.
My keynote, wrote it using my old OS X Maverick (or maybe even when my MacBook is still using Lion or Snow Leopard, I forgot), can be accessed via Chrome browser.
It has done via iCloud Drive and iCloud Keynote.
My keynote, wrote it using my old OS X Maverick (or maybe even when my MacBook is still using Lion or Snow Leopard, I forgot), can be accessed via Chrome browser.
Monday, October 20, 2014
Stuck on "Upgrading" iCloud Drive
Well, nothing we can do about it.
But, just remember that sometime the process time on apple based device (and others platform as well) didn't as reliable.
The "1 minute remaining" installation message that took 2 hours to finish.
The Mail app sending message that tell "34 minute remaining" but actually it's sent and we got bewildered when receiving reply of our message that "didn't" sent yet.
So, be patient, :)
You could soft reset it, power-off and then turn it on again, or another reset, press home button and power button at same time until the device turned off and boot by itself.
Got some solution from discussions.apple.com, flip the airplane switch to on, it'll gave the error message, flip it to off again, and all is well, the iCloud drive status is on. Weird, not pretty solution, but worked, so no problem for me.
But that won't guarantee the problem is solved for everyone, :)
Some succeed by using it and some didn't.
The alternative is, again, be patient, :)
But, just remember that sometime the process time on apple based device (and others platform as well) didn't as reliable.
The "1 minute remaining" installation message that took 2 hours to finish.
The Mail app sending message that tell "34 minute remaining" but actually it's sent and we got bewildered when receiving reply of our message that "didn't" sent yet.
So, be patient, :)
You could soft reset it, power-off and then turn it on again, or another reset, press home button and power button at same time until the device turned off and boot by itself.
Got some solution from discussions.apple.com, flip the airplane switch to on, it'll gave the error message, flip it to off again, and all is well, the iCloud drive status is on. Weird, not pretty solution, but worked, so no problem for me.
But that won't guarantee the problem is solved for everyone, :)
Some succeed by using it and some didn't.
The alternative is, again, be patient, :)
Subscribe to:
Posts (Atom)
My sky is high, blue, bright and silent.
Nugroho's (almost like junk) blog
By: Nugroho Adi Pramono
323f
(5)
amp
(1)
android
(12)
apple
(7)
arduino
(18)
art
(1)
assembler
(21)
astina
(4)
ATTiny
(23)
blackberry
(4)
camera
(3)
canon
(2)
cerita
(2)
computer
(106)
crazyness
(11)
debian
(1)
delphi
(39)
diary
(286)
flash
(8)
fortran
(6)
freebsd
(6)
google apps script
(8)
guitar
(2)
HTML5
(10)
IFTTT
(7)
Instagram
(7)
internet
(12)
iOS
(5)
iPad
(6)
iPhone
(5)
java
(1)
javascript
(1)
keynote
(2)
LaTeX
(6)
lazarus
(1)
linux
(29)
lion
(15)
mac
(28)
macbook air
(8)
macbook pro
(3)
macOS
(1)
Math
(3)
mathematica
(1)
maverick
(6)
mazda
(4)
microcontroler
(35)
mountain lion
(2)
music
(37)
netbook
(1)
nugnux
(6)
os x
(36)
php
(1)
Physicist
(29)
Picture
(3)
programming
(189)
Python
(109)
S2
(13)
software
(7)
Soliloquy
(125)
Ubuntu
(5)
unix
(4)
Video
(8)
wayang
(3)
yosemite
(3)