Halaman

Rabu, 26 Oktober 2011

Delphi : Working with path, file name, directory

From time to time, you would need file manipulations integrated with your software(s), and you usually needs the library for working with your directory, these are couples of directory routines which is very much usefull

  1. ExtractFilePath : this will returns the directory for a file, including a backslash("\" ~ Env. Windows) 
  2. ExpandFileName: Example : "c:\program files\yohan\is\cool\..\.." will returns "c:\program files\yohan\"
Two very handy functions! :)

Kamis, 20 Oktober 2011

Share : Palm Pre as a USB modem

Have the usb cable? have the data plan? have the thing to try out your palm pre as a modem? fear not as webosinternals once again provide us with the most sophisticated solution for Free, "Tethering" your palm pre as a modem..

you could tether using Wifi, Bluetooth, even USB connection..

without further ado.. let's get some do.., here is what you need to do..
cool rhyme isn't it? hehehe

  1. Download your driver, you could download it here.. (64bit driver) or (32bit driver)
    note : after you downloaded the file, remove the txt extension from the downloaded file
  2. Download FreeTether (look for it on preware, or using your webosquickinstall 4.x) or better yet, using google ;)
  3. Now plug your pre to the computer
  4. Open and run FreeTether, turn on the USB tethering
  5. Go to your windows device manager, look for the device.. something called "RNDIS gadget" with an exclamation mark on it's side
  6. Update your driver, navigate to where you store your download( ~ step 1 )
  7. Choose to manually look and install your driver
  8. After you install the driver, windows will automatically detected new network and tries to connect with it
  9. Wait for it..
  10. Enjoy surfing the internet :)
Have a great and blessed day everyone!

Selasa, 11 Oktober 2011

Sabtu, 24 September 2011

Delphi:runtime TDBGrid change default row height

type
  TyourHackGrid = class(TDBGrid);

TyourHackGrid(yourDBGrid).RowHeights[0] := 50;
Nice indeed ;)

Delphi : Load png to TBitmap

HI there good friends, for those of you who would like to get load a jpeg image and then load the data to a TBitmap object, here is a neat good trick to get it done :

procedure TForm1.btn1Click(Sender: TObject);
var
	bmp : TBitmap;
begin
    if(dlgOpenPic1.Execute()) then
    begin
        img1.Picture.LoadFromFile(dlgOpenPic1.FileName);

        bmp := TBitmap.Create;
        try
            bmp.Width := img1.Picture.Width;
            bmp.Height := img1.Picture.Height;

            bmp.Canvas.Draw(0, 0, img1.Picture.Graphic);

            Canvas.Draw(btn1.Left, btn1.Top + btn1.Height + 20, bmp);
        finally
            bmp.Free;
        end;
    end;
end;
Just dont forget to include the jpeg unit if you want to work with the jpegs, and for delphi 2009 and up you could add the PNGImage to work with png files on your delphi project

Have fun dear friends! ;)

Jumat, 23 September 2011

Playing with linux

Downloading file : use wget http://blabla.com/bla.zip
working with a tar.gz : tar -zxvf arcieve.tar.gz

since i like to play with installing the development.. this will include the header file XLib.h, XUtil.h
apt-get install xorg-dev

finding some file?
find / -name filename.ext -print

Rabu, 14 September 2011

WEBOS : Google map doesn't recognize your location?

A simple solution to that but might be not permanent is because of the latitude mode problem on the native google map application, me too had those similar problem, and browsing the web give me one solution that worked like charm ;)

Open your browser, clear your cache
hen go to the following address : http://maps.google.com/maps/m?mode=latitude


Google map application will open automaticly
and voila..
we had our location detected flawlessly.


Hints for the geek :
our palm pre phone is very much capable of the gps
try running this..
##DEBUG and you will find numerous wonderfull information there :)


Nice..


I love this phone..

Kamis, 25 Agustus 2011

Delphi : Variable Parameters, Packed Records

Variable Parameters
taken from www.chami.com
//
// FunctionWithVarArgs()
//
// skeleton for a function that
// can accept vairable number of
// multi-type variables
//
// here are some examples on how
// to call this function:
//
// FunctionWithVarArgs(
//   [ 1, True, 3, '5', '0' ] );
//
// FunctionWithVarArgs(
//   [ 'one', 5 ] );
//
// FunctionWithVarArgs( [] );
//
procedure FunctionWithVarArgs(
  const ArgsList : array of const );
var
  ArgsListTyped :
    array[0..$FFF0 div SizeOf(TVarRec)]
      of TVarRec absolute ArgsList;
  n         : integer;
