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;
Uncategorized
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…
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();
}
}
Fungsi Explode/Split pada String dengan bahasa C
Pernah tahu fungsi explode PHP atau split nya VB.NET? fungsi tersebut sangat berguna bagi kita yang hendak melakukan tokenisasi… nah, kita bisa mencobanya pada bahasa C:
#include
#include
#include
void explode(char str[100],char hasil[10][50],char dasar,int *counter1){
int i,counter2=0;
for(i=0;i<strlen(str);i++){
if(str[i] == dasar){
counter2=0;
*counter1=*counter1 + 1;
}
else{
hasil[*counter1][counter2]=str[i];
counter2++;
}
}
}
void main(){
char str[100],hasil[10][50];
int counter1=0;
printf(“masukkan kalimat : “);fflush(stdin);gets(str);
char dasar = ‘ ‘;
explode(str,hasil,dasar,&counter1);
for(int i=0;i<=counter1;i++){
printf(“%s\n”,hasil[i]);
}
}
Nah silahkan mencoba…
Penggunaan Struct
Bahan untuk Kelas Algo dan Strukdat C++
- Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel
yang bernaung dalam satu nama yang sama dan memiliki kaitan satu
sama lain. - Berbeda dengan array hanya berupa kumpulan variabel yang bertipe data
sama, struct bisa memiliki variabel-variabel yang bertipe data sama atau
berbeda, bahkan bisa menyimpan variabel yang bertipe data array atau
struct itu sendiri. - Variabel-variabel yang menjadi anggota struct disebut dengan elemen
struct.
Bentuk umum dari struct:
typedef struct{
tipe_data <nama_var>;
tipe_data <nama_var>;
.... }
Struct bisa diumpamakan sebagai sebuah obyek, misalnya: obyek Mahasiswa. Struct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya:
- NIM misal karakter sejumlah 8
- Nama yaitu karakter
- IPK yaitu bilangan pecahan