Da moze da vam više koda stane u Delphi – u 2007,p robajte da u registry dodate string value koji će sadržati vrednost i zvaće se Zoom u [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Editor.
Preuzeto odavde.
Posted on Monday, June 9th, 2008
Under: Delphi | No Comments »
Cilj mi je bio da napravim aplikaciju koja ce biti u system tray – u i na neki događaj da mi se podigne forma u system tray – u, kao neki PopUp Notification u Microsoft Windows Messenger – u, ili MS Outlook 2003. Nisam našao komponentu, ali sam našao parče koda koji radi to što želim:
function TaskBarRect: TRect;
var
data : TAppbardata; //za ovo vam treba unit ShellApi, u uses listi
begin
FillChar( data, SizeOf(data), 0 );
SHAppBarMessage(ABM_GETTASKBARPOS, data);
// Taskbar autohide has no effect on the resulting rect.
result := data.rc;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
workarea : TRect;
begin
SystemParametersInfo( SPI_GETWORKAREA, 0, @workarea, 0 );
// If the taskbar is set to autohide the entire desktop
// is the workarea.
SetBounds( workarea.Right -Width,
workarea.Bottom -Height,
Width, Height );
end;
Preuzeo odavde.
Posted on Wednesday, May 28th, 2008
Under: Delphi | No Comments »
Dobio sam zadatak da napravim aplikaciju koja će da prikazuje i prima pozive iz VoIP centrale.
Koliko sam shvatio do sada, centrala može da prima i šalje komande preko TCP/IP, odn., preko telneta.
Npr napišete u command promptu:
telnet 191.118.5.89 5038
I onda u telnet konzoli:
Asterisk Call Manager/1.0
Action: Login
Username: user
Secret: password
I udarite enter dva puta i treba da dobijete odgovor:
Response: Success
Message: Authentication accepted
U Delphi – u počeo da istražujem kako radi indy telnet komponenta.
Prvi problem, gde sam zapeo, je da mi se indy zakucao kod ove komande:
IdTelnet1.SendCmd(‘Action: logoff’+cr+cr,0);
Morao sam da uradim sledeće:
s:='Action: logoff'+cr+cr;
for i := 1 to length(length(s)) do
IdTelnet1.SendCh(s[i]);
Odn., za svaku komandu koju šaljete preko telneta asterisku mora tako ići.
Primer malo duži:
procedure TForm2.Button2Click(Sender: TObject);
var
pom: TStrings;
s: String;
i, j: Integer;
begin
pom := TStringList.Create;
pom.Add('Action: Login'+cr);
pom.Add('Username: user'+cr);
pom.Add('Secret: password'+cr+cr);
for j := 0 to pom.Count - 1 do
for i := 1 to length(pom.Strings[j]) do
IdTelnet1.SendCh(pom.Strings[j][i]);
FreeAndNil(pom);
end;
Posted on Friday, May 23rd, 2008
Under: Asterisk VoIP, Delphi | No Comments »
Da biste u WebSphere MQ poslali user identifier, potrebne su vam sledece linije koda:
var
MsgDesc : MQMD;
...
MsgDesc := MQMD_DEFAULT;
MsgDesc.UserIdentifier := chrUserID;
PutMsgOptions.Options := MQPMO_SET_IDENTITY_CONTEXT;
Preuzeto odavde. Jedino, za sada, user identifier mi se prebacuje u lower case, za sada ne znam zasto.
Posted on Friday, May 23rd, 2008
Under: Delphi, WebSphere MQ | No Comments »
Prilikom otvaranja (open) navesti kao opcije:
MQOO_INQUIRE + MQOO_FAIL_IF_QUIESCING
Funkcija je:
var
mqlCompCode, mqlReason, mqlIntAttrs: MQLONG;
mqlSelectors: array [0..2] of MQLONG;
...
MQINQ(Hconn, Hobj, 1, @mqlSelectors, 1, @mqlIntAttrs, 0, nil, @mqlCompCode, @mqlReason);
I sa mqlIntAttrs mozete dobiti potrebne informacije:
if mqlCompCode <> MQCC_OK then
ShowMessage( 'Inquire Failed. Reason: ' + IntToStr(mqlReason))
else
ShowMessage(inttostr(mqlIntAttrs));
Preuzeto odavde.
Posted on Friday, May 16th, 2008
Under: Delphi, WebSphere MQ | No Comments »
Otprilike ovako nekako radimo:
Polja u MySQL – u neka sva budu utf8
U Delphi – u na after connect pokrecemo jedan upit:
set names cp1250
I u svakom PHP unitu koji koristimo radimo:
mysql_query(“set names utf8″);
Valjda je to sve.
Posted on Friday, May 9th, 2008
Under: Delphi, MySQL, PHP | No Comments »
Note to my self.
Kad radimo nešto tipa
stmGetText := TStringStream.Create(Buffer);
xml.LoadFromStream(stmGetText)
Onda moramo da kažemo
stmGetText.Position:=0;
Jer stream ode na kraj…
Posted on Tuesday, April 15th, 2008
Under: Delphi | No Comments »
Ukoliko imate više sekcija sa istim nazivom, možete ih u ini – u preuzeti preko:
var
ini: TMemIniFile;
...
begin
...
ini := TMemIniFile.Create('c:\file.ini');
slSections := TStringList.Create;
ss := TStrings.Create;
ini.ReadSections(slSections);
for I := 0 to slSections.Count - 1 do
begin
ss := TStrings(slSections.Objects[i]);
for j := 0 to ss.Count - 1 do
begin
if ss.Values['value']<>'' then
strValue:=ss.Values['value'];
end
end
end
Posted on Monday, April 14th, 2008
Under: Delphi | No Comments »
A verovatno važi i za druge jezike ne samo za C#, tu sam probao.
Kada želite da prosledite jednostavan string iz C# u Delphi DLL, procedura mora da vam uzgleda ovako:
procedure RSS2File(strRSS: pchar); stdcall; export;
Znači umesto da je tipa string koristite pchar i takođe vam je potreban stdcall inače će vam prijavljivati grešku.
U C# kod vam izgleda ovako:
[DllImport("Project1.dll", CharSet = CharSet.Ansi)]
unsafe static extern string RSS2File(String asc);
unsafe private void button1_Click(object sender, EventArgs e)
Znači bitno je i da stavite unsafe na private void.
Posted on Monday, March 17th, 2008
Under: C#, Delphi | No Comments »
Tip podataka TObjectList je pokazivač, dobro je što vam on brine za dodavanje i brisanje elemenata u listu, ali problem je što morate biti obazrivi šta dodajete.
Moj problem je bio sledeći, radio sam nešto ovako:
olLista: TObjectList;
slLista:TStringList;
i: Integer;
...
olLista := TObjectList.Create;
slLista := TStringList.Create;
for i := 0 to 3 do
begin
slLista.Text := IntToStr(i);
olLista.Add(slLista);
end;
olLista.Free;
Problem je što u gornjem kodu, sva 4 elemnta u olLista biće 3, trebalo je uraditi ovako nešto:
olLista: TObjectList;
slLista:TStringList;
i: Integer;
...
olLista := TObjectList.Create;
for i := 0 to 3 do
begin
slLista := TStringList.Create;
slLista.Text := IntToStr(i);
olLista.Add(slLista);
end;
olLista.Free;
olLista.Free; na kraju će pobiti sve objekte tipa TStringList koji se nalaze u listi.
Kod nisam testirao, tako da je moguće da nešto ne radi.
Posted on Friday, February 22nd, 2008
Under: Delphi | No Comments »