begin
  for n := Low( ArgsList ) to
           High( ArgsList ) do
  begin
    with ArgsListTyped[ n ] do
    begin
      case VType of
        vtInteger   : begin
          {handle VInteger here}      end;
        vtBoolean   : begin
          {handle VBoolean here}      end;
        vtChar      : begin
          {handle VChar here}         end;
        vtExtended  : begin
          {handle VExtended here}     end;
        vtString    : begin
          {handle VString here}       end;
        vtPointer   : begin
          {handle VPointer here}      end;
        vtPChar     : begin
          {handle VPChar here}        end;
        vtObject    : begin
          {handle VObject here}       end;
        vtClass     : begin
          {handle VClass here}        end;
        vtWideChar  : begin
          {handle VWideChar here}     end;
        vtPWideChar : begin
          {handle VPWideChar here}    end;
        vtAnsiString: begin
          {handle VAnsiString here}   end;
        vtCurrency  : begin
          {handle VCurrency here}     end;
        vtVariant   : begin
          {handle VVariant here}      end;
        else          begin
          {handle unknown type here} end;
      end;
    end;
  end;
end;
Packed Records
Packed records is a way to align Delphi records. Delphi variables usually aligned at 2, 4, or 8 byte to optimize access, to make things clear, take a look at following code (taken from delphibasic.co.uk)
type
  // Declare an unpacked record
  TDefaultRecord = Record
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

  // Declare a packed record
  TPackedRecord = Packed Record
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

var
  defaultRec : TDefaultRecord;
  packedRec  : TPackedRecord;

begin
  ShowMessage('Default record size = '+IntToStr(SizeOf(defaultRec)));
  ShowMessage('Packed record size = '+IntToStr(SizeOf(packedRec)));
end;
there is more advanced usage for the record type of delphi, such as this one :
type 
   TRect = packed record
     case Integer of
       0: (Left, Top, Right, Bottom: Integer);
       1: (TopLeft, BottomRight: TPoint);
   end; 
TRect.TopLeft will map to the TRect.Left and TRect.Top, TRect.BottomRight will map to the TRect.Right and TRect.Bottom, anoher usage would be like this one :
type
   // Declare a fruit record using case to choose the
   // diameter of a round fruit, or length and height ohterwise.
   TFruit = Record
     name : string[20];
     Case isRound : Boolean of // Choose how to map the next section
       True  :
         (diameter : Single);  // Maps to same storage as length
       False :
         (length   : Single;   // Maps to same storage as diameter
          width    : Single);
   end;
when isRound is true, you could define 1 more variable, and that is the diameter:Single, and if isRound is false, you could define 2 more variable, that is length, and width

Sabtu, 20 Agustus 2011

Ubuntu : Adding new harddisk

First we need to list our hardware, is it detected yet by ubuntu? by using this command :
sudo lshw -C disk


make note of where your disk is, for example /dev/sdb


if you have gparted, then you got your self a rich partition manager, just go and choose your hardware (/dev/sdb in my example) and then new and then partition that disk

if you are using command line then there is the fdisk command

now to mount the device, simply create a new folder on your /media folder for the mount point example :
sudo mkdir /media/my_new_hd


and then to actualy mount it to the system :
sudo mount /dev/sdb /media/my_new_hd

now browse and get wild with nautilus

ah yes, to automatically mount the new HD, add the new hd to your your /etc/fstab file to something similar like this one liner :
/dev/sdb1 /media/mynewdrive ext3 defaults 0 2


**to launch editor, use sudo gedit /etc/fstab


I think i'm in love with ubuntu.. :D
unfortunately delphi is not there..
the games is not there..
but there is always lazarus ;)

ah yes, i currently running ubuntu 8.04, old i know, but that the only CD i had :D it's adequate for me to play aground with this powerful opensource OS

Have Fun everyone!

Solving Problem : using putty, connecting to Amazon EC2

There is a trick if your pem file converted to ppk (putty's private key) and the server respond is :
Server do not accept our key or something similar like that, server send public key etc..

On one blog i find that we need to open the pem file on a notepad and then add one line to the last line, so make sure you get your cursor under those texts..

One line is enough ;)

Now get to putty again, (i'm using ubuntu) so when the putty ask :"Login As" i answered Ubuntu and voila.. we get our self a great powerful cloud server

Kamis, 18 Agustus 2011

Playing with ubuntu

Playing with ubuntu fresh install, my target is to install indefero, mercurial to a vps, so i practice it using a virtual box.
the following is the commands for editing creating renaming file directory install etc, including installing the lamp and the pluf :)

  1. To rename dir or rename file using ubuntu comand line : mv
  2. To download file wget http://...
  3. To become a super user : sudo bash...
  4. To launch explorer along as super user : gksudo nautilus
  5. To restart apache : sudo /etc/init.d/apache2 restart
  6. To install sudo apt-get install package
  7. To upgrade apt : sudo apt-get upgrade
Ah yes, there are many more to explore!

Selasa, 16 Agustus 2011

Delphi : Dynamic object creation, Class Reference

A quick note for those delphi developer needs to use the dynamic object creation :
using the class reference is the good way to do it :)

a simple example :
procedure TForm1.Button1Click(Sender: TObject);
type
  CRForm = class of TForm;
var
  a: array[0..2] of CRForm;
  c: TForm;
begin
  a[0] := TForm2;
  a[1] := TForm3;
  a[2] := TForm4;

  c := TForm(a[2].Create(self));

  c.ShowModal;

  c.Free;
