fungsi split di delphi

function split(input: string; schar: Char; s: Integer): string;
var
  c: array of Integer;
  b, t: Integer;
begin
  Dec(s, 2);  // for compatibility with very old & slow split function
  t := 0;     // variable T needs to be initialized...
  setlength(c, Length(input));
  for b := 0 to pred(High(c)) do 
  begin
    c[b + 1] := posex(schar, input, succ(c[b]));
    // BREAK LOOP if posex looped (position before previous)
    // or wanted position reached..
    if (c[b + 1] < c[b]) or (s < t) then break 
    else 
      Inc(t);
  end;
  Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
end;

penggunaan:
SPLIT(‘this is a test ‘,’ ‘,3) = ‘is’
SPLIT(‘data;another;yet;again;more;’,’;’,4) = ‘yet’

Check if a file is text or binary in Delphi?

function IsTextFile(const sFile: TFileName): boolean;
//thanks to Marcelo Castro - from Brazil

var
 oIn: TFileStream;
 iRead: Integer;
 iMaxRead: Integer;
 iData: Byte;
 dummy:string;
begin
 result:=true;
 dummy :='';
 oIn := TFileStream.Create(sFile, fmOpenRead or fmShareDenyNone);
 try
   iMaxRead := 1000;  //only text the first 1000 bytes
   if iMaxRead > oIn.Size then
     iMaxRead := oIn.Size;
   for iRead := 1 to iMaxRead do
   begin
     oIn.Read(iData, 1);
     if (idata) > 127 then result:=false;
   end;
 finally
   FreeAndNil(oIn);
 end;
end;

(* ----- Sample call ----- *)

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
  if IsTextFile(OpenDialog1.FileName) then
  showmessage('is ascii')
  else showmessage('is BinaryFile')
  end;

end;

Penggunaan TXMLDoc di Delphi

saya mencoba menulis kembali sebuah unit tersendiri sehingga dapat digunakan untuk mengelola TXMLDoc dan dapat digunakan untuk menggantikan file .INI

unit uPenggunaanXml;

interface

uses
  Forms, SysUtils, Windows, XmlIntf, XMLDoc;

type
  TXMLConfig = class
  private
    FModified: Boolean;
    FFileName: string;
    FXMLDoc: TXMLDocument;
    FBackup: Boolean;
    function GetVersion: string;
  public
    constructor Create(const FileName: string); overload;
    constructor Create; overload;
    destructor Destroy; override;
    procedure Save;
    function ReadString(const Section, Key, default: string): string;
    procedure WriteString(const Section, Key, Value: string);
    function ReadInteger(const Section, Key: string; default: Integer): Integer;
    procedure WriteInteger(const Section, Key: string; Value: Integer);
    function ReadBoolean(const Section, Key: string; default: Boolean): Boolean;
    procedure WriteBoolean(const Section, Key: string; Value: Boolean);
    property Backup: Boolean read FBackup write FBackup;
    property Version: string read GetVersion;
  end;

implementation

{ TXMLConfig }

constructor TXMLConfig.Create(const FileName: string);
begin
  inherited Create;
  FBackup         := True;
  FFileName       := FileName;
  FXMLDoc         := TXMLDocument.Create(Application);
  FXMLDoc.Options := [doNodeAutoIndent];
  if FileExists(FFileName) then
    FXMLDoc.LoadFromFile(FFileName)
  else
  begin
    FXMLDoc.Active := True;
    FXMLDoc.AddChild('Configuration');
  end;
end;

constructor TXMLConfig.Create;
begin
  Create(ChangeFileExt(Application.Exename, '_cfg.xml'));
end;

destructor TXMLConfig.Destroy;
begin
  Save;
  FXMLDoc.Destroy;
  inherited;
end;

function TXMLConfig.GetVersion: string;
begin
  Result := '1.00';
end;

function TXMLConfig.ReadBoolean(const Section, Key: string; default: Boolean): Boolean;
begin
  Result := Boolean(ReadInteger(Section, Key, Integer(default)));
end;

function TXMLConfig.ReadInteger(const Section, Key: string; default: Integer): Integer;
begin
  Result := StrToInt(ReadString(Section, Key, IntToStr(default)));
end;

function TXMLConfig.ReadString(const Section, Key, default: string): string;
var
  Node: IXMLNode;
begin
  Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(Section);
  if Assigned(Node) and Node.HasAttribute(Key) then
    Result := Node.Attributes[Key]
  else
    Result := default;
end;

procedure TXMLConfig.Save;
begin
  if not FModified then
    Exit;
  if FBackup then

    CopyFile(PChar(FFileName), PChar(FFileName + '.bak'), False);
  FXMLDoc.SaveToFile(FFileName);
  FModified := False;
end;

procedure TXMLConfig.WriteBoolean(const Section, Key: string; Value: Boolean);
begin
  WriteInteger(Section, Key, Integer(Value));
end;

procedure TXMLConfig.WriteInteger(const Section, Key: string; Value: Integer);
begin
  WriteString(Section, Key, IntToStr(Value));
end;

procedure TXMLConfig.WriteString(const Section, Key, Value: string);
var
  Node: IXMLNode;
begin
  if ReadString(Section, Key, '') = Value then
    Exit;
  Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(Section);
  if not Assigned(Node) then
    Node := FXMLDoc.DocumentElement.AddChild(Section);
  Node.Attributes[Key] := Value;
  FModified := True;
end;

end.

Semoga membantu…

Paging Halaman Menggunakan PHP

Artikel kali ini akan membahas bagaimana caranya untuk paging halaman menggunakan PHP. Jika anda pernah membuat aplikasi dengan menggunakan php maka anda mungkin pernah menampilkan data news atau produk dalam halaman, jika jumlah news atau product yang ditampilkan puluhan atau bahkan ratusan maka jika ditampilkan hanya dalam satu halaman akan menyulitkan user dalam melihat atau mencari data yang diinginkan.

Solusi yang dapat digunakan untuk menyelesaikan masalah ini adalah dengan menggunakan paging, dengan paging maka anda dapat menampilkan content per jumlah yang anda inginkan (tidak harus semua content ditampilkan). Misal dalam aplikasi contoh yang saya buat akan ditampilkan berita yang diambil dari tabel berita didatabase, berita tersebut akan ditampilkan per 3 berita dalam satu halaman. Adapu kode lengkapnya sebagai berikut:

Pertama buat variabel halaman yang akan menampung nilai halaman ke berapa yang akan ditampilkan

$hal = $_GET[hal];

if(!isset($_GET['hal'])){ 
    $page = 1; 
} else { 
    $page = $_GET['hal']; 
} 

Continue reading

Upload File dengan PHP

Artikel kali ini akan membahas bagaimana cara untuk mengupload file kedalam web app anda.

Pertama kali buat halaman untuk memasukan file yang akan anda upload dengan nama upload.html, kodenya sebagai berikut:

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form method="post" enctype="multipart/form-data" action="prosesupload.php">
Upload File : <input type="file" name="userfile" />
<input type="submit" name="action" value="Upload" />
</form>
</body>
</html>

image

Ketika tombol submit ditekan maka file prosesupload.php akan segera dipanggil, file ini berisi kode php yang akan mengupload file kedalam web app anda. Adapun kode lengkap dari program tersebut:

Continue reading

Menggunakan Object Collection dan Generic (VB) Part 2

Pada blog yang sebelumnya saya sudah membahas cara menggunakan object array pada VB.NET, pada artikel kali ini saya akan meneruskan untuk membahas object collection yang lain yang sering digunakan yaitu List

Pada .NET 2.0 List menggunakan fitur Generic, sehingga kita bisa mebuat object collection yang “typed safe”.

Dengan array kita harus mendeklarasikan terlebih dahulu kapasitas array, tapi bila menggunakan List tidak perlu karena object yang disimpan pada list bersifat dinamis

Contoh penggunaan List sederhana:

Untuk membuat object list baru yang bertipe string kodenya

'Menggunakan List yang bertipe string
        Dim objNama As New List(Of String)

Untuk menambahkan nilai bertipe string kedalam list caranya

'cara menambahkan kedalam elemen list
        objNama.Add("Erick")
        objNama.Add("Anton")
        objNama.Add("Willy")
        objNama.Add("Bejo")

Untuk mengambil nilai dari object list:

'untuk mengambil elemen yang ada dalam list
        For Each strNama As String In objNama
            Console.WriteLine(strNama)
        Next

List tidak hanya digunakan untuk menampung nilai dengan tipe-tipe data native seperti int,double,currency,dll tapi list juga bisa digunakan untuk menampung nilai yang bertipe object

Continue reading

Fungsi-fungsi untuk Lock, Hibernate, Logoff, Shutdown Windows pada VB.NET

Harus import:
using System.Runtime.InteropServices;

Lock Computer:

[DllImport(“user32.dll”)]
public static extern void LockWorkStation();

Kemudian panggil fungsinya:
LockWorkStation();

Logoff:

[DllImport(“user32.dll”)]
public static extern int ExitWindowsEx(int uFlags, int dwReason);

Panggil fungsinya:
Logoff biasa:
ExitWindowsEx(0, 0);
Logoff force:
ExitWindowsEx(4, 0);

Reboot:
ExitWindowsEx(2, 0);

Shutdown:
ExitWindowsEx(1, 0);

Hibernate:
Application.SetSuspendState(PowerState.Hibernate, true, true);
Standby:
Application.SetSuspendState(PowerState.Suspend true, true);

Bagus kan??

Akses SQLite menggunakan JDBC (java)

import java.sql.*;

public class Main {
   public static void main(String[] args) throws Exception {
         Class.forName("org.sqlite.JDBC");
         Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
         Statement stat = conn.createStatement();
         ResultSet rs = stat.executeQuery("SELECT Question, Answer, Type FROM Questions");
         while (rs.next()) {
            System.out.println(rs.getString("1"));
            System.out.println(rs.getString("2"));
            System.out.println(rs.getString("3"));
         }
         rs.close();
         conn.close();
  }
}