end;           
welcome to the power! :)
hope you could utilize this technique on your next application development adventure!

Rabu, 10 Agustus 2011

Solving : Windows Update Standalone Installer 0x80070422 The service cannot be started, either because it is disabled or because it has no enabled devices associated with it

If you stumbled that one,
you have accidentally disabled Windows Update Service, to enable the service again go to your Administrative Tools, and enables the Windows Update Service

Here is the step :
  1. Click on Windows Icon / Start Menu
  2. Administrative Tools
  3. Services
  4. Search for "Windows Update", double click on it, and then enable this service
hope this help! :)

Selasa, 09 Agustus 2011

Delphi XE : Out of memory

A great solution found by Giedrius Bauza
HKEY_CURRENT_USER – SOFTWARE – MICROSOFT – WINDOWS – INTERNET SETTINGS – ZONES
if you find Letter not Numbers, delete the Letter one.

Cheers! :)

Thank you mr. Bauza.

Rabu, 03 Agustus 2011

Delphi : Samples

Leverage your delphi skills by utilizing samples, read it, earn it, and sleep with it :D
http://www.torry.net/pages.php?id=352

regards everybody

Kamis, 28 Juli 2011

Delphi : Static variable

Static variable on a class :
type
  TMyClass = class(TObject)
  public
    class var X: Integer;
  end;

Selasa, 26 Juli 2011

Delphi : Invalid Pointer Operation

owhh my!! what a...
what is this invalid pointer operation, where could i trace the source of the bug??

:D

Do not mend my friend for there is a will there is a way..

first you will need this wonderful project :
http://sourceforge.net/projects/fastmm/
  1. Do not forget to set the "FASTMM4Options.inc" on your directory of units and looks for the line that says FullDebugMode
  2. Go to your project options : set linker map to "Detailed"
  3. Include the "FastMM_FullDebugMode.dll" to where your binary is executed
now.. when there is memory leaks detected, you will get a full detailed causes and stacks trace

Woow....
just Wow.. 
:)

Productivity : Using bookmark on CodeGear

You can mark a location in your code with a bookmark and jump directly to it from anywhere in the file. You can set up to ten bookmarks. Bookmarks are preserved when you save the file and available when you reopen the file in the Code Editor.

  1. To set a bookmark
    In the Code Editor, right-click the line of code where you want to set a bookmark. The Code Editor context menu is displayed.
    Choose Toggle BookmarksBookmark n, where n is a number from 0 to 9. A bookmark icon  is displayed in the left gutter of the Code Editor.
    Tip: To set a bookmark using the shortcut keys, press CTRL+SHIFT and a number from 0 to 9.

  2. To jump to a bookmark
    In the Code Editor, right-click to display the context menu.
    Choose GoTo BookmarksBookmark n, where n is a number from 0 to 9.
    Tip: To jump to a bookmark using the shortcut keys, press CTRL and the number of the bookmark. For example, CTRL+1 will jump you to the line of code set at bookmark 1.

  3. To remove a bookmark
    In the Code Editor, right-click to display the context menu.
    Choose Toggle BookmarksBookmark n, where n is the number of the bookmark you want to remove. The bookmark icon is removed from the left gutter of theCode Editor.
Tip: To remove all bookmarks from a file, choose Clear Bookmarks


Reference : Embarcadero

Senin, 25 Juli 2011

I am Blessed!

Have you look at your mother eyes lately?
Have you hold Her hand and say thank you deep from your hearth?

How's your Father, the one who protects you from everything? putting roof on your head? giving beds to your sleep, giving good dreams everyday?

Your Parents are your heaven, remember that always! though some times it could be hard to understand them, it's actually harder for them to understand yours, but they always tried to understand yours, have you tried to understand theirs? :D

My mother approach me today and said she had the money to help me buy the house, i have 21 mil in my hand, and she said she could help me with another 40 mil, i know that she don't have that much of money, i'm really confused why she told me that.. maybe someday i will understand what's the meaning of her words..

My mother always told me not to give up on everything, not to scare on anything except the Lord ;)
she is not only told me, but she is showing it to me each and every day

she told me to believe the good Lord with every breath, expects everything good in the future

She is the most optimistic person i ever met :) Thank you mom.. thank you dad, thank you big sister

a taste of heaven on earth.. thank you Lord

So.. i will not give up! never!

My mother is my role model my father is my guardian and my sister is my guidance and so my friends, what more could i ask for?

Thank you Lord, i'm very grateful

Minggu, 24 Juli 2011

Delphi : How to rotate bits?

Rotating bits using delphi is not directly supported
here is a function i found searching the internet to rotate the bits :
function JHROR32(Value : dword ; N : integer) : dword ;
begin
  Result := (Value shr N) + (Value shl (32-N));
end;

function JHROL32(Value : dword ; N : integer) : dword ;
begin
  Result := (Value shl N) + (Value shr (32-N));
end;
Hope you find it usefully! ;)

Source : http://www.merlyn.demon.co.uk/del-bits.htm