Archív konference Delphi
Zpět na výběr roku archívu nebo přejít na fulltextové vyhledávání v konferenci.
Pouzivani meny v Delphi
[*] Lstiburek Pavel <lstiburek(zv)ceb(tec)cz> - 25.10.2004 15:58:47
A co to ma spolecneho Currency,
Currency je typ v pevne carce 18:4, s automatickym
zaokrouhlovanim na 2 desetina mista.
Pavel
> From: konfera(zv)rus(tec)cz [mailto:konfera(zv)rus(tec)cz]
> potrebuji pomoci s cizi menou. Prozatim jsem to
> nepotreboval, tak potrebuji
> nejak nakopnout. Mam nejake pole, do ktereho se vyplni
> cislo (cena), a pak
> combo s menou. Jak tyhle dve veci efektivne spojim, abych s
> tim mohl pracovat
> jako s Currency typem (potrebuji to primarne ulozit do db ...)?
>
Pouzivani meny v Delphi
[*] konfera(zv)rus(tec)cz - 25.10.2004 16:02:48
Original message (25. rijna 2004, "Lstiburek Pavel"):
LP> A co to ma spolecneho Currency,
LP> Currency je typ v pevne carce 18:4, s automatickym
LP> zaokrouhlovanim na 2 desetina mista.
Zdravim,
tak jinak, potrebuji nejak zaridit, aby mi typ Currency dokazal ulozit i neco
jineho, nez "Kc", pokud to nejde, jak mam postupovat abych si udrzel castku a
menu pri sobe?
Diky,
Peter
Pouzivani meny v Delphi
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 25.10.2004 16:04:48
Puvodni zprava ze dne 25.10.2004:
> potrebuji pomoci s cizi menou. Prozatim jsem to nepotreboval, tak
> potrebuji nejak nakopnout. Mam nejake pole, do ktereho se vyplni
> cislo (cena), a pak combo s menou. Jak tyhle dve veci efektivne
> spojim, abych s tim mohl pracovat jako s Currency typem (potrebuji
> to primarne ulozit do db ...)?
Nejak jsem nepochopil, co vlastne chces. Currency je proste urcity
datovy typ, s tou vlastni menou nema nic spolecneho. Co tam chces
spojovat?
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
Pouzivani meny v Delphi
[*] Ales Vasicek <vasicek(zv)ecommerce(tec)cz> - 25.10.2004 16:06:49
Udelej si svuj vlastni typ:
type TMojeMena = record
Hodnota : Currency;
Mena : string;
end;
var Mena : TMojeMena;
begin
Mena.Hodnota := 100;
Mena.Mena := 'Kc';
....
end;
Ales
> -----Original Message-----
> From: konfera(zv)rus(tec)cz [mailto:konfera(zv)rus(tec)cz]
>
> tak jinak, potrebuji nejak zaridit, aby mi typ Currency
> dokazal ulozit i neco
> jineho, nez "Kc", pokud to nejde, jak mam postupovat abych
> si udrzel castku a
> menu pri sobe?
Pouzivani meny v Delphi
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 25.10.2004 16:12:49
Puvodni zprava ze dne 25.10.2004:
> tak jinak, potrebuji nejak zaridit, aby mi typ Currency dokazal
> ulozit i neco jineho, nez "Kc", pokud to nejde, jak mam postupovat
> abych si udrzel castku a menu pri sobe?
No currency neuklada Kc ani USD ani kopejky. Currency je jen cislo
jako kazde jine. To, co vidis na obrazovce, to se ukazuje navic mena z
nastaveni operacniho systemu. Takze pokud chces udrzovat menu, musis
si pridat dalsi promennou treba s ciselnikem men.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
Pouzivani meny v Delphi
[*] konfera(zv)rus(tec)cz - 25.10.2004 15:36:46
Zdravim,
potrebuji pomoci s cizi menou. Prozatim jsem to nepotreboval, tak potrebuji
nejak nakopnout. Mam nejake pole, do ktereho se vyplni cislo (cena), a pak
combo s menou. Jak tyhle dve veci efektivne spojim, abych s tim mohl pracovat
jako s Currency typem (potrebuji to primarne ulozit do db ...)?
Dekuji moc!
Prijemny den,
Peter
Jak pridat v runtime pocitany sloupecek do kompone
[*] Tomas Krejzek <tomas.krejzek(zv)kpsys(tec)cz> - 25.10.2004 15:04:43
Hmmm, to jsem delal cely dopoledne
tedy ja to delal pres
IBQuery->FieldDefs->AddFieldDef
bohuzel to nefungovalo, a pozdejs jsem si v helpu precetl ze to ma
vyznam pouze kdyz vytvaris databazi, jinak je to k prdu.
Pravda nezkousel jsem zavrit a otevrit dataset, bohuzel netusim jak se k
nemu dostanu, snad jen v TIBDatabase je objekt DataSet.
Ale dik moc.
Tom
Ludek Finstrle napsal(a):
>>Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
>>prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
>>ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
>>odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
>>
>>
>
>Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
>po teto definici provest DataSet.Open.
>Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
>pochopis, jak to vlastne funguje.
>
>Luf
>
>
>
>
>
Problem so SP1 na Delphi 7
[*] Miroslav Hrosso <hrossik(zv)nrsys.sk> - 25.10.2004 15:00:43
Dobry den,
Po instalacii SP1 na Dephi 7 mi prestalo fungovat volanie helpu z aplikacie.
Help mam v tvare HLP suboru.
Volanie zabezpecujem cez nasledujuce funkcie :
Mam WIN2003 ent, Delphi 7.
function TFormUOkno.AppHelp(Command: Word; Data: Longint; var CallHelp:
Boolean): Boolean;
begin
Application.HelpFile := Global.Cesta_HLP + APLNAME + '.hlp';
CallHelp := True;
Result := True;
end;
procedure TFormUOkno.ActionHelpExecute(Sender: TObject);
begin
Application.HelpJump(Self.ClassName);
end;
Miro.
Jak pridat v runtime pocitany sloupecek do kompone
[*] Ludek Finstrle <ludek.finstrle(zv)pzkagis(tec)cz> - 25.10.2004 14:30:41
> Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
> prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
> ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
> odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
po teto definici provest DataSet.Open.
Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
pochopis, jak to vlastne funguje.
Luf
Vlakna - jak na promenne, ktere potrebuji pouzivat
[*] delphin(zv)post(tec)cz - 25.10.2004 13:46:37
> Rozhodne to jde... Musis pouzit nektery ze synchronizacnich objektu tj.
> takovy objekt, ktery zaruci pristup k promenne pouze jednomu vlaknu v dany
> casovy okamzik. Podivej se napr. na InitializeCriticalSection,
> EnterCriticalSection, LeaveCriticalSection a DeleteCriticalSection.
Je mozno take pouzit tridu TCriticalSection, kde jsou tyhle funkce zabaleny
do tridy.
RadioGroup a multiline
[*] Petr Kuklik <pkuklik(zv)cerny-ps(tec)cz> - 25.10.2004 13:46:37
Dobry den,
nevite jak donutit TRadioGroup aby jeho Item se zobrazila na vice radku? Jde mi o to, ze chci radiogroupem zobrazit nekolik voleb, jejichz texty jsou prilis dlouhe. Pokud to nejde, existuje obdobna komponenta, ktera to umi?
Diky Petr Kuklik
Jak pridat v runtime pocitany sloupecek do kompone
[*] Tomas Krejzek <tomas.krejzek(zv)kpsys(tec)cz> - 25.10.2004 14:02:39
Ahoj, pokousim se pridat do TIBQuery calculated sloupecek, bohuzel se to
stale nedari, vytvorim si objekt TStringField, nastavim jej(jmeno,
velikost, ze je calculated) a pridam do Query pomoci metody Add
vlastnosti Fields.
Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
Diky moc, Tomas
Vlastni paket
[*] cermiforum(zv)centrum(tec)cz - 25.10.2004 12:52:33
Chci poslat vlastni paket, do ktereho windows nebude pridavat zadne
hlavicky
(ty si vygeneruju sam), proste ho jen posle do site. Myslel jsem ze k
tomuto
ucelu by meli slouzit RAW sockets ale nejak se mi je nepovedlo
rozbehat
(vzdycky pridaly IP hlavicku). Nevite nekdo jak na to??
Jakub Cermak
ja.cermi(zv)centrum(tec)cz
ICQ 159971304
http://cermi.wz(tec)cz
PGP key: http://cermi.wz(tec)cz/disk/pub_key.asc
Firebird ?
[*] BRCKO Peter <peter.brcko(zv)assetsoft.sk> - 25.10.2004 12:54:33
Aktualna verzia (Version 2004.09.12 Personal edition) ma ozaj problem s DB > 50MB:
"Sorry, in this EDUCATIONAL VEWSION of IBEXPERT you cannot work with databases which size is bigger than 50 MB."
A toto je odpoved z HK Software:
>please wait for next version or try to use an older version, there was a
>bug in latest release
>Holger Klemt
Peter Brcko
> Na to jsi prisel kde? Ja ho pouzivam a funguje i na daleko vetsim objemu DB.
> Ja u verze personal dost postradam autogrant a grant manager,
> ale jinak je tam vse co potrebuji.
> Libor
>
> > IBExpert Free Personal funguje pouze pro GDB do 50MB a
> > to me pripada dost omezujici ...
>
ActionToolBar
[*] radek3311(zv)volny(tec)cz - 25.10.2004 12:44:33
Dobry den,
mam nekolik problemu s ActionToolBarem:
1. stava se ze tlacitko na ToolBaru zustane "svitit" i kdyz mys
uz je nekde jidne - jak toto odstranit ? 2. jak omezit pro
koncove uzivatele dialog na customizaci toolbaru (nechat kartu
jen na pridavani/odebirani tlacitek) 3. jak pridat na toolbar
ikony vetsi nez 16x16 - kdy pridam vetsi tak se me objevuji
zmrsene v ActionMainMenuBaru
Radek
--
A za kolik kupujete ELEKTRO Vy?
http://www.MALL(tec)cz/penezenka
Overte si pres SMS, kolik se da USETRIT!
Vlakna - jak na promenne, ktere potrebuji pouzivat
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.10.2004 12:24:29
Rozhodne to jde... Musis pouzit nektery ze synchronizacnich objektu tj.
takovy objekt, ktery zaruci pristup k promenne pouze jednomu vlaknu v dany
casovy okamzik. Podivej se napr. na InitializeCriticalSection,
EnterCriticalSection, LeaveCriticalSection a DeleteCriticalSection.
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Ing. Jiri Sokol
> Sent: Monday, October 25, 2004 12:02 PM
>
> Jak muze hlavni vlakno (aplikace) a separatni vlakno pouzivat
> jenu tridu (jsou v ni 3 stringlisty)
Vlakna - jak na promenne, ktere potrebuji pouzivat
[*] Ing. Jiri Sokol <js-delphi(zv)email(tec)cz> - 25.10.2004 12:02:27
Ahoj.
Myslim, ze muj dotaz je vice nez jasny. V soucasne dobe (na zaklade Vasich rad a pripominek) jsem predelal aplikaci na obsluhu VCL a jedno separatni vlakno.
Jak muze hlavni vlakno (aplikace) a separatni vlakno pouzivat jenu tridu (jsou v ni 3 stringlisty)
Jde to nejak? Jak?
Diky
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol(zv)seznam(tec)cz; 972 231 187
D6Prof+SP3; WinXPProf+SP1; FB 1.5.0
programator amater
Pristup k menu MS Word
[*] karol chupek <chupek(zv)apollo.sk> - 25.10.2004 11:58:26
no fajn tak skus tento kod.
a urcite to spustis aj z delphi..
ako VB aplikaciu
Set newItem = CommandBars("format").Controls.Add(Type:=msoControlButton)
With newItem
.BeginGroup = True
.Caption = "Toto je moje nove menu"
.FaceId = 0
.OnAction = "moju proceduru"
End With
v podstate ti to hosi do menu Format
Roland Turcan napsal(a):
>>>>OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem
>>>>do MainMenu MS Wordu a naviazat event OnClick.
>>>>
>>>>
>MS> Jiri Baudys wrote:
>
>
>>>Trochu pochybuju, ze se ti to v delphi podari (i kdyz by to melo jit),
>>>jednodusi asi bude uprava normal.dot a ten kousek tam dopsat ve VB,
>>>ktery popr. zavola aplikaci v Delphi.
>>>
>>>
>
>
>
Pristup k menu MS Word
[*] Jiri Baudys <konference(zv)baudys.name> - 25.10.2004 11:44:25
>OK, dakujem za info. Tak skusim inak. Pomohlo by mi pokial by sa mi
>podarilo dostat MS Word do mojho formu. V podstate potrebujem doplnit
>moznost doplnovania textu z mojho comboboxu a super by to bolo keby som to
mal jednom forme.
>PS: K tomu MS Wordu v Delphi je IMHO strasne malo informacii.
Dobrym zdrojem je MSDN / Office developer, akorat (ja osobne) mam hrozne
problemy s implementaci vyctenych mouder do Delphi, protoze jsou vsechny
priklady v VB a prepis do Delphi je na muj vkus ponekud chaoticky.
jirka
Pristup k menu MS Word
[*] Roland Turcan <konf(zv)rotursoft.sk> - 25.10.2004 11:16:23
>>> OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem
>>> do MainMenu MS Wordu a naviazat event OnClick.
>>
MS> Jiri Baudys wrote:
>> Trochu pochybuju, ze se ti to v delphi podari (i kdyz by to melo jit),
>> jednodusi asi bude uprava normal.dot a ten kousek tam dopsat ve VB,
>> ktery popr. zavola aplikaci v Delphi.
<<< 25.10.2004 11:13 - Martin Schayna "mschayna(zv)aktis(tec)cz" >>>
MS> Ano, toto se mi take zda jako jedine mozne reseni, mame neco podobneho
MS> v Excelu, verim ze to pujde i ve Wordu. Jedna se o doplnek, ktery si
MS> zaregistruje do menu polozky a soucasne si otevre maly OLE Automation
MS> server napsany v Delphi, na kterem pak vola metody. Je to pekne
MS> prehledne a neni to zadny hack.
OK, dakujem za info. Tak skusim inak. Pomohlo by mi pokial by sa mi
podarilo dostat MS Word do mojho formu. V podstate potrebujem doplnit
moznost doplnovania textu z mojho comboboxu a super by to bolo keby
som to mal jednom forme.
PS: K tomu MS Wordu v Delphi je IMHO strasne malo informacii.
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Pristup k menu MS Word
[*] Martin Schayna <mschayna(zv)aktis(tec)cz> - 25.10.2004 10:50:21
Jiri Baudys wrote:
>> OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem
>> do MainMenu MS Wordu a naviazat event OnClick.
>
> Trochu pochybuju, ze se ti to v delphi podari (i kdyz by to melo jit),
> jednodusi asi bude uprava normal.dot a ten kousek tam dopsat ve VB,
> ktery popr. zavola aplikaci v Delphi.
Ano, toto se mi take zda jako jedine mozne reseni, mame neco podobneho
v Excelu, verim ze to pujde i ve Wordu. Jedna se o doplnek, ktery si
zaregistruje do menu polozky a soucasne si otevre maly OLE Automation
server napsany v Delphi, na kterem pak vola metody. Je to pekne
prehledne a neni to zadny hack.
Martin Schayna
Pristup k menu MS Word
[*] Kalhous <kalhous(zv)eu(tec)cz> - 25.10.2004 10:30:19
> OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem
> do MainMenu MS Wordu a naviazat event OnClick.
A neslo by to prave nejak pres to "spojovani" menu? Samozrejme ze by se
nevolal Word ale ten programek a ten by vlastne nedelal nic jineho nez ze by
vyvolal Word jako OLE a mel by svoje menu vtipne definovany tak aby se ta
jeho polozka vetrela do menu wordu - no a osetroval by si to svoje OnClick.
Pristup k menu MS Word
[*] Jiri Baudys <konference(zv)baudys.name> - 25.10.2004 09:26:11
Trochu pochybuju, ze se ti to v delphi podari (i kdyz by to melo jit),
jednodusi asi bude uprava normal.dot a ten kousek tam dopsat ve VB, ktery
popr. zavola aplikaci v Delphi.
jirka
-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
Behalf Of Roland Turcan
Sent: Monday, October 25, 2004 8:28 AM
To: delphi-l(zv)clexpert(tec)cz
Subject: Re: Pristup k menu MS Word
OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem do
MainMenu MS Wordu a naviazat event OnClick.
Dakujem.
<<< 25.10.2004 8:25 - Kalhous "kalhous(zv)eu(tec)cz" >>>
K> Co je mineno pristupem k menu MS Wordu? Pokud Word nebo dokument
K> vlozite do sveho programu pres OLEContainer, menu Wordu se
K> "zkombinuje" s menu programu (dosti podivnym) zpusobem popsanym
K> napriklad v krasnych knihach "Mistrovstvi v Delpi X" a je uzivateli k
K> dispozici. Takze k nemu muze pristupovat. Pokud jde o "programovani"
K> Wordu z vlastni aplikace (napriklad vytvoreni a ulozeni noveho
K> dokumentu z programu) tak i na to jsou tam priklady ale chce to
K> dokumentaci k MS Wordu. V principu skoro na vsechno co se da delat ve
K> Wordu existuji volani kterymi to udelam z programu. Typicky: novy
K> dokument, nastavim font, vlozim text, zmenim font, vlozim text, novy
odstavec, vlozeni obrazku, ... etc.,... ulozeni dokumentu.
K> From: "Roland Turcan" <konf(zv)rotursoft.sk>
>> Ako by sa dalo pristupovat k menu MS Wordu?
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Pristup k menu MS Word
[*] Roland Turcan <konf(zv)rotursoft.sk> - 25.10.2004 08:28:07
OK, toto viem, ale skor ma zaujima ako viem napriklad pridat MenuItem
do MainMenu MS Wordu a naviazat event OnClick.
Dakujem.
<<< 25.10.2004 8:25 - Kalhous "kalhous(zv)eu(tec)cz" >>>
K> Co je mineno pristupem k menu MS Wordu? Pokud Word nebo dokument vlozite do
K> sveho programu pres OLEContainer, menu Wordu se "zkombinuje" s menu programu
K> (dosti podivnym) zpusobem popsanym napriklad v krasnych knihach "Mistrovstvi
K> v Delpi X" a je uzivateli k dispozici. Takze k nemu muze pristupovat. Pokud
K> jde o "programovani" Wordu z vlastni aplikace (napriklad vytvoreni a ulozeni
K> noveho dokumentu z programu) tak i na to jsou tam priklady ale chce to
K> dokumentaci k MS Wordu. V principu skoro na vsechno co se da delat ve Wordu
K> existuji volani kterymi to udelam z programu. Typicky: novy dokument,
K> nastavim font, vlozim text, zmenim font, vlozim text, novy odstavec, vlozeni
K> obrazku, ... etc.,... ulozeni dokumentu.
K> From: "Roland Turcan" <konf(zv)rotursoft.sk>
>> Ako by sa dalo pristupovat k menu MS Wordu?
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Volba DB / pristupu k ni
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 25.10.2004 07:40:03
> Aplikace neni nic robusniho, ani klicoveho, proto se mi nechce sahat po
> "velkych" DB jako je MSSQL, FB ... Stacimi mala DB s par polozkami.
Souhlasim se Slavkem Skopalikem - FB lze pouzit na vsechno - male i velke.
Pokud je to ale opravdu male, muzes zkusit Access (ADO) nebo pripadne jenom TClientDataSet + SaveToFile.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347 735)
====================================
Pristup k menu MS Word
[*] Kalhous <kalhous(zv)eu(tec)cz> - 25.10.2004 07:28:02
Co je mineno pristupem k menu MS Wordu? Pokud Word nebo dokument vlozite do
sveho programu pres OLEContainer, menu Wordu se "zkombinuje" s menu programu
(dosti podivnym) zpusobem popsanym napriklad v krasnych knihach "Mistrovstvi
v Delpi X" a je uzivateli k dispozici. Takze k nemu muze pristupovat. Pokud
jde o "programovani" Wordu z vlastni aplikace (napriklad vytvoreni a ulozeni
noveho dokumentu z programu) tak i na to jsou tam priklady ale chce to
dokumentaci k MS Wordu. V principu skoro na vsechno co se da delat ve Wordu
existuji volani kterymi to udelam z programu. Typicky: novy dokument,
nastavim font, vlozim text, zmenim font, vlozim text, novy odstavec, vlozeni
obrazku, ... etc.,... ulozeni dokumentu.
----- Original Message -----
From: "Roland Turcan" <konf(zv)rotursoft.sk>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Saturday, October 23, 2004 2:13 PM
Subject: Pristup k menu MS Word
> Hello All!
>
> Ako by sa dalo pristupovat k menu MS Wordu?
>
> Dakujem.
>
> --
> Best regards, TRoland
>
> http://exekutor.rotursoft.sk
>
>
>
Sledovenia historie
[*] little_bobes(zv)centrum(tec)cz - 25.10.2004 07:00:00
> > K cemu je tento select dobry?
> > Abych zjistil, kdo s danou tabulkou pracuje?
> > CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
>
> > > > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
>
> nechci byt *stoura*, ale pises "a mam to tam i nyni ve FB1.5"
>
Sice nevim, co mas presne na mysli, ale ja jsem tim chtel rici, ze jsme
kdysi pouzivali IB6, kde jsem ve strukture databaze pouzival parametr USER a
kdyz jsme presli na FB, tak jsem tu samou strukturu prenesl i do FB vcetne
toho parametru USER, tzn. ze jsem nepouzil CURRENT_USER.
Bob
Volba DB / pristupu k ni
[*] Slavomir Skopalik <skopalik(zv)elektlabs(tec)cz> - 24.10.2004 18:45:08
Spatna uvaha.
Pokud mas jako jedinne kriterium vyslednou velikost DB, tak ti
neporadim.
Co takle napsat co od DB cekas ?
Napriklad
- pocet uzivatelu
- sitove spojeni
- Izolace transakci
- prace z DB soubory
- admnistrace
- navrh DB
- instalace
Z toho co pises neni vubec jasne, jestli by ti nestacil MIDAS, TDBF,
nebo FB embeded,
nebo FB.
Ja osobne pouzivam FB temer na vsechno k me plne spokojenosti.
Slavek
> robusniho, ani klicoveho, proto se mi nechce sahat po
> "velkych" DB jako je MSSQL, FB ... Stacimi mala DB s par polozkami.
Volba DB / pristupu k ni
[*] Jiri Baudys <konference(zv)baudys.name> - 24.10.2004 14:08:48
Dobry den,
pripravuji jakysi programek a chci Vas poprosit o radu, po jake komponente
sahnout pro pristup k DB.
Aplikace neni nic robusniho, ani klicoveho, proto se mi nechce sahat po
"velkych" DB jako je MSSQL, FB ... Stacimi mala DB s par polozkami.
Diky za namety.
jirka
Pristup k menu MS Word
[*] Jiri Baudys <konference(zv)baudys.name> - 24.10.2004 14:00:43
Nevim, co presne potrebujes, ale docela dobry na praci s MS Office je TP
Office Partner http://sourceforge.net/projects/tpofficepartner/
Doufam, ze to pomuze
jirka
-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
Behalf Of Roland Turcan
Hello All!
Ako by sa dalo pristupovat k menu MS Wordu?
Dakujem.
Pristup k menu MS Word
[*] Roland Turcan <konf(zv)rotursoft.sk> - 23.10.2004 14:13:05
Hello All!
Ako by sa dalo pristupovat k menu MS Wordu?
Dakujem.
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Jak odstranit scrollbar z dbgrid
[*] Tomas Krejzek <tomas.krejzek(zv)kpsys(tec)cz> - 22.10.2004 22:03:55
Ahoj mam problem s databazi, nebo lepe receno jejim zobrazenim. Mam
databazi postavenou na interbase a ma docela dost vet (cca 600 000) i
kdyz se snazim omezovat pocet zobrazenych zaznamu, uzivatel ma stale
moznost zobrazit ji celou, a v tu chvili kdyz hejbne scroll barem u
DBGridu uplne dolu, tak nejen ze jeho instance aplikace je nepouzitelna
protoze skipuje kamsi dolu, ale server je tak vytizeny ze ani ostatni
nemaj moc sanci na uspech. Nevite tedy nekdo jak zabranit zobrazeni
scrollbaru u DBGridu ?
Dik moc Tom
Sledovenia historie
[*] Jaroslav Uher <jarek(zv)iuher(tec)cz> - 22.10.2004 17:53:39
On 22 Oct 2004 at 17:35, little_bobes(zv)centrum(tec)cz wrote:
> K cemu je tento select dobry?
> Abych zjistil, kdo s danou tabulkou pracuje?
> CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
> > > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
nechci byt *stoura*, ale pises "a mam to tam i nyni ve FB1.5"
BTW, ja bych si take rad zjednodusil trigger na vsech tech tabulkach,
kde pouzivam "journal".
A necham se poucit.
Zatim je to hoodne ruci prace, coz mi sice zase az tak moc nevadi,
ale pokud by se to udelat lepe (jednoduseji) --> sem s tim.
Jarek Uher
Sledovenia historie
[*] little_bobes(zv)centrum(tec)cz - 22.10.2004 17:35:37
K cemu je tento select dobry?
Abych zjistil, kdo s danou tabulkou pracuje?
CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
Bob
> > Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik,
> > kdy se pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger
> > spustil.
> >
> > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
>
> a kdyz das SELECT CURRENT_USER FROM TABULKA
> staci ti to na identifikaci user(a) ?
>
> Nebo jeste kazdemu uzivateli definujes ROLE ?
>
> Jarek Uher
>
Sledovenia historie
[*] Jaroslav Uher <jarek(zv)iuher(tec)cz> - 22.10.2004 17:13:36
On 22 Oct 2004 at 16:55, little_bobes(zv)centrum(tec)cz wrote:
> Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik,
> kdy se pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger
> spustil.
>
> Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
a kdyz das SELECT CURRENT_USER FROM TABULKA
staci ti to na identifikaci user(a) ?
Nebo jeste kazdemu uzivateli definujes ROLE ?
Jarek Uher
Sledovenia historie
[*] little_bobes(zv)centrum(tec)cz - 22.10.2004 16:55:34
Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik, kdy se
pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger spustil.
Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
Bob
----- Original Message -----
From: "Ivan Kozak" <ivan(zv)boucek(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Friday, October 22, 2004 4:33 PM
Subject: Re: Sledovenia historie
> To V.D: a Liitle_B"
>
> Pouzivam Interbase 7.1 a pracuju tam subezne viaceri uzivatelia.
Sledovenia historie
[*] Martin Schayna <mschayna(zv)aktis(tec)cz> - 22.10.2004 16:47:28
Ivan Kozak wrote:
> To, co neviem rozhodnut je nasledovne: je niekde v databaze
> ulozene, ze KTORYM prihlasenym uzivatelom bola tato veta, ktora
> triggerovala zapis do historie, zmenena (insertovana, deletovana)?
> T.j. ak Fero zmenil vetu V1, a Jano zmenil vetu V2 v tabulke, tak do
> historie sa zapisu dva zaznamy H1 (V1, Fero) a H2 (V2, Jano). Otazka
> je, odkial vziat, ze ci to bol Fero alebo Jano.
Pokud nepouzivas interni overovani uzivatelu na databazovem serveru
ale z klienta, udelej si sloupec treba ChangedBy do kazde tabulky kterou
chces takto logovat. Vsechny Update a Insert prikazy budou posilat
aktualne prihlaseneho uzivatele. Triggery na techto tabulkach budou
moci pouzit sloupec ChangedBy pro zalogovani zmeny.
Pokud pouzivas interni overovani uzivatelu, pak lze pouzit pro Insert
prikaz do logovaci tabulky vestavenou funkci USER, ktera vraci
aktualniho uzivatele pod kterym jsi prihlaseny do databaze.
Martin Schayna
Sledovenia historie
[*] Ivan Kozak <ivan(zv)boucek(tec)cz> - 22.10.2004 16:33:26
To V.D: a Liitle_B"
Pouzivam Interbase 7.1 a pracuju tam subezne viaceri uzivatelia.
Zapis to Historie je spusteny v triggeri AfterInsert, BeforeUpdate a
BeforeDelete a je to obycajny INSERT do historie. Udaje do historie
okopirujem z vety, ktora je updatovana (insertovana, deletovana). a teda
triggerovala insert do historie.
To, co neviem rozhodnut je nasledovne: je niekde v databaze ulozene, ze
KTORYM prihlasenym uzivatelom bola tato veta, ktora triggerovala zapis do
historie, zmenena (insertovana, deletovana)?
T.j. ak Fero zmenil vetu V1, a Jano zmenil vetu V2 v tabulke, tak do
historie sa zapisu dva zaznamy H1 (V1, Fero) a H2 (V2, Jano). Otazka je,
odkial vziat, ze ci to bol Fero alebo Jano.
Sorry, ze to takto primitivne vysvetlujem, ale chcem predist nedorozumeniu.
Dik.
-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz]On
Behalf Of Viktor Doubek
Sent: Friday, October 22, 2004 4:03 PM
To: delphi-l(zv)clexpert(tec)cz
Subject: Re: Sledovenia historie
> pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
> prihlaseneho uzivatele.
.. nebo taky current_user (ale nevim, myslim, ze od verze 1.5), ale nikde
jsem nevidel, co vlastne pouzivas za databazi. VD
Sledovenia historie
[*] Viktor Doubek <viktordoubek(zv)centrum(tec)cz> - 22.10.2004 16:03:24
> pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
> prihlaseneho uzivatele.
.. nebo taky current_user (ale nevim, myslim, ze od verze 1.5), ale nikde jsem nevidel, co vlastne pouzivas za databazi. VD
Sledovenia historie
[*] little_bobes(zv)centrum(tec)cz - 22.10.2004 15:55:23
Ja historii vytvarim nasledovne:
INSERT INTO HIST_TABULKA (blablabla, ZMENIL, DATUM) VALUES (blablabla,
USER, 'NOW');
pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
prihlaseneho uzivatele.
Bob
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v tabulke
> Interbase, na sieti. Viem to riesit, staci do triggeru sledovanej tabulky
> pridat zapis do tabulky pre historiu. Mam len jeden problem: neviem ako
> zistit, ze KTO previedol prave triggerovanu zmenu: potreboval by som
vediet
> bud pocitac, z ktoreho bola urobena zmena alebo aspon uzivatela, ktory ju
> urobil, a toto tiez zaevidovat. Neviete mi poradit, ako na to? Dik. Ivan
> Kozak
Sledovenia historie
[*] Ivan Kozak <ivan(zv)boucek(tec)cz> - 22.10.2004 15:23:21
Celkom Ta nerozumiem, o co Ti ide, takze ak dovolis, zrekapitulujem to:
V tabulkach (z ktorych robim historiu) mam pole ze kto previedol zmenu a
kedy, ale ich ponim spolu z datami z klientskeho pocitaca (tam si to viem
zistit).
Problem je v tom, ze historiu som chcel viest MIMO klientskeho pocitaca,
vyhradne na serveri, a zapis do historie by bol spusteny, akonahle nastal
update, insert alebo delete v sledovanej tabulku. Data preberam z povodnej
vety, to je OK. Ale uzivatela nemozem preberat pretoze zmenu mohol previest
niekto uplne iny ako ten, kto robil poslednu zmenu na vete tabulky.
Neda sa tu nejak vyuzit USERS databazy?
S datumom nemam problem, pretoze tam zadavam CURRENT_TIMESTAMP. Takze jedine
mi nie je jasne, dokial mam zistit, ze ktory uzivatel previedol zmenu v
tabulke, ktora vyvolala zapis do historie.
-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz]On
Behalf Of Jaroslav Uher
Sent: Friday, October 22, 2004 3:11 PM
To: delphi-l(zv)clexpert(tec)cz
Subject: Re: Sledovenia historie
On 22 Oct 2004 at 14:27, Ivan Kozak wrote:
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v
> tabulke Interbase, na sieti. Viem to riesit, staci do triggeru
> sledovanej tabulky pridat zapis do tabulky pre historiu. Mam len jeden
> problem: neviem ako zistit, ze KTO previedol prave triggerovanu zmenu:
> potreboval by som vediet bud pocitac, z ktoreho bola urobena zmena
> alebo aspon uzivatela, ktory ju urobil, a toto tiez zaevidovat.
a mas v kazde takove tabulce pole <zmenu_provedl_uzivatel_xy> a
pole <zmenu_provedena_dne> ?
Jarek Uher
Sledovenia historie
[*] Jaroslav Uher <jarek(zv)iuher(tec)cz> - 22.10.2004 15:11:19
On 22 Oct 2004 at 14:27, Ivan Kozak wrote:
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v
> tabulke Interbase, na sieti. Viem to riesit, staci do triggeru
> sledovanej tabulky pridat zapis do tabulky pre historiu. Mam len jeden
> problem: neviem ako zistit, ze KTO previedol prave triggerovanu zmenu:
> potreboval by som vediet bud pocitac, z ktoreho bola urobena zmena
> alebo aspon uzivatela, ktory ju urobil, a toto tiez zaevidovat.
a mas v kazde takove tabulce pole <zmenu_provedl_uzivatel_xy> a
pole <zmenu_provedena_dne> ?
Jarek Uher
seznam tabulek
[*] Jaromir Cermak <cermak(zv)procom(tec)cz> - 22.10.2004 14:59:18
viz http://www.dbsvet(tec)cz/view.php?cisloclanku=2004031503 a dalsi dily
Jaromir Cermak
-----Original Message-----
From: Matejcek Petr [mailto:konference(zv)crhov.komfi(tec)cz]
DD,
poradil by pls nekdo jak se da zjistit jeke tabulky jsou v MS SQL
databazi ?
znam pouze nazev databaze a poteebuji vedet co v ni je
diky
PM
Sledovenia historie
[*] Ivan Kozak <ivan(zv)boucek(tec)cz> - 22.10.2004 14:27:16
Potreboval by som sledovat historiu zmien urobenych uzivatelmi v tabulke
Interbase, na sieti. Viem to riesit, staci do triggeru sledovanej tabulky
pridat zapis do tabulky pre historiu. Mam len jeden problem: neviem ako
zistit, ze KTO previedol prave triggerovanu zmenu: potreboval by som vediet
bud pocitac, z ktoreho bola urobena zmena alebo aspon uzivatela, ktory ju
urobil, a toto tiez zaevidovat. Neviete mi poradit, ako na to? Dik. Ivan
Kozak
vypnuti constraint v oracle
[*] lgcvirag(zv)iol(tec)cz - 22.10.2004 11:57:05
alter table <table_name> disable(enable) constraint <constraint_name>
Ivan Virag
----- Puvodni zprava -----
Odesilatel: Pavel Hora <phofficial(zv)centrum(tec)cz>
Predmet: vypnuti constraint v oracle
> Zdravim,
Lze v Oracle (9-10) vypnout osetrovani constraint?
Registrace souboru ocx do systemu
[*] Ing. Dubsky Jan <dubsky(zv)s-palava(tec)cz> - 22.10.2004 10:57:00
V D6 vytvarim projekt, ktery vyuziva prvek ActivX - komponentu pro
zobrazovani inventorovskych vykresu - soubor InventorViewCtrl.ocx.
Na svem pocitaci mam knihovnu zaregistrovanou pomoci Delphi, takze program
funguje OK. Ale pokud spustim exe soubor na stroji, kde knihovna neni
registrovana, tak to spadne. Jak se registruje tato knihovna, ktera je
fyzicky ulozena na serveru v adresari meho programu na okolni pocitace.
Videl bych to asi tak, ze si pri spusteni muj program zjisti, jestli je
knihovna registrovana, pokud ano, je to OK, pokud ne - tj. pri prvnim
spusteni, tak ji zaregistruje. Nebo nejaka externi utilitka, kterou spustim
rucne pri nastavovani - instalaci meho SW.
Jiz jsem zkousel pouzit program regsvr32 z windowsu - nahlasil chybu -
Provedeni funkce LoadLybray(......) se nezdarilo - uvedeny modul nebyl
nalezen.
Zkousel jsem studovat i unitu v prikladech (..\Demos\ActiveX\TRegSvr), ale
je to na me prilis vysoka matematika. Zkuste me trochu nakopnout, nebo
poslat cast prislusneho kodu, kterym si prvek ActivX zaregistruji na
libovolnem stroji.
Dik
Honza
Filtrovani kbmMemTable v druhem vlakne
[*] Karel Pecinka <k.pecinka(zv)seznam(tec)cz> - 22.10.2004 09:50:55
Pouzil jsem reseni Milana a je opravdu super, vrele doporucuji. Trochu
jsem si ho teda upravil, timer se nespousti v KeyPress ale v Change, coz
odchyti i napr. stisk Delete atd. Pridal jsem si, ze kdyz interval je 0
tak se udalost pusti az po Enteru. Do konfigurace jsem si hodil
nastaveni prodlevy, aby si uzivatel podle poctu polozek ceniku,
rychlosti pocitace a rychlosti jeho psani mohl nastavit prodlevu, ktera
mu umozni pracovat s programem co nejpohodlneji. Milanovi moc dekuju.
Co se tyce druheho reseni, je opravdu nic moc. Filtrovani totiz provadim
jednim prikazem a o zbytek se stara komponenta tabulky. Mohl bych se
nabourat do zdrojaku a nejak tam davat to processmessages ale reseni
Milana Tomese je naprosto jednoduche, nevyzaduje zadne upravy kodu a
uzivatel ziskava naproste pohodli pri praci.
Karel
> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Milan Tomes
> Sent: Friday, October 22, 2004 8:07 AM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: Re: Filtrovani kbmMemTable v druhem vlakne
>
>
> Cele reseni problemu je opravdu zalozeno na startovani
> timeru. Snazil jsem se o reseni elementarniho problemu a sice
> toho aby se se zpozdenim vyvolala udalost OnChange. Pokud se
> Ti toto nelibi, tak se prosim rychle uklidni a prestan s
> takovymito vypady. Netvrdil jsem, ze je to reseni pomoci
> vlakna, protoze se plne ztotoznuji, ze ve vlakne by - kdyz uz
> - melo probihat vlastni cteni dat a ne zpracovani pauzy,
> ktera je uzce zavisla na VCL komponente a tudiz veskere
> volani musi byt provadeno v kontextu hlavniho threadu. Jestli
> je pro Tebe tento kod slozity je samozrejme otazka jina - ja
> osobne vubec nechapu co je na tomto kodu sloziteho - jedna se
> o 6 metod jejichz delka nepresahuje 6 jednoduchych radku
> kodu. BTW cely kod jsem psal v Outlooku a jeho napsani
> netrvalo dele nez 5 minut :)
>
> Cele reseni jsem napsal a neustale povazuji Tve reseni za hruzne.
>
> Omlouvam se, ze jsem hluboce urazil Tve city tim, ze jsem
> vyslovil svuj nazor na kvalitu Tveho reseni. Az budes neco
> potrebovat Ty, tak verim, ze se vsichni strasne pretrhnout
> kdyz vidi Tvoji reakci. Ja osobne nepomohu uz jen proto, ze
> se budu obavat abys me nahodou za univerzalnost a tim take
> moznou vetsi narocnost na znalosti a slozitost nahodou znovu
> neserval :(((
>
> S pozdravem
>
> Milan Tomes
>
> P.S.: Tusim, ze tazatel to jiz vyresil prave vytvoreni one
> nove komponenty, jejiz kod jsem posilal :-)
> P.P.S.: Podivej se na thread, kde se pouziti
> Application.ProcessMessages velice kritizuje.
>
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Jan Novak
> > Sent: Friday, October 22, 2004 7:45 AM
> >
> > >> Vsechno v pohode zvlada hlavni thread s pouzitim ProcessMessages.
> >
> > > Tak tohle povazuji take za dost hruzne reseni.
> >
> > Nezlob se na mne, ale to, cemu rikas 'reseni' ty, je jen nekolik
> > obrazovek sloziteho kodu, ktere nedelaji nic, nez ze po
> urcitem case
> > od zmeny Editu poslou zpravu hlavnimu threadu. Nemas tam
> vubec nic o
> > tom, jak se od ni v dalsim threadu nastartuje nacitani a jak se
> > pripadne prerusi predchozi nacitani, pokud bylo rozbehnuto.
> Neni tam
> > ani to, jak ten thread po nacteni jedne polozky zobrazi
> jeji obsah v
> > nejakem gridu, ktery je soucasti VCL a tedy se musi volat pres
> > Synchronize.
> >
> > Zkus si to napsat cele a pak se vyslov, co je 'hruzne' a co je
> > prehledne a jasne reseni.
> >
> >
> >
> >
>
>
>
Generovani sql z databaze
[*] Pavel Hora <phofficial(zv)centrum(tec)cz> - 22.10.2004 09:28:53
Zapomnel jsem dodat, ze musi byt zdarma a nebo time trial
______________________________________________________________
> Od: "Jan Sebelik" <honza(zv)haes(tec)cz>
> Komu: delphi-l(zv)clexpert(tec)cz
> Datum: Fri, 22 Oct 2004 04:00:24 +0200
> Predmet: Re: Generovani sql z databaze
>
> > shanim soft, kterej dokaze z databaze (oracla a ms access)
> > vytvorit SQL skript pro vytvoreni te databaze (create table ...)
> > i s integritnimi omezenimi!!
>
> napr. CASE Studio
> www.casestudio.com
>
> Honza
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW
> = www.haes(tec)cz
> = Vojtiskova 321
> = 507 81 Lazne Belohrad
> = tel. 493 792 931 (mobil 776 347 735)
> ====================================
>
>
>
Filtrovani kbmMemTable v druhem vlakne
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.10.2004 09:24:52
Protoze se zbytecne alokuje dalsi handle pouze pro zachytavani zpravy
WM_TIMER (viz. Classes.AllocateHwnd). Prijde mi to uplne zbytecne :)
S pozdravem
Milan Tomes
P.S.: Nemuzu si odpustit rypnuti a podekovat za pochvalu :)))))))))))))))))
Admin - I'm so sorry :)))
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Karel Kral
> Sent: Friday, October 22, 2004 9:19 AM
>
> Diky, pekne a elegantni, urcite se mi to bude hodit. Proc nepouzivas
> TTimer z Delphi?
>
> Milan Tomes napsal(a):
> > Tak tohle povazuji take za dost hruzne reseni.
> > Tady je reseni *BEZ* pouziti ProcessMessages:
> >
> > interface
> >
> > type
> > TMyEdit = class (TEdit)
> > private
> > FOnLateChange: TNotifyEvent;
> > FInterval: cardinal;
> > FTimerHWND: HWND;
> > procedure FinalizeTimer;
> > protected
> > procedure DoLateChange;
> > procedure UpdateTimer;
> > procedure WndProc(var Message: TMessage); override;
> > procedure KeyPress(var Key: Char); override;
> > public
> > destructor Destroy; override;
> > published
> > property OnLateChange: TNotifyEvent read FOnLateChange write
> > FOnLateChange;
> > property Interval: cardinal read FInterval write FInterval;
Filtrovani kbmMemTable v druhem vlakne
[*] Karel Kral <kralkonf(zv)purus(tec)cz> - 22.10.2004 09:18:51
Diky, pekne a elegantni, urcite se mi to bude hodit. Proc nepouzivas
TTimer z Delphi?
Milan Tomes napsal(a):
> Tak tohle povazuji take za dost hruzne reseni.
> Tady je reseni *BEZ* pouziti ProcessMessages:
>
> interface
>
> type
> TMyEdit = class (TEdit)
> private
> FOnLateChange: TNotifyEvent;
> FInterval: cardinal;
> FTimerHWND: HWND;
> procedure FinalizeTimer;
> protected
> procedure DoLateChange;
> procedure UpdateTimer;
> procedure WndProc(var Message: TMessage); override;
> procedure KeyPress(var Key: Char); override;
> public
> destructor Destroy; override;
> published
> property OnLateChange: TNotifyEvent read FOnLateChange write
> FOnLateChange;
> property Interval: cardinal read FInterval write FInterval;
--
______________________________________________________
Karel Kral, vedouci odd. IT / IT manager
Purus, s.r.o., Cezavy 627, 664 56 Blucina, CZ
Tel: 547 235 000, 602 552 432, Fax: 547 231 203
E-Mail: mailto:kral(zv)purus(tec)cz, WWW: http://www.purus(tec)cz
______________________________________________________
Filtrovani kbmMemTable v druhem vlakne
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.10.2004 08:06:45
Cele reseni problemu je opravdu zalozeno na startovani timeru. Snazil jsem
se o reseni elementarniho problemu a sice toho aby se se zpozdenim vyvolala
udalost OnChange. Pokud se Ti toto nelibi, tak se prosim rychle uklidni a
prestan s takovymito vypady. Netvrdil jsem, ze je to reseni pomoci vlakna,
protoze se plne ztotoznuji, ze ve vlakne by - kdyz uz - melo probihat
vlastni cteni dat a ne zpracovani pauzy, ktera je uzce zavisla na VCL
komponente a tudiz veskere volani musi byt provadeno v kontextu hlavniho
threadu. Jestli je pro Tebe tento kod slozity je samozrejme otazka jina - ja
osobne vubec nechapu co je na tomto kodu sloziteho - jedna se o 6 metod
jejichz delka nepresahuje 6 jednoduchych radku kodu. BTW cely kod jsem psal
v Outlooku a jeho napsani netrvalo dele nez 5 minut :)
Cele reseni jsem napsal a neustale povazuji Tve reseni za hruzne.
Omlouvam se, ze jsem hluboce urazil Tve city tim, ze jsem vyslovil svuj
nazor na kvalitu Tveho reseni. Az budes neco potrebovat Ty, tak verim, ze se
vsichni strasne pretrhnout kdyz vidi Tvoji reakci. Ja osobne nepomohu uz jen
proto, ze se budu obavat abys me nahodou za univerzalnost a tim take moznou
vetsi narocnost na znalosti a slozitost nahodou znovu neserval :(((
S pozdravem
Milan Tomes
P.S.: Tusim, ze tazatel to jiz vyresil prave vytvoreni one nove komponenty,
jejiz kod jsem posilal :-)
P.P.S.: Podivej se na thread, kde se pouziti Application.ProcessMessages
velice kritizuje.
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Jan Novak
> Sent: Friday, October 22, 2004 7:45 AM
>
> >> Vsechno v pohode zvlada hlavni thread s pouzitim ProcessMessages.
>
> > Tak tohle povazuji take za dost hruzne reseni.
>
> Nezlob se na mne, ale to, cemu rikas 'reseni' ty, je jen nekolik
> obrazovek sloziteho kodu, ktere nedelaji nic, nez ze po urcitem case
> od zmeny Editu poslou zpravu hlavnimu threadu. Nemas tam vubec nic o
> tom, jak se od ni v dalsim threadu nastartuje nacitani a jak se
> pripadne prerusi predchozi nacitani, pokud bylo rozbehnuto. Neni tam
> ani to, jak ten thread po nacteni jedne polozky zobrazi jeji obsah v
> nejakem gridu, ktery je soucasti VCL a tedy se musi volat pres
> Synchronize.
>
> Zkus si to napsat cele a pak se vyslov, co je 'hruzne' a co je
> prehledne a jasne reseni.
>
>
>
Filtrovani kbmMemTable v druhem vlakne
[*] Jan Novak <delfin4(zv)volny(tec)cz> - 22.10.2004 07:44:43
>> Vsechno v pohode zvlada hlavni thread s pouzitim ProcessMessages.
> Tak tohle povazuji take za dost hruzne reseni.
Nezlob se na mne, ale to, cemu rikas 'reseni' ty, je jen nekolik
obrazovek sloziteho kodu, ktere nedelaji nic, nez ze po urcitem case
od zmeny Editu poslou zpravu hlavnimu threadu. Nemas tam vubec nic o
tom, jak se od ni v dalsim threadu nastartuje nacitani a jak se
pripadne prerusi predchozi nacitani, pokud bylo rozbehnuto. Neni tam
ani to, jak ten thread po nacteni jedne polozky zobrazi jeji obsah v
nejakem gridu, ktery je soucasti VCL a tedy se musi volat pres
Synchronize.
Zkus si to napsat cele a pak se vyslov, co je 'hruzne' a co je
prehledne a jasne reseni.
Filtrovani kbmMemTable v druhem vlakne
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.10.2004 06:16:35
Tak tohle povazuji take za dost hruzne reseni.
Tady je reseni *BEZ* pouziti ProcessMessages:
interface
type
TMyEdit = class (TEdit)
private
FOnLateChange: TNotifyEvent;
FInterval: cardinal;
FTimerHWND: HWND;
procedure FinalizeTimer;
protected
procedure DoLateChange;
procedure UpdateTimer;
procedure WndProc(var Message: TMessage); override;
procedure KeyPress(var Key: Char); override;
public
destructor Destroy; override;
published
property OnLateChange: TNotifyEvent read FOnLateChange write
FOnLateChange;
property Interval: cardinal read FInterval write FInterval;
end;
implementation
const
UpdateTimer_IDEvent = 1;
{ TMyEdit }
destructor TMyEdit.Destroy;
begin
FinalizeTimer;
inherited;
end;
procedure TMyEdit.DoLateChange;
begin
FinalizeTimer;
if Assigned(FOnLateChange) then
FOnLateChange(self);
end;
procedure TMyEdit.KeyPress(var Key: Char);
begin
inherited;
UpdateTimer;
end;
procedure TMyEdit.UpdateTimer;
begin
FinalizeTimer;
if Interval <> 0 then
if setTimer(self.Handle, UpdateTimer_IDEvent, Interval, nil) = 0 then
raise Exception.Create('Nelze vytvorit casovac !!!')
else
FTimerHWND := self.Handle;
end;
procedure TMyEdit.WndProc(var Message: TMessage);
begin
if (Message.Msg = WM_TIMER) and (Message.WParam = UpdateTimer_IDEvent)
then
DoLateChange
else
inherited;
end;
procedure TMyEdit.FinalizeTimer;
begin
if FTimerHWND <> 0 then
begin
killTimer(FTimerHWND, UpdateTimer_IDEvent);
FTimerHWND := 0;
end;
end;
Interval je hodnota v milisekundach (- podivej se na WinAPI funkci
setTimer). Pokud je od prvniho stisku klavesy po dobu intervalu stisknuta
klavesa je timer zrusen a vzapeti znovu vytvoren (kvuli novemu pocitani
intervalu). V pripade klidu je po uplynuti zadaneho intervalu odeslana
timerem zprava WM_TIMER do WndProc a ta vyvola event OnLateChange.
S pozdravem
Milan Tomes
P.S.: Psal jsem to jen v Outlooku, takze nezarucuji funkcnost :-)
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Jan Novak
> Sent: Thursday, October 21, 2004 10:11 PM
>
> > uzivatel pise do Editu text a okamzite po napsani
> > se mu filtruje memory tabulka, ktera muze mit az 10.000
>
> To je typicky priklad, kdy to vlakna jen zbytecne zakomplikuji.
> Vsechno v pohode zvlada hlavni thread s pouzitim ProcessMessages.
Generovani sql z databaze
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 22.10.2004 04:00:24
> shanim soft, kterej dokaze z databaze (oracla a ms access)
> vytvorit SQL skript pro vytvoreni te databaze (create table ...)
> i s integritnimi omezenimi!!
napr. CASE Studio
www.casestudio.com
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347 735)
====================================
Napoveda chm
[*] Mirka Kincova <mirka.kincova(zv)seznam(tec)cz> - 22.10.2004 00:10:06
http://www.ec-software.com/comppage.htm
Pro tvorbu pak Help&Manual tamtez.
Mirka
----- Original Message -----
From: "Josef Straka" <strakajosef(zv)seznam(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Thursday, October 21, 2004 11:50 PM
Subject: Napoveda chm
> Prijemny den, dovolte zacatecnicky dotaz.
> Chci pouzivat ve svych projektech novy format napovedy *.chm misto *.hlp.
> Jak ale spustim *.chm soubor z me aplikace? V nastaveni projektu
> Project/Option/Help file totiz nejde zadat soubor *.chm, jen stary *.hlp.
> Kdyby to slo, pak bych napovedu volal
> Application.HelpCommand(HELP_CONTENTS,0);
> Ted to delam tak, aby to slo, ze vlastne volam externi aplikaci hh.exe s
> parametrem souboru s napovedou *.chm. Ale myslim, ze by to mohlo jit nejak
> efektneji, nebo ne?
>
> Delphi5 Proff WinXP SP2
>
> Straka Josef
>
>
>
Napoveda chm
[*] Josef Straka <strakajosef(zv)seznam(tec)cz> - 21.10.2004 23:50:03
Prijemny den, dovolte zacatecnicky dotaz.
Chci pouzivat ve svych projektech novy format napovedy *.chm misto *.hlp.
Jak ale spustim *.chm soubor z me aplikace? V nastaveni projektu
Project/Option/Help file totiz nejde zadat soubor *.chm, jen stary *.hlp.
Kdyby to slo, pak bych napovedu volal
Application.HelpCommand(HELP_CONTENTS,0);
Ted to delam tak, aby to slo, ze vlastne volam externi aplikaci hh.exe s
parametrem souboru s napovedou *.chm. Ale myslim, ze by to mohlo jit nejak
efektneji, nebo ne?
Delphi5 Proff WinXP SP2
Straka Josef
Filtrovani kbmMemTable v druhem vlakne
[*] Jan Novak <delfin4(zv)volny(tec)cz> - 21.10.2004 22:10:32
> uzivatel pise do Editu text a okamzite po napsani
> se mu filtruje memory tabulka, ktera muze mit az 10.000
To je typicky priklad, kdy to vlakna jen zbytecne zakomplikuji.
Vsechno v pohode zvlada hlavni thread s pouzitim ProcessMessages.
Staci 2 staticke boolean promenne Nacitam a NovyFiltr, ktere pri
startu programu nastavis na false a pak Edit1.OnChange vypada nejak
takhle:
begin
if Nacitam then // zabraneni rekurze
begin
NovyFiltr := true;
exit;
end;
Nacitam := true;
repeat
begin
Radky.Zrus;
Radky.Filtr := Edit1.Text; // aktualni filtr
NovyFiltr := false;
LastPM := Now;
while not Radky.Hotovo do
begin
if NovyFiltr then break; // prerus nacitani po zmene editu
Radky.NactiDalsi;
if (Now-LastPM) > (200*MS) then
begin // jednou za 200 ms
LastPM := Now;
Application.ProcessMessages;
end;
end;
end until NovyFiltr;
Nacitam := false;
end;
MS je konstanta pro trvani milisekundy MS=1./(24*60*60*1000)
Chovani aplikace
[*] jkyn(zv)iol(tec)cz - 21.10.2004 20:40:25
Mam dva programy ktere spolu komunikuji pres spravy pomoci JclAppInstances a cilovy program je v rezimu hide a kdyz zacne spracovavat zpravy program provede restore lze to nejak potlacit. dekuji za rady Kyn
vypnuti constraint v oracle
[*] Pavel Hora <phofficial(zv)centrum(tec)cz> - 21.10.2004 18:26:16
Zdravim,
mam mnoho dat v mnoha tabulkach a sql skript kde jsou inserty techto dat. Vim, ze data i cizi klice (zavislosti) jsou v poradku. Problem je, ze jenodlive inserty nejsou v spravnem poradi, takze se muze stat, ze odkazovany zaznam v jine tabulce jeste nebudu existovat. Lze v Oracle (9-10) vypnout osetrovani constraint? Jak na to? Dik za radu
Generovani sql z databaze
[*] Pavel Hora <phofficial(zv)centrum(tec)cz> - 21.10.2004 18:26:16
Ahoj,
shanim soft, kterej dokaze z databaze (oracla a ms access) vytvorit SQL skript pro vytvoreni te databaze (create table ...) i s integritnimi omezenimi!!
ClientDataSet a Aggregates po 101 :-(
[*] Jan Rizek <jan_rizek(zv)centrum(tec)cz> - 21.10.2004 17:44:13
Mala oprava - CloneCursor..> Vsechny zdravim,
>
> stale se pokousim pouzivat Aggreates v IBClientDataSetu a stale narazim na
stejny problem. Nekdy pri updatu, smazani radky, proste nekdy, kdyz se
provede metoda
>
> procedure TCustomClientDataSet.DoAggUpdates(IsUpdate: Boolean);
>
> tak se objevi exception: Bits index out of range. Je to zpusobeno tim, ze
Borland funkce (z DBClient.pas)
>
> function Intersect(List1, List2: TBits): Boolean;
> var
> I: Integer;
> begin
> for I := 0 to List1.Size - 1 do
> if List1[I] and List2[I] then
> begin
> Result := True;
> Exit;
> end;
> Result := False;
> end;
>
> Je spatne. Pokud List1.size>List2.size pak se dozvite, ze: "Bits index
out of range"
>
> Chyba se objevuje kdyz menim dataset - napriklad pomoci GetCloneCursor..
Mozna je to tim..
>
> Pokud nekdo vite, tak dejte vedet.
>
> JR
>
>
>
ClientDataSet a Aggregates po 101 :-(
[*] Jan Rizek <jan_rizek(zv)centrum(tec)cz> - 21.10.2004 17:36:12
Vsechny zdravim,
stale se pokousim pouzivat Aggreates v IBClientDataSetu a stale narazim na stejny problem. Nekdy pri updatu, smazani radky, proste nekdy, kdyz se provede metoda
procedure TCustomClientDataSet.DoAggUpdates(IsUpdate: Boolean);
tak se objevi exception: Bits index out of range. Je to zpusobeno tim, ze Borland funkce (z DBClient.pas)
function Intersect(List1, List2: TBits): Boolean;
var
I: Integer;
begin
for I := 0 to List1.Size - 1 do
if List1[I] and List2[I] then
begin
Result := True;
Exit;
end;
Result := False;
end;
Je spatne. Pokud List1.size>List2.size pak se dozvite, ze: "Bits index out of range"
Chyba se objevuje kdyz menim dataset - napriklad pomoci GetCloneCursor.. Mozna je to tim..
Pokud nekdo vite, tak dejte vedet.
JR
FB - jak na casto se menici tabulky
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 21.10.2004 16:50:08
Haj hou!
On 21 Oct 2004 at 13:45, Karel Rys wrote:
> Da se tedy spolehnout na to, ze kdyz exportni modul v jedne transakci
> typu snapshot smaze vsechny zaznamy v ZasobaEx, da tam zaznamy nove
> zkopirovanim ze Zasoba, commitne, pak pusti druhou transakci (asi uz
> jen read-commited) a tam udela SELECT count(*) FROM ZasobaEx, dojde k
> odklizeni starych verzi na tabulce ZasobaEx? Za predpokladu, ze neni
> otevrena zadna jina transakce typu snapshot vuci teto databazi?
Ano. Pokud to bude FB Classic, pak se zrusene zaznamy odstrani ihned
pri SELECT COUNT(*), u Super Serveru se pouze zaradi do seznamu pro
zruseni a zrusi se na pozadi.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
FB - jak na casto se menici tabulky
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 21.10.2004 13:45:56
Pavel Cisar dne 21 Oct 2004 v 13:09:
> Ono ani tak nejde o vznik smeti (ktereho neni zas tak moc, protoze
> verze radku pro zruseny zaznam je velmi mala), ale o jeho odstraneni.
> Pokud se data odsouvaji z tabulky, ktera je velmi casto vyuzivana pro
> dulezite operace, je vhodne hned po commitnuti vymazu vetsiho mnozstvi
> dat provest SELECT COUNT(*) z dane tabulky (pokud s ni ovsem nepracuje
> jina transakce v rezimu snapshot, pak to nema vyznam), aby se co
> nejrychleji provedl garbage collection (neni nutne provadet primo
> sweep).
>
> Pokud je na tabulce vice indexu (dva a vice), pak je vhodne podobne
> odsuny provadet v dobe, kdy s databazi nikdo nepracuje (nebo alespon
> minimum lidi), aby bylo mozne provest jejich deaktivaci a opetovnou
> aktivaci (nejrychlejsi zpusob jak je zbavit smeti), pripadne provest
> sweep. Za plneho provozu je lepsi sweep nez deaktivace/aktivace
> indexu.
Ahoj,
diky moc za popis. Tabulka ma nasledujici strukturu:
CREATE TABLE ZasobaEx
(
ZboziDetPobocka dMalyKodOdkaz NOT NULL,
ZboziDetKod dKodOdkaz NOT NULL,
KdePobocka dMalyKodOdkaz NOT NULL,
KdeLokace dMalyKodOdkaz NOT NULL,
PartiePobocka dMalyKodOdkaz NOT NULL,
PartieKod dKodOdkaz NOT NULL,
Fyzicka dMnozstvi,
Rezervace dMnozstvi,
Objednavky dMnozstvi,
VyrobaProdejne dMnozstvi,
CONSTRAINT ZasobaEx_Klic PRIMARY KEY
(ZboziDetPobocka,ZboziDetKod,KdePobocka,KdeLokace,PartiePobocka,PartieKod),
CONSTRAINT ZasobaEx_ZboziDet FOREIGN KEY (ZboziDetPobocka,ZboziDetKod) REFERENCES ZboziDet
(Pobocka,Kod),
CONSTRAINT ZasobaEx_Partie FOREIGN KEY (PartiePobocka,PartieKod) REFERENCES Partie (Pobocka,Kod),
CONSTRAINT ZasobaEx_Lokace FOREIGN KEY (KdePobocka,KdeLokace) REFERENCES Lokace (Pobocka,Kod)
);
Ovsem krome modulu, co ma na starosti exportovani, s ni nikdo jiny nepracuje - uzivatele se divaji
do tabulky Zasoba, zatimco ZasobaEx vlastne zachycuje stav zasoby v okamziku, kdy probehl posledni
export na pobocky.
Da se tedy spolehnout na to, ze kdyz exportni modul v jedne transakci typu snapshot smaze vsechny
zaznamy v ZasobaEx, da tam zaznamy nove zkopirovanim ze Zasoba, commitne, pak pusti druhou
transakci (asi uz jen read-commited) a tam udela SELECT count(*) FROM ZasobaEx, dojde k odklizeni
starych verzi na tabulce ZasobaEx? Za predpokladu, ze neni otevrena zadna jina transakce typu
snapshot vuci teto databazi?
Dalsi moznosti, kterou jsem zvazoval, by bylo z ZasobaEx smazat jen ty radky, ktere se oproti
Zasoba lisi nebo jsou nadbytecne, a pak z tabulky Zasoba nevkladat vsechny, ale jen ty, ktere v
ZasobaEx neexistuji, ale nevim, zda to jde nejak efektivne v jednom dotazu udelat - to jeste
vyzkousim (neco jako INSERT INTO ZasobaEx SELECT * FROM Zasoba a WHERE NOT EXIST (SELECT * FROM
ZasobaEx b on (b.ZboziDetPobocka=a.ZboziDetPobocka)and.....) ).
Diky,
Karel Rys
FB - jak na casto se menici tabulky
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 21.10.2004 13:09:53
Haj hou!
On 21 Oct 2004 at 9:03, Karel Rys wrote:
> Dobry den,
>
> na FB jsem pro export zmen v zasobe pouzival tento postup:
>
> - dve tabulky: Zasoba, ZasobaEx
> 1. pri exportu se odeslou rozdily mezi Zasoba a ZasobaEx
> 2. provede se DELETE FROM ZasobaEx
> 3. provede se INSERT INTO ZasobaEx SELECT * FROM Zasoba
>
> Coz samozrejme nelze delat prilis casto, jinak vznikne spousta "smeti", o kterem se tu diskutovalo
> nedavno. Nyni by vsak zakaznik rad, aby se export castio delal.
Ono ani tak nejde o vznik smeti (ktereho neni zas tak moc, protoze
verze radku pro zruseny zaznam je velmi mala), ale o jeho odstraneni.
Pokud se data odsouvaji z tabulky, ktera je velmi casto vyuzivana pro
dulezite operace, je vhodne hned po commitnuti vymazu vetsiho
mnozstvi dat provest SELECT COUNT(*) z dane tabulky (pokud s ni ovsem
nepracuje jina transakce v rezimu snapshot, pak to nema vyznam), aby
se co nejrychleji provedl garbage collection (neni nutne provadet
primo sweep).
Pokud je na tabulce vice indexu (dva a vice), pak je vhodne podobne
odsuny provadet v dobe, kdy s databazi nikdo nepracuje (nebo alespon
minimum lidi), aby bylo mozne provest jejich deaktivaci a opetovnou
aktivaci (nejrychlejsi zpusob jak je zbavit smeti), pripadne provest
sweep. Za plneho provozu je lepsi sweep nez deaktivace/aktivace
indexu.
Nicmene takoveto optimalizace maji vyznam pouze pokud:
1. Potrebujete predpoveditelnost chovani a garantovani minimalniho
vykonu. FB ma vestavene samoozdravujici mechanizmy, ale okamzik
jejich spusteni, dobu provozu a miru ovlivneni vykonu nelze
prepdpovedet.
2. Samoopravne mechanizmy prokazatelne neuvedou databazi do
pozadovaneho stavu v pozadovanem case.
Takze nejlepe je vyzkouset si odsun za bezneho provozu a zmerit zmeny
ve vykonu, a teprve pokud vam nebudou vyhovovat zacit spekulovat nad
moznymi optimalizacemi.
> Popr. co se tyce FB 1.5 - jak moc zdrzuje pri provozu, kdyz se necha zapnuty automaticky sweep
> napr. po 10000 transakcich? Zatim jsme hodelali "rucne" v noci a to bezel kratce.
Zalezi na aplikaci. Pokud nedojde k zablokovani OIT, pak k
automatickemu spusteni sweepu nemusi nikdy dojit. Rozhodne doporucuji
automaticky sweep nevypinat, protoze je dulezitou bezpecnostni
pojistkou. Je mozne zmenit jeho hodnotu, ale implicitnich 20000 je
pomerne optimalni nastaveni.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
FB - jak na casto se menici tabulky
[*] Kalhous <kalhous(zv)eu(tec)cz> - 21.10.2004 13:05:52
> - dve tabulky: Zasoba, ZasobaEx
> 1. pri exportu se odeslou rozdily mezi Zasoba a ZasobaEx
> 2. provede se DELETE FROM ZasobaEx
> 3. provede se INSERT INTO ZasobaEx SELECT * FROM Zasoba
> Neznate nekdo elegantni reseni, jak nahradit kroky 2 a 3 necim, co nebude
> vytvaret moc "smeti"?
Nebylo by i "databazovejsi" delat to v jedne tabulce? Zalezi samozrejme na
tom co je to "zmena" ale treba kdyz me zajima jen zmena hodnoty mnozstvi ve
sloupci MN od posledniho exportu tak si pridat sloupec MNEX "exportovany
stav" do ktereho pri exportu ulozim hodnotu z MN, pri dalsim exportu pak
select jen radku kde MN<>MNEX a nasledne UPDATE MNEX=MN WHERE MN<>MNEX.
To me jen tak napadlo.
FB - jak na casto se menici tabulky
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 21.10.2004 12:37:50
Haj hou!
On 21 Oct 2004 at 11:57, BRCKO Peter wrote:
> Napriek tomu, ze som prelistoval knihu od P.Cisara, tejto problematike som sa velmi
> nevenoval pozornost, no logicky mi pripada, ze DROP TABLE ZasobaEx by mal byt
> v takomto pripade vhodnejsi ako DELETE FROM (bez ohladu na pocet zaznamov).
> Alebo sa mylim?
DROP TABLE velmi casto nelze pouzit kvuli zavislostem na dalsi
objekty databaze. Pokud si dobre vzpominam, tak v pozadavcich na nove
vlastnosti FB je i prikaz ve stylu EMPTY TABLE, ktery by rychle
odstranil vsechna data pri zachovani metadat tabulky.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
FB - jak na casto se menici tabulky
[*] BRCKO Peter <peter.brcko(zv)assetsoft.sk> - 21.10.2004 11:57:45
> na FB jsem pro export zmen v zasobe pouzival tento postup:
>
> - dve tabulky: Zasoba, ZasobaEx
> 1. pri exportu se odeslou rozdily mezi Zasoba a ZasobaEx
> 2. provede se DELETE FROM ZasobaEx
> 3. provede se INSERT INTO ZasobaEx SELECT * FROM Zasoba
>
> Coz samozrejme nelze delat prilis casto, jinak vznikne
> spousta "smeti", o kterem se tu diskutovalo
> nedavno. Nyni by vsak zakaznik rad, aby se export castio delal.
> Neznate nekdo elegantni reseni, jak nahradit kroky 2 a 3
> necim, co nebude vytvaret moc "smeti"?
Napriek tomu, ze som prelistoval knihu od P.Cisara, tejto problematike som sa velmi
nevenoval pozornost, no logicky mi pripada, ze DROP TABLE ZasobaEx by mal byt
v takomto pripade vhodnejsi ako DELETE FROM (bez ohladu na pocet zaznamov).
Alebo sa mylim?
Peter Brcko
XP SP2 a instalace MSDE
[*] Jaroslav Nadhera <nadhera(zv)csh(tec)cz> - 21.10.2004 12:05:46
> WinXP + SP2 a nasleduje:
>
> * client tools z originalnihoCD MS SQL Standard (i Enterprise) = NELZE
> * MSDE z www.microsoft.com = NELZE
Abych to uzavrel a sdelil vysledky naseho vyzkumu:
na XP SP2 je mozne bez problemu instalovat MSDE SP3, ta puvodni (napr. z
MSDN) nejdou.
Jaroslav Nadhera
CSH spol. s r.o.
Velflikova 10, 160 00 Praha 6
tel.: 224 312 344-5
fax: 235 522 892
e-mail: nadhera(zv)csh(tec)cz WWW: http://www.csh(tec)cz
pobocka Ostrava:
Nedbalova 14, 701 00 Ostrava
tel: 596 635 687
RichEdit a Obrazek
[*] Ing. Jan Dvorak <dvorak(zv)szu(tec)cz> - 21.10.2004 10:55:35
Dekuji za namet. Je RxRichEdit totozny s JvRichEdit ve verzi 2.
Kde lze ziskat popisy Jv komponent? Help pro ne je velice skoupy.
Jan Dvorak
>
> Bud se da pouzit RxRichEdit (aktualne v JVCL) nebo koupit
> RichView ... oboji
> to nejak umi ... Standardni RE obrazky nezvlada ...
>
> Danik
ScrollBox u ListView
[*] Petr Fiser <petr.fiser(zv)3jservis(tec)cz> - 21.10.2004 10:27:33
Dobry den.
Da se nejakym zaslanim zpravy komponente ListView urcit parametry zobrazeni ScrollBars (sirku sloupce, velikost tahla, velikost sipek)?
Dekuji.
Petr Fiser
3J Servis s.r.o
Dulni 441
Bilina, 418 01
Tel: +420 603 887 663
RichEdit a Obrazek
[*] Daniel Frantik <frantik(zv)telpro(tec)cz> - 21.10.2004 09:59:31
Bud se da pouzit RxRichEdit (aktualne v JVCL) nebo koupit RichView ... oboji
to nejak umi ... Standardni RE obrazky nezvlada ...
Danik
> -----Original Message-----
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Ing. Jan Dvorak
> TRichEdit.Lines.LoadFromFile. Vse je v prijatelnych mezich az
> do okamziku, kdy v textu je obsazen take obrazek. Ten se
> nenacte, resp. nezobrazi. Existuje nejaky jiny zpusob nacteni
Filtrovani kbmMemTable v druhem vlakne
[*] Ludek Finstrle <ludek.finstrle(zv)pzkagis(tec)cz> - 21.10.2004 09:51:30
> filtrovani probihalo v jinem vlakne. Nebo napr. az kdyz pul sekundy
> nepise.
Tady bych hodil timer do OnKeyDown ci Press nebo kam by se to nejvice
hodilo.
Luf
DBGrid to string
[*] Ludek Finstrle <ludek.finstrle(zv)pzkagis(tec)cz> - 21.10.2004 09:55:31
> potreboval bych bunku DBGridu na pozici [x,y] nejak dostat do
> promenne String
K cemu to ma slouzit? Jinak bych poradil posunout se v tabulce na zaznam
x (TopRow + x), zjistil bych, ktery f (TField) je pro sloupec y a
pak uz jen f.AsString.
Luf
FB - jak na casto se menici tabulky
[*] Slavomir Skopalik <skopalik(zv)elektlabs(tec)cz> - 21.10.2004 09:49:30
> na FB jsem pro export zmen v zasobe pouzival tento postup:
>
> - dve tabulky: Zasoba, ZasobaEx
> 1. pri exportu se odeslou rozdily mezi Zasoba a ZasobaEx
> 2. provede se DELETE FROM ZasobaEx
> 3. provede se INSERT INTO ZasobaEx SELECT * FROM Zasoba
>
> Coz samozrejme nelze delat prilis casto, jinak vznikne
> spousta "smeti", o kterem se tu diskutovalo
> nedavno. Nyni by vsak zakaznik rad, aby se export castio delal.
Je otazkou kolik zaznamu je takto vytvareno a mazano.
Pokud je to v prijatelnych mezi, tak neni treba se tim zabyvat.
>
> Neznate nekdo elegantni reseni, jak nahradit kroky 2 a 3
> necim, co nebude vytvaret moc "smeti"?
>
> Popr. co se tyce FB 1.5 - jak moc zdrzuje pri provozu, kdyz
> se necha zapnuty automaticky sweep
> napr. po 10000 transakcich? Zatim jsme hodelali "rucne" v
> noci a to bezel kratce.
Me to pripada, ze by se na to hodilo view.
U vsech DB nechavam automaticky sweep.
Slavek
FB - jak na casto se menici tabulky
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 21.10.2004 09:03:24
Dobry den,
na FB jsem pro export zmen v zasobe pouzival tento postup:
- dve tabulky: Zasoba, ZasobaEx
1. pri exportu se odeslou rozdily mezi Zasoba a ZasobaEx
2. provede se DELETE FROM ZasobaEx
3. provede se INSERT INTO ZasobaEx SELECT * FROM Zasoba
Coz samozrejme nelze delat prilis casto, jinak vznikne spousta "smeti", o kterem se tu diskutovalo
nedavno. Nyni by vsak zakaznik rad, aby se export castio delal.
Neznate nekdo elegantni reseni, jak nahradit kroky 2 a 3 necim, co nebude vytvaret moc "smeti"?
Popr. co se tyce FB 1.5 - jak moc zdrzuje pri provozu, kdyz se necha zapnuty automaticky sweep
napr. po 10000 transakcich? Zatim jsme hodelali "rucne" v noci a to bezel kratce.
Diky,
Karel Rys
DBGrid to string
[*] Matejcek Petr <konference(zv)crhov.komfi(tec)cz> - 21.10.2004 08:53:23
DD
potreboval bych bunku DBGridu na pozici [x,y] nejak dostat do
promenne String
poradil by pls nekdo jak ?
diky PM
ShellExecAndWait
[*] Frantisek Bohac <bohacf_dkonf(zv)vnol(tec)cz> - 21.10.2004 07:49:18
Viktor Marek napsal(a):
> <>Tato syntaxe ale nefunguje
> ShellExecAndWait('cmd.exe /C','prikazy','',1);
A nemelo by to byt spis:
ShellExecAndWait('cmd.exe', '/C prikazy','',1);
> <>Dale bych se chtel zeptat zda funguje prikaz "cmd,exe" na WIN ME,
> WIN XP a
> na dalsich vysich OS WIN
> Jak spustit prikazovy radek na WIN98 (command.com /c ?????)
>
Tohle by mohlo fungovat i na Win9x:
var comspec: string;
begin
GetEnvironmentVar('comspec',comspec,false);
ShowMessage(comspec);
end;
Takze spusteni prikazu by mohlo vypadat nasledovne:
ShellExecAndWait(comspec,'/c dir c:\*.*>c:\seznam.txt');
S pozdravem
Frantisek Bohac
Firebird a GBAK na velkou GDB
[*] Tomas Bradle <t.bradle(zv)sanet(tec)cz> - 20.10.2004 21:36:37
To rozhodne Win XP delaji :-(
Je potreba vypnout nastroj obnoveni systemu (tento pocitac | vlastnosti),
jinak pri kazde zmene DB provadi zalohu.
Tomas Bradle
t.bradle(zv)worldonline(tec)cz
----- Original Message -----
From: "Ing. Miroslav Vopalecky" <m.vopalecky(zv)tiscali(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Wednesday, October 20, 2004 9:53 AM
Subject: Re: Firebird a GBAK na velkou GDB
> Ahoj.
> Kdesi jsem cetl, ze pripona GDB je take jeste nekde pouzivana systemem
> Windows. Resenim u toho bylo prejmenovat priponu databaze na fdb. Myslim
si,
> ze Windowsi si soubory s GDB sleduji pro sebe a neco s nimi delaji.
> S pozdravem Mirek Vopalecky, D7 W2000
>
>
>
Filtrovani kbmMemTable v druhem vlakne
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 20.10.2004 20:32:32
Ja bych to resil rozhodne pomoci prodlevy. Neni to celkem nic sloziteho -
mohu zaslat priklad pouziti...
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Karel Pecinka
> Sent: Wednesday, October 20, 2004 8:11 PM
>
> mam aplikaci, ve ktere uzivatel pise do Editu text a okamzite po napsani
> se mu filtruje memory tabulka, ktera muze mit az 10.000 nebo vice radku.
>
> filtrovani probihalo v jinem vlakne. Nebo napr. az kdyz pul sekundy
> nepise. Zkousel jsem presouvat to filtrovani do druhyho vlakna, ale je
Filtrovani kbmMemTable v druhem vlakne
[*] Karel Pecinka <k.pecinka(zv)seznam(tec)cz> - 20.10.2004 20:10:30
Zdravim,
mam aplikaci, ve ktere uzivatel pise do Editu text a okamzite po napsani
se mu filtruje memory tabulka, ktera muze mit az 10.000 nebo vice radku.
U takoveho mnozstvi uz se stava, ze uzivatel napise rychle slovo a pak
musi cekat a vidi, jak se pomalu do editu pripisujou pismenka a zuzuje
se vyber. Je to sice pouzitelne, ale neni to prilis efektni.
Potreboval bych to vymyslet tak, aby uzivatel mohl nerusene psat a
filtrovani probihalo v jinem vlakne. Nebo napr. az kdyz pul sekundy
nepise. Zkousel jsem presouvat to filtrovani do druhyho vlakna, ale je
to problematicky, protoze to zase hlavni vlakno musi zobrazit a tak
dochazi ke konfliktum.
Poradite nekdo, jak se da vyresit tento problem?
Diky.
Karel
Firebird a Strakonice
[*] Slavomir Skopalik <skopalik(zv)elektlabs(tec)cz> - 20.10.2004 16:40:16
> prosim netahej sem tvojejedina spravna reseni. Osobne musim
> priznat, ze tvoje reseni vzdy vypadaji velmi pekne a
> fundovane. Bohuzel moje zkusenost s jejich praktickou
> realizaci uz tak dobra neni. Asi by bylo dobre priznat, ze
> vyjma toho ze nepouzivame pri zalohovani pipe, tak cele
> nastaveni systemu, tedy i ten tebou kritizovany RAID5
Jenze ty pipe jsou v tomto konktretnim pripade velmi dulezite.
Dale jste ubrali jeden disk z RAID pole, zmenili OS,
zmenili FW na true(tedy doufam).
Tim doslo k podstatnemu zhosreni propustnosti IO behem zalohovani
-> mnohem delsi zalohovani.
> odpovida tomu co jsi tam nasadil sam na Linuxu. V neposledni
> rade by bylo dobre priznat, ze v rozporu s tim co tu psal P.
> Cisar, ty jsi proste nepamatoval na pravidelne promazavani DB
> a tim jsi nechal DB uplne zbytezne narustat. Jeji pripadne a
> myslim ze nutne promazani tedy zabere uplne zbyteny cas,
> ktery si vyzada MGA pri odstranovani velkeho objemu dat. A o
Souhlasim, mazani je u MGA problem, ale neni to problem
teto instalace.
Navic, pokud neni dobry duvod promazavat (neci tim ziskas),
tak se to nedela, jelikoz je to prace nevic.
Velikos DB 2.3 GB po 3 letech provozu je prijatelna a neni
podle meho nazoru treba provadet zadne zvlastni upravy.
Jinak hlavni data pozaduje zakaznik uchovavat po dobu 15 let
(jeho vyjadreni), takze odmazavanim nekterych nepodstatnych
dat si sice trochu pomuzes, ale problem nevyresis.
Uplne stejny problem je totiz u ostatnich DB, ktere nejsou v me
moci.
> testovani bych opravdu byt tebou radsi pomlcel! Nektere veci
> co jsme tam nasli o moc velkem testovani nesvedci. A jen tak
Jsem jedno velke ucho :).
> bokem - proste pochop, ze na Linux ti lidi co s nim neumi
> nejsou zvedavy, on tam totiz nikdo s Linuxem delat nechce.
Ja ti nenutim LINUX, ja to umim rozchodit i na Windows.
Na LINUX mam lidi.
Moje firma davala nebidku na upgrade SW, jenze jste vyhrali Vy.
>
> Navic je to debata o nicem, treba prestaveni zacatku muzes
> provest sam, takze to na nikoho nehazej.
Ale ja se jen branim, prohresil jsem jen tim, ze jsem uvedl
CZ Strakonice do seznamu firem, kde se zalohuje po 8 hodinach.
Problemy, ketre popisujes zatim koncoveho zakaznika netrapi.
Az jej budou trapit, tak se na Vas, nebo na mne obrati s zadosti
o pomoc. Podle mych vypoctu to bude trvat asi tak jeste 2 - 6 mesicu.
Prace, ktera se musi provest je stejna ted, jako po te dobe, k ohrozeni
dat zakaznika nedojde (pokud se server hardwarove nepolozi).
Dale navrhuji tuto debatu presunout mimo konferenci.
Slavek
Tlac postovych poukazov typu U
[*] Kalhous <kalhous(zv)eu(tec)cz> - 20.10.2004 15:02:09
Rada-nerada: na takoveto tisky je asi jedine 100% reseni - pouzivat pro ne
dokumentove tiskarny do kterych se vlozi papir, tiskarna pozna kde zacina a
podle definice formulare zacne tisk presne tam kam patri. Proste to co maji
typicky treba na poste.
> Chcel by som sa spytat, ako riesite tlac postovych poukazov typu U do
> predtlacenych formularov (na jednom papieri 3 poukazy, format
> 210x304,8mm).
Trida v balicku
[*] Ondrej Kelle <o.kelle(zv)digitalpublishing.de> - 20.10.2004 14:40:07
> je nejaka moznost, jak dostat tridu z balicku? Mam app.
> (buildnutou bez balicku) a par svych trid (komponenty
> odvozene od Tcomponent). Potrebuju tyto komponenty
> pouzivat v app. Je nejaka moznost, jak toto dostat z
> balicku?
To bude IMHO problem. Aplikacia, kedze je buildovana bez balickov, ma v sebe
prilinkovane vsetky (v nej pouzite) triedy VCL. Naproti tomu ten balicek
linkuje triedy z dalsich runtime balickov; napriklad TComponent z rtl70.bpl.
To znamena, ze po natiahnuti Tvojej .bpl do procesu .exe pouzivas duplicitne
triedy.
Napriklad TComponent z rtl70.bpl a TComponent z .exe - su to sice triedy s
identickym kodom, ale napriklad operatory is, as medzi nimi navzajom nebudu
fungovat. To moze viest k necakanym a neprehladnym chybam, v podstate je to
nepouzitelne.
Vo vseobecnosti plati, ze runtime balicky sa daju pouzivat iba v pripade, ak
je aplikacia buildovana s volbou "Build with runtime packages".
Teoreticky by mozno slo po natiahnuti balicka patchnut classinfo, VMT, RTTI
atd. tej triedy, aby dedila od prislusnych predkov v .exe, to vsak nebude
trivialna vec, napisat to spravne.
Podla mna mas dve rozumne moznosti:
- prebuildovat aplikaciu s runtime packages, alebo
- prilinkovat si tie triedy priamo do aplikacie.
HTH
TOndrej
TDBGrit a locate
[*] Ludek Finstrle <ludek.finstrle(zv)pzkagis(tec)cz> - 20.10.2004 14:18:05
> Na zobrazovanie zaznamov databazy pouzivam TDBGrid (resp jeho
> potomka)+TIBQuery a v tomto zozname obcas potrebujem niektory zaznam
> vyhladat pomocou Locate. Hladanie prebieha OK, je len jeden problem: najdeny
> zaznam sa zobrazi NA POSLEDNOM RIADKU gridu; ja by som vsak potreboval, aby
> sa zobrazil UPROSTRED GRIDU, aby bolo vidiet zaznamy ktore mu predchadzaju,
> aj zaznamy, ktore za nim nasleduju.
>
> Neviete niekto poradit.
Zkus se kouknout do archivu a hledej "DBGrid a TopRow" nebo neco
takoveho. Vyresil jsem tento problem v prubehu tohoto leta ...
Ale z hlavy si to nepamatuji. Pokud to nenajdes, tak se ozvi. Podival
bych se.
Luf
Trida v balicku
[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 20.10.2004 14:12:04
Ahoj,
je nejaka moznost, jak dostat tridu z balicku? Mam app. (buildnutou bez
balicku) a par svych trid (komponenty odvozene od Tcomponent). Potrebuju
tyto komponenty pouzivat v app. Je nejaka moznost, jak toto dostat z
balicku?
--
]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^[
] Jiri Cincura [
] e-mail: mailto:jiri(zv)cincura.net; | http://www.cincura.net/ [
] mailto:xcincura(zv)informatics.muni(tec)cz | http://photo.cincura.net/ [
] ICQ#: 314711544 | http://phorum.cincura.net/ [
] --- [
] And if our times are difficult and perplexing, [
] so are they challenging and filled with opportunity. [
] -Robert F. Kennedy, 1961 [
]--------------------------------------------------------------------------[
ShellExecAndWait
[*] Viktor Marek <viktor(zv)mbox.vol(tec)cz> - 20.10.2004 13:42:01
Zdravim
potrebuji spustit cmd.exe a v parametru mu vnutit prikazy z promene
"prikazy"
Tato syntaxe ale nefunguje
ShellExecAndWait('cmd.exe /C','prikazy','',1);
Dale bych se chtel zeptat zda funguje prikaz "cmd,exe" na WIN ME, WIN XP a
na dalsich vysich OS WIN
Jak spustit prikazovy radek na WIN98 (command.com /c ?????)
Diky za radu
Viktor Marek
viktor(zv)vol(tec)cz
Firebird shadowing
[*] Andreas Bednarek <bednarek(zv)digitus(tec)cz> - 20.10.2004 13:40:00
Zdravim,
>> b) vytvori se novy stinovy soubor (CONDITIONAL) (to i v pripade selhani
>> E...)
>
> Ne. Ja vim, ze dokumentace pravi ze ano, ale skutecnost je jina.
> Podle zdrojovych textu Firebirdu a IB6 je tahle funkcionalita
> rozbita, a nemam tuseni kdy k tomu doslo a zda vubec nekdy fungovala
> (nemam pristup k IB pred verzi 4). Ve zdrojacich je to nejasne.
> Ohledne conditional se zdrojak odvolava na kod a parametry ktere tam
> proste nikde nejsou inicializovane (a nevim zda nekdy byly, ale podle
> dokumentace zrejme ano).
>
> Da se rici, ze parametr CONDITIONAL je v soucasnosti jednoduse
> ignorovan.
>
Tohle je tedy necekane. Zrejme disky nehori tak casto, takze clovek nemusi
nikdy prijit na to, ze CONDITIONAL nepracuje. Skoda, snad to nekdy nekdo
spravi, kdyz uz je to vsude zdokumentovane (vcetne Tve knihy o IB/FB ;-)
Tenhle parametr tedy radeji pouzivat nebudu...(ostatne to prece jen
vyzkousim, je-li to opravdu tak)
>> Nevim jak nasimulovat selhani disku a odpoved jsem v zadne dokumentaci
>> nenasel.
>
> Pouzij disketu.
>
Ehm...jaktoze me to...ja jsem totiz.... (disketa? takoveto male ctverate cca
3.5 palce? kde uz jsem o tom.... :-)
Ne vazne - jak proste!!
>zkus to na USBflashdisk a vytahni ho za chodu. nebo to zkus na diskete s
>nejakou malou databazickou a taky ji vyndej za behu databaze. hdd bych z
>ide ksandy radeji za chodu neoddelaval, ale SATA disk by mohl jit (over
>si to ale u nekoho chytrejsiho!!!).
Ta disketa bude snad stacit (me drahe SATA disky jsou mi prave prilis drahe,
nekde jsem take slysel, ze se disku nic nestane kdyz vytahnu kabel, ale take
bych to nerad odpojil v okamziku, kdy se posilaji data pro zapis do FAT ci
podobne...;-)
(Co se stane, kdyz se v prubehu pouzivani pouze stinu opet zpristupni hlavni
soubor si uz overim s tou disketou, ale pocitam, ze se zmeny ve stinu opet
odzrcadli v hlavni db...)
Dekuji
A.B.
Server/Client sockets II. vs. local Chat
[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 20.10.2004 12:47:57
DD,
On Wednesday, October 20, 2004 12:29 PM [CET], mydelphiconf(zv)centrum(tec)cz
<mydelphiconf(zv)centrum(tec)cz> wrote:
> Ahojky Delphini,
> jako seminarku mame napsat jakysi lokalni chat, tedy chatik pro
> lokalni sit (ucebna). Chtel jsem puvodne pouzit koponenty
> ClientSocket a ServerSocket, ale (viz. vcerejsi mail) po jejich
> importu do D7 jsem narazil na problemek. Zkousel jsem si priklad z
> http://www.zive(tec)cz ze sekce Programovani Delphi - socket applikace
> server/client. A pri pokusu o pripojeni klienta na server mi to hazi
> Asynchronous socket error 10049. Netusite nekdo, cim to? (server mi
> bezi ... :))
www.google.com ma na vsechno odpoved
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/connect_2.asp
cili zrejme spatbe nastavene parametry pro navazani spojeni (adresa
cislo portu)
> ... rad bych pouzil pripadne jine komponenty, ale zadnou podobnou
> app jsem jeste nedelal, nemuzete mne nekdo nasmerovat na neco
> konkretniho pripadne i s odkazem na nejaky prikladek pouziti ... ?
Pokud ma vysledkem toho programovani byt skutecne nejaky prinos, pak
pouzij primo povely WinAPI (Winsock). Jedine tak ziskas alespon trosku
predstavu o cem to vlastne je ... Bezne veci (jako ten chat) jsou po
prolomeni informacni bariery ve skutecnosti velice jednoduche....
D. Toman
Tlac postovych poukazov typu U
[*] Ing. Slavomir Timko <timko(zv)novisoft.sk> - 20.10.2004 12:47:57
Zdravim
Chcel by som sa spytat, ako riesite tlac postovych poukazov typu U do
predtlacenych formularov (na jednom papieri 3 poukazy, format 210x304,8mm).
Problem je v tom, ze kolonky v predtlacenom formulari su prilis blizko
okraja papiera (menej ako 3mm) a tlaciarne takuto tlac neumoznuju (aspon som
neprisiel na to, ako to docielit). Vyriesil som to tak, ze predloha na tlac
je umiestnena na vacsi format (pri pouziti QuickReportu na format Letter),
teda tlaciaren to vytlaci, pretoze si mysli, ze ma v zasobniku vacsi format
papiera. Na druhej strane je zase problem v tom, ze inteligentnejsie
tlaciarne vedia rozpoznat velkost vlozeneho papiera (napr. IBM InfoPrint
1220), resp. na niektorych tlaciarnach sa vodiace prepazky podavaca papiera
zuzuju z obidvoch stran (napr HP1100).
Teda otazka je, ako docielit tlac blizko okraja papiera?
Zaroven by som sa chcel spytat, ako sa da nastavit nestardantna velkost
papiera?
D6Ent, QuickReport 3.5, W2k (riesenie moze byt aj pomocou FreeReportu)
Dakujem
Slavo.
Server/Client sockets II. vs. local Chat
[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 20.10.2004 12:39:56
> importu do D7 jsem narazil na problemek. Zkousel jsem si priklad z
> http://www.zive(tec)cz ze sekce Programovani Delphi - socket applikace
> server/client. A pri pokusu o pripojeni klienta na server mi to hazi
> Asynchronous socket error 10049. Netusite nekdo, cim to? (server mi
> bezi ... :))
Tak se podivej, co ta chyba znamena... je to preci: "Address family
not supported". Takze jak vypada ta adresa, na kterou se chces
pripojovat? Chybu bych zacal hledat tam...
Pripadne hloupa otazka... mas na svem pocitaci vubec nainstalovane
nejake TCP/IP?
> ... rad bych pouzil pripadne jine komponenty, ale zadnou podobnou app
> jsem jeste nedelal, nemuzete mne nekdo nasmerovat na neco konkretniho
> pripadne i s odkazem na nejaky prikladek pouziti ... ? Diky moc. P.
Kdybys o TCP/IP neco vedel, doporucil bych ti Synapsi. Pokud se teto
problematice nehodlas v budoucnu nejak dale venovat, a jde ti spise o
to to co nejrychleji naklikat pomoci komponent, pak radeji sahni po
Indy.
--
Lukas Gebauer.
E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.
Server/Client sockets II. vs. local Chat
[*] mydelphiconf(zv)centrum(tec)cz - 20.10.2004 12:29:55
Ahojky Delphini,
jako seminarku mame napsat jakysi lokalni chat, tedy chatik pro lokalni sit (ucebna).
Chtel jsem puvodne pouzit koponenty ClientSocket a ServerSocket, ale (viz. vcerejsi mail) po jejich importu do D7 jsem narazil na problemek. Zkousel jsem si priklad z http://www.zive(tec)cz ze sekce Programovani Delphi - socket applikace server/client. A pri pokusu o pripojeni klienta na server mi to hazi Asynchronous socket error 10049. Netusite nekdo, cim to? (server mi bezi ... :))
... rad bych pouzil pripadne jine komponenty, ale zadnou podobnou app jsem jeste nedelal, nemuzete mne nekdo nasmerovat na neco konkretniho pripadne i s odkazem na nejaky prikladek pouziti ... ? Diky moc. P.
Firebird shadowing
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 20.10.2004 12:17:54
Haj hou!
On 20 Oct 2004 at 10:45, Andreas Bednarek wrote:
> Ahoj vsem,
>
> mam nejakou nejasnost ohledne stinovani FB databaze, muzete-li mi
> poradit...
>
> Rekneme, ze mam hlavni db soubor 'd:\data.fdb'
>
> vytvorim shadow v automatickem rezimu a conditional na 'e:\data.shd'
>
> CREATE SHADOW 1 AUTO CONDITIONAL 'e:\data.shd'
>
>
> V pripade selhani disku D s primarni DB (ci jakemkoli znepristupneni souboru DB) ocekavam, ze
> a) 'e:\data.shd' prevezme ulohu primarni databaze bez preruseni spojeni k DB (AUTO)
Ano. V okamziku opetovneho uvedeni disku primarni databaze do provozu
je tato aktualizovana z shadow. Shadow ovsem v prubehu "krize"
zustava stale shadow, a nestava se skutecnou primarni databazi (nelze
se k nemu pripojit primo). Stavajici pripojeni tedy mohou pracovat /
dokoncit praci, ale nova nelze vytvorit. Pokud se ma stat shadow
skutecnou primarni databazi, je nutne ukoncit vsechna spojeni a
pouzit gfix pro jeho aktivaci jako primarni db stejne jako u rezimu
manual.
> b) vytvori se novy stinovy soubor (CONDITIONAL) (to i v pripade selhani E...)
Ne. Ja vim, ze dokumentace pravi ze ano, ale skutecnost je jina.
Podle zdrojovych textu Firebirdu a IB6 je tahle funkcionalita
rozbita, a nemam tuseni kdy k tomu doslo a zda vubec nekdy fungovala
(nemam pristup k IB pred verzi 4). Ve zdrojacich je to nejasne.
Ohledne conditional se zdrojak odvolava na kod a parametry ktere tam
proste nikde nejsou inicializovane (a nevim zda nekdy byly, ale podle
dokumentace zrejme ano).
Da se rici, ze parametr CONDITIONAL je v soucasnosti jednoduse
ignorovan.
> Nevim jak nasimulovat selhani disku a odpoved jsem v zadne dokumentaci nenasel.
Pouzij disketu.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
Firebird shadowing
[*] petr palicka <palicka.petr(zv)seznam(tec)cz> - 20.10.2004 11:05:47
> Nevim jak nasimulovat selhani disku a odpoved jsem v zadne dokumentaci nenasel.
zkus to na USBflashdisk a vytahni ho za chodu. nebo to zkus na diskete s
nejakou malou databazickou a taky ji vyndej za behu databaze. hdd bych z
ide ksandy radeji za chodu neoddelaval, ale SATA disk by mohl jit (over
si to ale u nekoho chytrejsiho!!!).
peca
Info - rychlost zalohy FB
[*] Stepan Dobias <stepan.dobias(zv)del(tec)cz> - 20.10.2004 11:05:46
Ne je tam FB 1.0, takze to bude asi tim.
Stepan
----- Original Message -----
From: "Karel Rys" <delphi(zv)zas-me(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Wednesday, October 20, 2004 9:51 AM
Subject: Re: Info - rychlost zalohy FB
> Stepan Dobias dne 20 Oct 2004 v 9:27:
>
> > Nemohl by mi nekdo tedy vysvetlit, proc sweep db o ktere se bavime (v
> > okamziku kdy jsem to testoval mela asi 1,9GB) trval zcela pravidelne
> > 22 hodin? DB byla ve stavu shutdown a nikdo k ni nemohl tedy
> > pristupovat. Je toto bezne chovani Firebirdu nebo je mozna nejaka
> > zavislost se strukturou dat v DB?
>
> Mate tam FB 1.5? Dokud jsme pouzivali IB 6.0, byl sweep neskutecne pomaly
a vytizeni serveru
> pritom treba jen 2 %.
>
> Karel Rys
>
>
>
TDBGrit a locate
[*] Andreas Bednarek <bednarek(zv)digitus(tec)cz> - 20.10.2004 11:19:49
> najdeny
> zaznam sa zobrazi NA POSLEDNOM RIADKU gridu; ja by som vsak potreboval,
> aby
> sa zobrazil UPROSTRED GRIDU, aby bolo vidiet zaznamy ktore mu
> predchadzaju,
> aj zaznamy, ktore za nim nasleduju.
Zdravim,
napr. u ListView kdyz potrebuji aby vzdy posledni pridany item byl
viditelny, posilam controlu ListView windows zpravu odpovidajici stisku
Ctrl+PageDown (tusim). Tvuj pripad je sice jiny, ale mozna by slo posilat
nejake MouseWheelUp/Down nebo jine WM_... zpravy
No, ber to asi spis jako nouzovy napad nez reseni...
IBO cislo TCP portu WAS: Je spusteny FB1.5? (druh
[*] Andreas Bednarek <bednarek(zv)digitus(tec)cz> - 20.10.2004 11:01:46
> Nevim proc chces tohle zkouset pres IBO - ja osobne to zkousim pres
> Synapsi.
> Jde proste jen o to, zda se navaze spojeni na port 3050. Pokud ano, tak
> pristoupim k dalsimu kroku.
To me take napadlo, ale jen tim, ze vytvorim spojeni jeste nemam zarucene,
ze je to prave IB/FB co tam nasloucha, mozna, kdyz budu uvazovat tak, ze
3050 je vyhrazene pro IB/FB a je to standart, bude to dostacujici, ale uz
pokud mam FB nastavene treba na port 3055 (kvuli koexistenci s IB) je to uz
jinak, navic bych potreboval presne vedet, zda tam nasloucha IB nebo FB.
Doufal jsem, ze by to slo nejak inteligentne zjistit pres FB API, i kdyz
jsem to jeste nezkousel pouzit v Delphi....> Alternativu TIBDatabaseInfo neznam, ale rad bych ji nasel neb mame IBO
> take
> koupene.
>
Bylo mi porazeno tohle:
TIB_Connection1.Characteristics.dbVersion
Bohuzel mame zakoupeny jen IBODataset Data Access modul, kde to neni... :-(
Kazdy napad ohledne dalsiho zpusobu jak zjistit zda bezi Firebird1.5 je
stale vitan.
S pozdravem
A.B.
TDBGrit a locate
[*] Ivan Kozak <ivan(zv)boucek(tec)cz> - 20.10.2004 10:53:45
Mozno ma niekto bude vediet nakopnut spravnym smerom:
Na zobrazovanie zaznamov databazy pouzivam TDBGrid (resp jeho
potomka)+TIBQuery a v tomto zozname obcas potrebujem niektory zaznam
vyhladat pomocou Locate. Hladanie prebieha OK, je len jeden problem: najdeny
zaznam sa zobrazi NA POSLEDNOM RIADKU gridu; ja by som vsak potreboval, aby
sa zobrazil UPROSTRED GRIDU, aby bolo vidiet zaznamy ktore mu predchadzaju,
aj zaznamy, ktore za nim nasleduju.
Neviete niekto poradit.
Dik.
Ivan Kozak
Firebird shadowing
[*] Andreas Bednarek <bednarek(zv)digitus(tec)cz> - 20.10.2004 10:45:44
Ahoj vsem,
mam nejakou nejasnost ohledne stinovani FB databaze, muzete-li mi poradit...
Rekneme, ze mam hlavni db soubor 'd:\data.fdb'
vytvorim shadow v automatickem rezimu a conditional na 'e:\data.shd'
CREATE SHADOW 1 AUTO CONDITIONAL 'e:\data.shd'
V pripade selhani disku D s primarni DB (ci jakemkoli znepristupneni souboru DB) ocekavam, ze
a) 'e:\data.shd' prevezme ulohu primarni databaze bez preruseni spojeni k DB (AUTO)
b) vytvori se novy stinovy soubor (CONDITIONAL) (to i v pripade selhani E...)
Otazky
ad a) Tohle bude fungovat zrejme do te doby, nez se klient od DB odpoji, mam pravdu? Nebot pri novem pokusu o pripojeni budu pravdepodobne zadat o 'd:\data.fdb', ktery neni pristupny. Nebo je to reseno jeste jinak?
ad b) kde a s jakym nazvem se ten novy stinovy soubor vytvori?
Nevim jak nasimulovat selhani disku a odpoved jsem v zadne dokumentaci nenasel.
Pokud vite, diky!
A.B.
RichEdit a Obrazek
[*] Ing. Jan Dvorak <dvorak(zv)szu(tec)cz> - 20.10.2004 10:09:42
Obracim se na forum opet se zacatecnickou otazkou. V komponente RichEdit
bych chtel zobrazovat nejake soubory ulozene na disku. Pouzivam k tomu
metodu TRichEdit.Lines.LoadFromFile. Vse je v prijatelnych mezich az do
okamziku, kdy v textu je obsazen take obrazek. Ten se nenacte, resp.
nezobrazi. Existuje nejaky jiny zpusob nacteni obsahu souboru vcetne obrazku
a jaky je?
Dekuji predem za kazdy namet. Jan Dvorak
Firebird a GBAK na velkou GDB
[*] Ing. Miroslav Vopalecky <m.vopalecky(zv)tiscali(tec)cz> - 20.10.2004 09:53:41
Ahoj.
Kdesi jsem cetl, ze pripona GDB je take jeste nekde pouzivana systemem
Windows. Resenim u toho bylo prejmenovat priponu databaze na fdb. Myslim si,
ze Windowsi si soubory s GDB sleduji pro sebe a neco s nimi delaji.
S pozdravem Mirek Vopalecky, D7 W2000 |Subject: Re: Firebird a GBAK na velkou GDB
|
|
|Obeznameni s problemem:
|1. DB ma velikost cca 2.3 GB
|2. Zalohovani probiha tak, ze se neprve vytvori backup DB a
|pak se komprimuje zipem. 3. Zalohovani dalsich DB velmi
|nepriznive ovlivnuje zalohovani "moji" DB, jelikoz probiha
|soucasne (tedy startuje o 2 hodiny drive, ale dobehne nekdy i
|pul hodiny po zahajeni "moji" zalohy). 4. Cely je to
|realizovano na RAID5 s 4 disky (paty je hot spare). 5. OS
|Windows 2000 6. FB 1.0.3
|
|Problemem je opravdu vytrashovani cache, jelikoz aktivni DB
|spojeni (ktere nebyla v testu simulovana!) vytvareji pozadavky
|na mahodny pristup. Tim, dochazi k problemem disku. Vhledem k
|FB 1.0 neni mozne pouzit FW OFF (jako na linuxu). Reseni jsem
|psal. Dale je treba mit na pameti, ze behem casu dochazi k
|fragmentaci DB souboru a tim i k zpomaleni sekvencniho cteni,
|zaroven dochazi k fragmentaci uvnitr DB souboru. Aktivita
|klientu vyrazne ovlivnuje dobu zalohy (problem RAID5 a
|zalohovani na stejny disk) a zaroven zalohovani podstatne
|ovlivnuje klienty. Problem je resitelny ( a snadno). Napriklad
|upgrade na kernel 2.6 + XFS filesystem + FB 1.5 + rodeleni
|pole na sytem a data + pipe + zamezeni soubeznemu spousteni
|zalohovani + pridani USB disku pro backup soubory + .....
|
| Slavek
Info - rychlost zalohy FB
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 20.10.2004 09:51:40
Stepan Dobias dne 20 Oct 2004 v 9:27:
> Nemohl by mi nekdo tedy vysvetlit, proc sweep db o ktere se bavime (v
> okamziku kdy jsem to testoval mela asi 1,9GB) trval zcela pravidelne
> 22 hodin? DB byla ve stavu shutdown a nikdo k ni nemohl tedy
> pristupovat. Je toto bezne chovani Firebirdu nebo je mozna nejaka
> zavislost se strukturou dat v DB?
Mate tam FB 1.5? Dokud jsme pouzivali IB 6.0, byl sweep neskutecne pomaly a vytizeni serveru
pritom treba jen 2 %.
Karel Rys
BitBtn.Glyph a EOutOfResources
[*] Ing. Antonin Spurny <spurny(zv)kavlounky(tec)cz> - 20.10.2004 09:39:39
Ahoj,
Pouzivam: D7 Profesional, W XP pro.
Upravuju jedenu svou starsi aplikaci, puvodne vytvorenou v D2. Pravidelne se
mi objevuje chyba EOutOfResources. Je zajimave, ze se objevuje jen pokud se
k PC prihlasim na uzivatele, ve kterem jsem neinstaloval Delphi. Pokud
aplikaci spustim v uzivateli, ve kterem jsou D nainstalovany, chyba se
neprojevi.
Zajima me, jestli "BitBtn1.Glyph:= Led2On;" je korektni zpusob naplneni
obsahu Glyph nebo jestli mam radeji vymyslet jiny zpusob naplneni Glyph.
Pokud tohle prirazeni neprovadim a menim misto toho jen barvu textu
tlacitka, chyba se neprojevuje.
(Rad bych dale menil obrazek, protoze bych nemusel prekopavat vzhled cele
aplikace.)
Nize je postup jak property Glyph pracuji.
Na formulari mam tlacitka:
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
a deklaruju bitmapy:
Led1On,
Led2On: TBitmap;
v metode FormCreate je vytvarim a naplnuju
Led1On:= TBitmap.Create;
Led2On:= TBitmap.Create;
Led1On.LoadFromResourceName( HInstance, 'LED1ON');
Led2On.LoadFromResourceName( HInstance, 'LED2ON');
samozrejme v metode FormDestroy je uvolnuju:
Led1On.Free;
Led2On.Free;
v metode BitBtn1Click, kterou volaji vsechna tri tlacitka provadim toto:
procedure TFormPrehled.BitBtn1Click(Sender: TObject);
begin
.....
if Sender<>BitBtn1 then BitBtn1.Glyph:= Led2On;
if Sender<>BitBtn2 then BitBtn2.Glyph:= Led2On;
if Sender<>BitBtn3 then BitBtn3.Glyph:= Led2On;
(Sender as TBitBtn).Glyph:= Led1On;
end;
V D7 by se uz nemela projevovat chyba se zpracovanim malych bitmap.
Info - rychlost zalohy FB
[*] Stepan Dobias <stepan.dobias(zv)del(tec)cz> - 20.10.2004 09:27:38
Nemohl by mi nekdo tedy vysvetlit, proc sweep db o ktere se bavime (v
okamziku kdy jsem to testoval mela asi 1,9GB) trval zcela pravidelne 22
hodin? DB byla ve stavu shutdown a nikdo k ni nemohl tedy pristupovat. Je
toto bezne chovani Firebirdu nebo je mozna nejaka zavislost se strukturou
dat v DB?
Stepan
----- Original Message -----
From: "Karel Rys" <delphi(zv)zas-me(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Wednesday, October 20, 2004 8:41 AM
Subject: Info - rychlost zalohy FB
> Slavomir Skopalik dne 19 Oct 2004 v 14:31:
>
> > > Pro Slavka - "CZ Strakonice, a.s (Vsude je FB a full backup
> > > kazdych 8 hodin.)" . - je pro me prekvapeni, ze tam bezi
> > > zalohovani kazdych 8 hodin kdyz jsem sam nastavoval
> > > zalohovani jednou denne. Pokud si dobre vzpominam sam jsi
> > > tvrdil, ze zalohovani prilis zatezovalo system.
> >
> > Pardon, bezelo, dokud "nekdo" neprovedl neodborne nastaveni serveru.
> > Zalohovani tam ted trva priblizne 2:30 (ano dve hodiny a tricet
> > minut), pod linuxem trvalo na historickem 2.2 kernelu a RaiserFS 1.0
> > cca 30 minut.
>
> Schvalne jsem se dival, jak dlouho trva zaloha u nasich zakazniku: pod
Windows 2000, FB 1.5,
> procesor 800 MHz, RAM 256 MB. Databaze ma 560 MB a je ulozena na obycejnem
IDE disku, db stranky 4
> kB, cache na db stranky 10000 stranek. Vysledny .gbk soubor o velikosti
kolem 330 MB se uklada na
> sitovy disk na Novellu, sit 100 Mbit. Zaloha trva zhruba 5,5 minuty. Jeste
predtim se pousti
> sweep, ten trva asi 19 sekund. Tyhle casy jsou za situace, kdy databazi
nikdo jiny nepouzival.
>
> Karel Rys
>
>
>
Lokalizator
[*] Zbysek Hlinka <konference(zv)hlinka(tec)cz> - 20.10.2004 09:01:35
> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Kalhous
> Sent: Wednesday, October 20, 2004 8:36 AM
>
> Obcas se zde objevi zminka o lokalizatoru. Kde se da o nem
> neco najit (a koupit)? Dik.
Roste to zde: http://www.localizator.com
Rad bych vsechny upozornil, ze uz zhruba mesic plati cca polovicni ceny na
LL6 (aktualne tedy neco kolem 4000), nez ktere jsou vystaveny na webu (cau,
Petre! :). LL4 se uz neprodava, upgrade na LL6 z nizsich verzi je zrusen.
Cena je konecna a bude platit do skonceni podpory LL pro Win32 (dale bude
rozvijena jen verze pro .NET). Take jsem pro registrovane uzivatele uvolnil
kompletni zdrojaky (krome registracniho klice), pro vlastni potrebu a
studium, nikoliv pro dalsi sireni. Kdy budou ke stazeni, zeptejte se Petra
Zahradnika.
S pozdravem
Zbysek Hlinka
E-mail: hlinka zavin. hlinka(tec)cz
Firebird a Strakonice
[*] Stepan Dobias <stepan.dobias(zv)del(tec)cz> - 20.10.2004 08:41:31
Slavku,
prosim netahej sem tvojejedina spravna reseni. Osobne musim priznat, ze
tvoje reseni vzdy vypadaji velmi pekne a fundovane. Bohuzel moje zkusenost s
jejich praktickou realizaci uz tak dobra neni. Asi by bylo dobre priznat, ze
vyjma toho ze nepouzivame pri zalohovani pipe, tak cele nastaveni systemu,
tedy i ten tebou kritizovany RAID5 odpovida tomu co jsi tam nasadil sam na
Linuxu. V neposledni rade by bylo dobre priznat, ze v rozporu s tim co tu
psal P. Cisar, ty jsi proste nepamatoval na pravidelne promazavani DB a tim
jsi nechal DB uplne zbytezne narustat. Jeji pripadne a myslim ze nutne
promazani tedy zabere uplne zbyteny cas, ktery si vyzada MGA pri
odstranovani velkeho objemu dat. A o testovani bych opravdu byt tebou radsi
pomlcel! Nektere veci co jsme tam nasli o moc velkem testovani nesvedci. A
jen tak bokem - proste pochop, ze na Linux ti lidi co s nim neumi nejsou
zvedavy, on tam totiz nikdo s Linuxem delat nechce.
Navic je to debata o nicem, treba prestaveni zacatku muzes provest sam,
takze to na nikoho nehazej.
Stepan
----- Original Message -----
From: "Slavomir Skopalik" <skopalik(zv)elektlabs(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, October 19, 2004 5:22 PM
Subject: Re: Firebird a GBAK na velkou GDB
> Obeznameni s problemem:
> 1. DB ma velikost cca 2.3 GB
> 2. Zalohovani probiha tak, ze se neprve vytvori backup DB a pak se
> komprimuje zipem.
> 3. Zalohovani dalsich DB velmi nepriznive ovlivnuje zalohovani "moji"
> DB, jelikoz probiha
> soucasne (tedy startuje o 2 hodiny drive, ale dobehne nekdy i pul hodiny
> po zahajeni "moji"
> zalohy).
> 4. Cely je to realizovano na RAID5 s 4 disky (paty je hot spare).
> 5. OS Windows 2000
> 6. FB 1.0.3
>
> Problemem je opravdu vytrashovani cache, jelikoz aktivni DB spojeni
> (ktere nebyla
> v testu simulovana!) vytvareji pozadavky na mahodny pristup.
> Tim, dochazi k problemem disku.
> Vhledem k FB 1.0 neni mozne pouzit FW OFF (jako na linuxu).
> Reseni jsem psal.
> Dale je treba mit na pameti, ze behem casu dochazi k fragmentaci DB
> souboru
> a tim i k zpomaleni sekvencniho cteni, zaroven dochazi k fragmentaci
> uvnitr
> DB souboru.
> Aktivita klientu vyrazne ovlivnuje dobu zalohy (problem RAID5 a
> zalohovani na stejny disk)
> a zaroven zalohovani podstatne ovlivnuje klienty.
> Problem je resitelny ( a snadno). Napriklad upgrade na kernel 2.6 + XFS
> filesystem + FB 1.5 +
> rodeleni pole na sytem a data + pipe + zamezeni soubeznemu spousteni
> zalohovani + pridani
> USB disku pro backup soubory + .....
>
> Slavek
Info - rychlost zalohy FB
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 20.10.2004 08:41:31
Slavomir Skopalik dne 19 Oct 2004 v 14:31:
> > Pro Slavka - "CZ Strakonice, a.s (Vsude je FB a full backup
> > kazdych 8 hodin.)" . - je pro me prekvapeni, ze tam bezi
> > zalohovani kazdych 8 hodin kdyz jsem sam nastavoval
> > zalohovani jednou denne. Pokud si dobre vzpominam sam jsi
> > tvrdil, ze zalohovani prilis zatezovalo system.
>
> Pardon, bezelo, dokud "nekdo" neprovedl neodborne nastaveni serveru.
> Zalohovani tam ted trva priblizne 2:30 (ano dve hodiny a tricet
> minut), pod linuxem trvalo na historickem 2.2 kernelu a RaiserFS 1.0
> cca 30 minut.
Schvalne jsem se dival, jak dlouho trva zaloha u nasich zakazniku: pod Windows 2000, FB 1.5,
procesor 800 MHz, RAM 256 MB. Databaze ma 560 MB a je ulozena na obycejnem IDE disku, db stranky 4
kB, cache na db stranky 10000 stranek. Vysledny .gbk soubor o velikosti kolem 330 MB se uklada na
sitovy disk na Novellu, sit 100 Mbit. Zaloha trva zhruba 5,5 minuty. Jeste predtim se pousti
sweep, ten trva asi 19 sekund. Tyhle casy jsou za situace, kdy databazi nikdo jiny nepouzival.
Karel Rys
Firebird a GBAK na velkou GDB
[*] Marek Dostal <konf(zv)agnis(tec)cz> - 20.10.2004 08:59:35
> To vsetko sa riesi za chodu systemu za plnej prevadzky? Aky je to podnik,
> ze sa tam pracuje aj v nedelu a cez sviatky s informacnym systemom?
Treba hotely, kde je recepce v provozu 24 hodin, coz je vetsina. Prubezne
zalohovani za chodu pomoci nastroje gbak neni problem.
Marek Dostal
D7Prof, WinXP Home, FireBird 1.0.2
Lokalizator
[*] Kalhous <kalhous(zv)eu(tec)cz> - 20.10.2004 08:35:31
Obcas se zde objevi zminka o lokalizatoru. Kde se da o nem neco najit (a koupit)? Dik.
Z.Kalhous
ToWare s.r.o.
Velikost souboru u FB1.0 vetsi nez 2GB?
[*] Stepan Dobias <stepan.dobias(zv)del(tec)cz> - 20.10.2004 08:25:30
Protoze Firebird moc neznam rad bych se zeptal - nekde jsem nasel (asi
clanek na DB svete) ze muze byt problem u Firebirdu 1.0 pokud je DB vetsi
nez 2 GB. Myslim, ze slo o problem v ve vnitni adresaci souboru. Jako reseni
se tam psalo, ze to lze resit rozlozenim DB do vice svazku (souboru). Chci
se jen zeptat jestli s tim ma nekdo prakticke zkusenosti.
Stepan
Ruseni dynamicky vytvoreneho TFrame
[*] Zapletal Martin <zapletal(zv)inoma(tec)cz> - 20.10.2004 08:09:29
Nasledujicim postupem vytvorim frame a priradim k nemu pozadovane hodnoty.
Chci-li jej smazat, kliknutim si jej oznacim ale pri jakemkoliv pokusu jej
zrusit (destroy, free...) mi skoci AcessViolation a kod skoci do Unit
Handle. Pro oznaceni a posun Frame pouzivam komponentu TStretchHandle.
Zkousel jsem ruzne postupy, ale nejak se nedari. Uz jsem z toho srnka.
Jestli nebude problem nebo nejaka vazba na StretchHandle
MyFrame := TFrame0.Create(MSheet);
MyFrame.Name := Sect[i];
MyFrame.Tag:=DI.ReadInteger(Sect[i], 'Tag', 0);
MYFrame.Width:=DI.ReadInteger(Sect[i], 'Width', 85);
MYFrame.Height:=DI.ReadInteger(Sect[i], 'Height', 85);
MYFrame.Top:=DI.ReadInteger(Sect[i], 'Top', 85);
MYFrame.Left:=DI.ReadInteger(Sect[i], 'Left', 85);
MyFrame.Parent := PageControl1.Pages[PageControl1.ActivePageIndex];
Jaky je spravny postup pro ruseni?
Zapletal Martin, D7, WXP
Server/Client socket D5 vs. D7
[*] Development <development(zv)cmail(tec)cz> - 19.10.2004 20:00:40
Ahoj,
> v Delphi5 jsem mel v zalozce System mimojine i komponenty
> ServerSocket a KlientSocket. Ted jsem presel na D7 a ejhle,
> komponenty nikde ... nemuzu je nikde najit. Netusite, cim to
> Borland nahradil a pripadne jestli bude stejne pouziti (nejake
> url na tu 'novou alternativu' by se mi siklo ... :( )
===================================================
Delphi 7
Release Notes
...
Borland is deprecating the use of the TServerSocket
and TClientSocket from the unit ScktComp. It is
recommended that you use the Indy components for
socket operations. The TServerSocket and
TClientSocket will no longer be installed on the
component palette by default. If you require the
use of these components then you can install
the design time package named dclsockets70.bpl,
found in your bin directory. For deployment with
runtime packages, you will need to deploy rtl70.bpl
and any other required packages.
===================================================
Mirek S.
TADODataSet
[*] Winsoft <winsoft(zv)netkosice.sk> - 19.10.2004 17:24:29
> TADOCustomDataSet ma moznost ulozeni do a nacteni z XML souboru, totez je
i u komponent ADONIS.
> Me by se ale docela hodilo ulozit / nacist dataset do/z XML stringu.
> Potreboval bych ho predavat jine aplikaci a vytvareni docasnych souboru
se mi nezda prilis efektivni,
> nehral jste si s tim nekdo ?
ADO umoznuje citat/ukladat XML aj z/do pametoveho streamu.
V Adonise je TADOStream komponent, jeho pouzitie v tomto pripade je:
var
ADODataset: TADODataset;
ADOStream: TADOStream;
// uloz do streamu
ADODataSet.Recordset.Save(ADOStream.ADOStream, ADO.adPersistXML);
// precitaj a ukaz XML zo streamu
ShowMessage(ADOStream.ReadText(ADOStream.Size));
Na e-mail adresu posielam jednoduchy priklad. Do Adonis doplnime
funkciu, ktora to bude uklada/citat jednoduchsie v najblizsej verzii.
Erik
Firebird a GBAK na velkou GDB
[*] Slavomir Skopalik <skopalik(zv)elektlabs(tec)cz> - 19.10.2004 17:22:28
Obeznameni s problemem:
1. DB ma velikost cca 2.3 GB
2. Zalohovani probiha tak, ze se neprve vytvori backup DB a pak se
komprimuje zipem.
3. Zalohovani dalsich DB velmi nepriznive ovlivnuje zalohovani "moji"
DB, jelikoz probiha
soucasne (tedy startuje o 2 hodiny drive, ale dobehne nekdy i pul hodiny
po zahajeni "moji"
zalohy).
4. Cely je to realizovano na RAID5 s 4 disky (paty je hot spare).
5. OS Windows 2000
6. FB 1.0.3
Problemem je opravdu vytrashovani cache, jelikoz aktivni DB spojeni
(ktere nebyla
v testu simulovana!) vytvareji pozadavky na mahodny pristup.
Tim, dochazi k problemem disku.
Vhledem k FB 1.0 neni mozne pouzit FW OFF (jako na linuxu).
Reseni jsem psal.
Dale je treba mit na pameti, ze behem casu dochazi k fragmentaci DB
souboru
a tim i k zpomaleni sekvencniho cteni, zaroven dochazi k fragmentaci
uvnitr
DB souboru.
Aktivita klientu vyrazne ovlivnuje dobu zalohy (problem RAID5 a
zalohovani na stejny disk)
a zaroven zalohovani podstatne ovlivnuje klienty.
Problem je resitelny ( a snadno). Napriklad upgrade na kernel 2.6 + XFS
filesystem + FB 1.5 +
rodeleni pole na sytem a data + pipe + zamezeni soubeznemu spousteni
zalohovani + pridani
USB disku pro backup soubory + .....
Slavek
> Asi to sem nepatri a nehodlam se k tomu nijak siroce
> vyjadrovat. Jen bych te rad upozornil, ze tebou navrhovana
> reseni uz jsme diskutovali a nebylo to uplne, tak jak tvrdis,
> napr. v dokumentaci jsem nasel, ze "pipe" funguji v FB1.0
> pouze na linuxu. Dale je zvlastni ze do provedeni tvych uprav
> bezelo zalohovani i na Windows 30 min. Samozrejme nevylucuji,
> ze jsme neudelali chybu. Jen je zvlastni, ze zalohovani DB
> dalsich firem probiha celkem bez problemu a blbne jen ta tvoje.
>
> Stepan
TADOTable a fitered
[*] Martin Pisarik <martin.pisarik(zv)seznam(tec)cz> - 19.10.2004 16:36:24
Ahoj,
Mam 2 dotazy:
Pokud mam tabulku, ke krete pristupuju pomoci komponenty TADOTable, bude
Metoda Open() rychlejsi pri pouziti filtru (property filter a filtered),
ktery mi zasadne zredukuje mnozstvi dat v tom datasetu?
Jde mi o to, zda kdyz pouziju tento filtr, tak se taha ze serveu min dat a
nebo je to jedno a filtruje se to az na urovni aplikace? (v tom pripade by
filtr zpomaloval)
Metoda Refresh() u TADOTable nefunguje? (Me aspon ne)
Diky za odpoved.
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] Petr Fejfar <development(zv)callnet(tec)cz> - 19.10.2004 16:20:23
Ing. Jiri Sokol wrote:
> Pak do procedure TExclusiveThread._RequestExecute dej
> PostMessage(From1.Handle, wm_user+10, self.ThreadID, 255);
Sice nevim, co je metoda _RequestExecute, ale pokud nemas
nejake podezrele akce (= zavisle na jinych prostredcich) u predka
toho threadu, tak konstrukce
Vlakno:=TExclusiveThread.Create; //<--- tohle se nikdy neprovede
musi vytvorit novou instanci threadu. Kdyz pada ten konstruktor na AV, tak
to spis vypada na nejaky prepis pameti apod.
pf
delka Message-id a skutecny prijemce mailu (synaps
[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 19.10.2004 16:08:17
> > Nejak si nevybavuji zadne predepsane omezeni delky. letmo jsem se td
> > kouknul do RFC-822, a ani tam jsem zadne delkove omezeni nenasel.
>
> Nevim, zda ma ci nema omezeni, ale novejsi je RFC-2822.
To je uplne burt, protoze v teto veci opravdu nic nemeni.
Limit je jen jeden: 998 znaku na jednu radku, ale protoze kazda
hlavicka muze byt rozdelena do kolika chces radku, neprinasi to zadny
prakticky limit pro delku message-id hlavicky.
--
Lukas Gebauer.
E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.
delka Message-id a skutecny prijemce mailu (synaps
[*] Ludek Finstrle <ludek.finstrle(zv)pzkagis(tec)cz> - 19.10.2004 15:40:14
> > 1/ v hlavicce mailu se uvadi Message-id, ma tato hodnota omezenou
> > velikost? Nedavno mi prisel mail, ktery mel toto Id dlouhe 124 znaku a
> > s tim pri ukladani do databaze nepocitam.
>
> Nejak si nevybavuji zadne predepsane omezeni delky. letmo jsem se td
> kouknul do RFC-822, a ani tam jsem zadne delkove omezeni nenasel.
Nevim, zda ma ci nema omezeni, ale novejsi je RFC-2822.
Luf
delka Message-id a skutecny prijemce mailu (synaps
[*] Petr Kuklik <pkuklik(zv)cerny-ps(tec)cz> - 19.10.2004 14:45:50
Dobry den,
mam tu dva dotazy ohledne mailu a protoze pouzivam synapsy, tak by me zajimalo reseni s souvislosti s ni.
1/ v hlavicce mailu se uvadi Message-id, ma tato hodnota omezenou velikost? Nedavno mi prisel mail, ktery mel toto Id dlouhe 124 znaku a s tim pri ukladani do databaze nepocitam.
2/ pokud odeslu mail nekolika adresatum, kde napr AdresatA je v bcc, pak jeho adresu v hlavicce neuvadim. Kdyz AdresatA prijme takovyto mail, najde svou adresu az v "Received" castech hlavicky mailu. Vytahne nejak synapse tento udaj nebo si to musim rozebrat sam a pokud si to musim rozebrat sam, mohu se spolehnout na to, ze prvni "Received" s parametrem "for" obsahuje adresu AdresataA?
Diky Petr Kuklik
delka Message-id a skutecny prijemce mailu (synaps
[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 19.10.2004 15:11:58
> 1/ v hlavicce mailu se uvadi Message-id, ma tato hodnota omezenou
> velikost? Nedavno mi prisel mail, ktery mel toto Id dlouhe 124 znaku a
> s tim pri ukladani do databaze nepocitam.
Nejak si nevybavuji zadne predepsane omezeni delky. letmo jsem se td
kouknul do RFC-822, a ani tam jsem zadne delkove omezeni nenasel.
> 2/ pokud odeslu mail nekolika adresatum, kde napr AdresatA je v bcc,
> pak jeho adresu v hlavicce neuvadim. Kdyz AdresatA prijme takovyto
> mail, najde svou adresu az v "Received" castech hlavicky mailu.
> Vytahne nejak synapse tento udaj nebo si to musim rozebrat sam a pokud
> si to musim rozebrat sam, mohu se spolehnout na to, ze prvni
> "Received" s parametrem "for" obsahuje adresu AdresataA?
Nemuzes se na to spolehnout. Muzes se spolehnout jen na to, ze mnoho
'Received' zadne "for" mit vubec nebude.
--
Lukas Gebauer.
E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.
Firebird a GBAK na velkou GDB
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 19.10.2004 15:20:04
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Winsoft
> Sent: Tuesday, October 19, 2004 3:10 PM
>
> > Nebude zbytecne cekat, pokud T2 nebude potvrzena, ale skonci
> > rollbackem. Pak muze klidne svou zmenu zapsat. Ty jsi sice v prikladu
> > rozhodl ze T2 skonci commitem, a T1 tedy musi obdrzet chybu, ale v
> > dobe detekce kolize jeste o vysledku T2 neni rozhodnuto, a cekani by
> > tedy mohlo mit smysl. A i v pripade neuspechu cekani se muze
> > vyplatit, viz vyse o live locku.
>
> prepac, ale zas si to nedospekuloval, zas len komitne jedna
> transakcia, akurat, ze ta druha. Mne komitli obidva.
Netreba dospekulovavat - jak uz P. Cisar psal - v pripade naprosto
irelevantniho prikladu jsou jakekoliv vydedukovane zavery opet irelevantni.
Uved jediny prakticky a realizovany priklad v realnem systemu, ktery funguje
presne takhle.
S pozdravem
Milan Tomes
Server/Client socket D5 vs. D7
[*] Skalsky Milan <skalsky(zv)komercpoj(tec)cz> - 19.10.2004 14:47:50
A pokud se ti nebude chtit pouzivat ty Indy nebo synapsi (nebo treba jen potrebujes rekompilovat starej soft napsanej v D5, aniz bys ho musel upravovat, coz bude mozna tvuj pripad ... ), taxi 'doinstaluj' do D7 dclsockects70.bpl ... Pri instalaci D7 se totiz stejne nakopiruje na disk, akorat se neobjevi v instalovanych packages a tak ani v neni v 'zalozkach'.
Viz. Delphi7 - Component - Install Packages - Add.. "Borland/Delphi7/bin/dclsockets70.bpl"
ServerSocket a ClientSocket by se mely objevit v palete INTERNET.
Milan
mydelphiconf(zv)centrum(tec)cz wrote:
> Ahojky Delphini,
> v Delphi5 jsem mel v zalozce System mimojine i komponenty ServerSocket
> a KlientSocket. Ted jsem presel na D7 a ejhle, komponenty nikde ...
> nemuzu je nikde najit.
Firebird a GBAK na velkou GDB
[*] Ludek ZITA <konference(zv)sales(tec)cz> - 19.10.2004 15:14:00
On Behalf Of Winsoft
]
> aha, takze Microsoft a Oracle si nemozu ekonomicky dovolit
> implementovat MGA. Na rozdiel od akejsi firmicky (neviem si
> teraz spomenut ako sa vlastne vola), ktora robi MySQL.
> Zvlastna logika.
Ahoj.
Nebudu polemizovat o vyhodach zamku versus MGA ale s Tvym tvrzenim, ze
firmy Oracle a M$ by si mohly bez problemu dovolit predelat system
zamykani na system MGA.
Ja tvrdim ze by to ani pri jejich velikosti a financni sile dost dobre
neslo (alespon najednou) predevsim z duvodu ZPETNE KOMPATIBILITY. Jen
blazen by mohl vydat novou verzi tak klicoveho SW jako je SQL databaze,
ktera by zmenenou architekturou nutila stavajici uzivatele ZASADNE
predelat stavajici systemy. A to by IMHO nutne bylo, neb jsem
programoval drive pro IB a ted programuji hlavne pro MSSQL2000 a vim, ze
rozdil je zasadni (a to nejen z pohledu jine immplementace SQL) ale
hlavne v celkove filozofii pristupu. Viz zde mnohokrat diskutovany
obecny problem multiplatformniho programovani kde pokud mne pamet nemyli
je Erik spise odpurcem multiplatformniho pristupu.
Proto mi jiste das za pravdu, ze reakce zakaznika ve chvili, kdy ma vse
prepsat a predelat je vzdy velmi vrtkava a muze Ti ho to velmi lehce
odvest ke konkurenci (kdyz uz by to stejne musel predelavat).
Naopak, pokus o doplneni vlastnosti MGA do MSSQL a Oracle muze (ale
samozrejme to netvrdim) zrovna tak znamenat urcitou pripravu k prechodu
na system, ktery bude plne postaven na MGA (treba za 1-2 roky) a kam
terba pak budou dobastelny zase zamky pro zpetnou kompatibilitu.
Ze dne na den resp. Z verze na verzi si to nemuzou dovolit ani kolosy
tpu M$ a Oracle.
Ludek
Firebird a GBAK na velkou GDB
[*] Winsoft <winsoft(zv)netkosice.sk> - 19.10.2004 15:09:58
> Nebude zbytecne cekat, pokud T2 nebude potvrzena, ale skonci
> rollbackem. Pak muze klidne svou zmenu zapsat. Ty jsi sice v prikladu
> rozhodl ze T2 skonci commitem, a T1 tedy musi obdrzet chybu, ale v
> dobe detekce kolize jeste o vysledku T2 neni rozhodnuto, a cekani by
> tedy mohlo mit smysl. A i v pripade neuspechu cekani se muze
> vyplatit, viz vyse o live locku.
prepac, ale zas si to nedospekuloval, zas len komitne jedna
transakcia, akurat, ze ta druha. Mne komitli obidva.
Erik
Jak na oznaceni textu v Editu
[*] Ing. Radek Tomsik <radek(zv)tomsige(tec)cz> - 19.10.2004 14:55:51
Diky vsem za snahu, ja to potreboval pomoci sendmessage ..
Uz sem to vyresil, pred SendMessage musi byt jeste SetFocus
Radek
To: delphi-l(zv)clexpert(tec)cz
Subject: Re: Jak na oznaceni textu v Editu
Edit.SelectAll
Firebird a GBAK na velkou GDB
[*] Stepan Dobias <stepan.dobias(zv)del(tec)cz> - 19.10.2004 14:55:51
Asi to sem nepatri a nehodlam se k tomu nijak siroce vyjadrovat. Jen bych te
rad upozornil, ze tebou navrhovana reseni uz jsme diskutovali a nebylo to
uplne, tak jak tvrdis, napr. v dokumentaci jsem nasel, ze "pipe" funguji v
FB1.0 pouze na linuxu. Dale je zvlastni ze do provedeni tvych uprav bezelo
zalohovani i na Windows 30 min.
Samozrejme nevylucuji, ze jsme neudelali chybu. Jen je zvlastni, ze
zalohovani DB dalsich firem probiha celkem bez problemu a blbne jen ta
tvoje.
Stepan
----- Original Message -----
From: "Slavomir Skopalik" <skopalik(zv)elektlabs(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, October 19, 2004 2:31 PM
Subject: Re: Firebird a GBAK na velkou GDB
> > Pro Slavka - "CZ Strakonice, a.s (Vsude je FB a full backup
> > kazdych 8 hodin.)" . - je pro me prekvapeni, ze tam bezi
> > zalohovani kazdych 8 hodin kdyz jsem sam nastavoval
> > zalohovani jednou denne. Pokud si dobre vzpominam sam jsi
> > tvrdil, ze zalohovani prilis zatezovalo system.
>
> Pardon, bezelo, dokud "nekdo" neprovedl neodborne nastaveni serveru.
> Zalohovani tam ted trva priblizne 2:30 (ano dve hodiny a tricet minut),
> pod linuxem trvalo na historickem 2.2 kernelu a RaiserFS 1.0 cca 30
> minut.
>
> Ted bezi zalohovani jednou denne.
>
> Problem je spatne nastavene diskove pole + spatne nastaveni zalohovani
> (staci behem zalohovani sledovat CPU, dojde totiz k vytreshovani
> vsech diskovych cache, CPU se pohybuje okolo 10 - 25%).
>
> Reseni:
> 1. Vyhrazeny disk pro tempy (mel by byt RAID1)
> 2. Pouziti presmerovani vystupu do vstupu druheho programu (pipe).
> 3. Pouziti aplikacniho serveru na zalohovani
>
> Slavek
>
> Ing. Slavomir Skopalik
> Jednatel spolecnosti
> Elekt Labs s.r.o.
> Chaloupky 158
> 783 72 Velky Tynec
> Czech Republic
> --------------------------------------------
> Mobil: +420 724 207 851
> icq:199 118 333
> e-mail:skopalik(zv)elektlabs(tec)cz
> http://www.elektlabs(tec)cz
>
>
>
Firebird a GBAK na velkou GDB
[*] Slavomir Skopalik <skopalik(zv)elektlabs(tec)cz> - 19.10.2004 14:31:44
> Pro Slavka - "CZ Strakonice, a.s (Vsude je FB a full backup
> kazdych 8 hodin.)" . - je pro me prekvapeni, ze tam bezi
> zalohovani kazdych 8 hodin kdyz jsem sam nastavoval
> zalohovani jednou denne. Pokud si dobre vzpominam sam jsi
> tvrdil, ze zalohovani prilis zatezovalo system.
Pardon, bezelo, dokud "nekdo" neprovedl neodborne nastaveni serveru.
Zalohovani tam ted trva priblizne 2:30 (ano dve hodiny a tricet minut),
pod linuxem trvalo na historickem 2.2 kernelu a RaiserFS 1.0 cca 30
minut.
Ted bezi zalohovani jednou denne.
Problem je spatne nastavene diskove pole + spatne nastaveni zalohovani
(staci behem zalohovani sledovat CPU, dojde totiz k vytreshovani
vsech diskovych cache, CPU se pohybuje okolo 10 - 25%).
Reseni:
1. Vyhrazeny disk pro tempy (mel by byt RAID1)
2. Pouziti presmerovani vystupu do vstupu druheho programu (pipe).
3. Pouziti aplikacniho serveru na zalohovani
Slavek
Ing. Slavomir Skopalik
Jednatel spolecnosti
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
--------------------------------------------
Mobil: +420 724 207 851
icq:199 118 333
e-mail:skopalik(zv)elektlabs(tec)cz
http://www.elektlabs(tec)cz
Vlakna - SYNASER - thread safety?
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 19.10.2004 14:09:41
No a co to udelat tak, ze budes mit ona dve vlakna a dalsi, ktere bude
urcene jen pro komunikaci. Pak staci toto vlakno vytvorit defacto jako
singular a mas po problemu. Samozrejme zachovas synchronizaci pri pristupu k
tomuto vlaknu, ale muzes ji presunout prave na jedno misto a nikoliv ji mit
na mistech dvou...
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Ing. Jiri Sokol
> Sent: Tuesday, October 19, 2004 1:40 PM
>
> No jo, ale kdyz ty vlakna nebezi v kuse - proved akci a uvolni
> se. Je v nich preddefinovana urcita akcea tu potrebuju provadet v
> ruznych intervalech. Ruznych. Jedno je hodne casove narocne, druhe mene.
> Rozhozeni do dvou vlakne bych rad zachoval.
> Muzes mi teda rict, jak narocne na vykon je otevreni a znovu
> zavreni portu? Jedno vlkano jede v intervalech cca co 2s a druhe
> podle nastaveni v ini. Mam zabezpecene, ze nedochazi ke kolizi.
> Jede-li jedno, nejede druhe. Pokud jede jedno a melo by jiz jet
> druhe, bude spusteno okamzite az dojedo to prvni.
> Mohl bych to treba resit soustavnym oteviranim a zaviranim portu?
> Co si o tom myslite?
Vlakna - SYNASER - thread safety?
[*] Ing. Jiri Sokol <js-delphi(zv)email(tec)cz> - 19.10.2004 13:39:39
> Od: Lukas Gebauer <gebylist(zv)mlp(tec)cz>
> Datum: 19.10.2004 12:25:09
> No fuj, podobnermu pouzivani se opravdu vyhni. Spravne reseni je mit
> jeden thread, k Synaseru pristupova vyhradne z toho jednoho threadu.
> Tedy i vytvareni a likvidace objektu Synaseru delej zase v ramci toho
> jednoho threadu. Z ostatnuich mist programu uz pak jensignalizuj tomu
> komunikacnimuthreadu, co chces aby delal, stejne tak si nech
> signalizovat zpet, ze pozadovana operace uz probehla.
>
> --
> Lukas Gebauer.
Ahoj.
No jo, ale kdyz ty vlakna nebezi v kuse - proved akci a uvolni se. Je v nich preddefinovana urcita akcea tu potrebuju provadet v ruznych intervalech. Ruznych. Jedno je hodne casove narocne, druhe mene.
Rozhozeni do dvou vlakne bych rad zachoval.
Muzes mi teda rict, jak narocne na vykon je otevreni a znovu zavreni portu? Jedno vlkano jede v intervalech cca co 2s a druhe podle nastaveni v ini. Mam zabezpecene, ze nedochazi ke kolizi. Jede-li jedno, nejede druhe. Pokud jede jedno a melo by jiz jet druhe, bude spusteno okamzite az dojedo to prvni.
Mohl bych to treba resit soustavnym oteviranim a zaviranim portu? Co si o tom myslite?
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol(zv)seznam(tec)cz; 972 231 187
D6Prof+SP3; WinXPProf+SP1; FB 1.5.1
programator amater
Jak na oznaceni textu v Editu
[*] Marian Nykel <m.any(zv)centrum(tec)cz> - 19.10.2004 13:39:39
Edit.SelectAll
--
mANY
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] Ing. Jiri Sokol <js-delphi(zv)email(tec)cz> - 19.10.2004 13:33:38
> Od: Petr Fejfar <development(zv)callnet(tec)cz>
> Datum: 19.10.2004 11:53:22
>
> Ing. Jiri Sokol wrote:
>
> > Vlakno.Create; (mam vlastni constructor), ale v nem to zhuci na
> > vyjimku.
>
> A to je problem zjistit trasovanim popr. logovanim,
> co se tam deje a kde a na jakou vyjimku to spadne?
>
> pf
>
Ahoj.
Mam to vyzkouseno, ze se ta chyba 100% projevi - vem si ten priklad, kterym jsi mi vysvetloval to workflow vlaken, misto semaphoru jsem dal event. Pak do procedure TExclusiveThread._RequestExecute dej PostMessage(From1.Handle, wm_user+10, self.ThreadID, 255);
V tele Form jedna jsem si dal jeden button, ktery mi udela:
Vlakno - globalni prommena TExclusiveThread
Vlakno:=TExclusiveThread.Create; (omlouvam se, ze jsem to v tech predchozich pripevcich zvrtal, byl to jenom preklep - vytvarim ho proste takhle)
Vlakno.Resume;
Sleep(700);//jen aby nekdo nepojal podezreni, ze to je moc rychle ;o)
a konec
Ted mam vlkano, ktere jsem vytvoril, ktere se spustilo prave jednou probehlo pres _Body a pres _RequestExecute a teda poslalo zpravu form1 a ted je ve stavu klidu a ceka na zavolani udalosti.
ve form1 mam
type form1 = class (TFrom)
...
public
procedure VlaknoMes(var Mes: TMessage); message wm_user+10;
...
end;
procedure TForm1.VlaknoMes(var Mes: TMessage);
begin
if (Vlakno<>nil)and(Mes.WParam = Vlakno.ThreadID) then
begin
if Mes.LParam = 255 then
begin
Vlakno.Kill(INFINITE);
FreeAndNil(Vlakno);
Vlakno:=TExclusiveThread.Create; //<--- tohle se nikdy neprovede
//zkousel jsem i tohle:
// if Vlkano = nil then Vlakno:=TExclusiveThread.Create; //vysledek je stejny :(
end;
end;
end;
Pak to vzdycky konci tridu chyby EAccessViolation, chyba AccessViolation neco s pameti na adrese... zhuci to pri vytvareni toho vlkana:
constructor TExclusive.Create;
begin
inherited Create(TRUE); //<--- presne tady
...
end;
Tak kde je zakopany pes?
Diky
JIrka
Firebird a GBAK na velkou GDB
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 19.10.2004 13:33:38
Haj hou!
On 19 Oct 2004 at 12:47, Winsoft wrote:
> > Uvedeny priklad bude pravdivy pouze pokud T1 bude v rezimu NOWAIT
> > (implicitni je ovsem WAIT), a ani jedna z obou transakci nebude v
> > izolaci Snapshot table stability, pripadne nebude vyuzivat rezervace
> > tabulek pro danou tabulku (pak muze byt i v jine urovni izolace). Pri
> > jinem nastaveni parametru bude chovani odlisne.
>
> no skus mi vysvetlit, v com bude vyhoda ak T1 namiesto rollback
> bude cakat. To len este zhorsi situaciu.
Protoze velmi casta reakce aplikace na selhani transakce je opakovani
operace v nove transakci, muze cekani na konec T2 situaci naopak
zlepsit, protoze nemuze dojit k fenomenu zvanemu "live lock". Frontu
pozadavku na zdroj v tomto pripade ridi server, ktery ma o situaci
nejvetsi prehled, nikoliv aplikace ktera vi o situaci "na bojisti"
velky kulovy.
> T1 bude zbytocne cakat, jednoducho nemoze prepisat uz prepisany zaznam
> ani po skonceni T2 nech by cakal akokolvek dlho.
Nebude zbytecne cekat, pokud T2 nebude potvrzena, ale skonci
rollbackem. Pak muze klidne svou zmenu zapsat. Ty jsi sice v prikladu
rozhodl ze T2 skonci commitem, a T1 tedy musi obdrzet chybu, ale v
dobe detekce kolize jeste o vysledku T2 neni rozhodnuto, a cekani by
tedy mohlo mit smysl. A i v pripade neuspechu cekani se muze
vyplatit, viz vyse o live locku.
> > Podivejme se ted na stejny priklad, ale z pohledu systemu se zamky a
> > logem. On je totiz aplikovatelny i na tento system :-) Zapis radku v
> > T2 totiz na radek uvali zamek, a T1 jej tedy nemuze prepsat (a v jine
> > izolaci nez Read Uncommitted, cili Dirty Read dokonce ani cist, coz
> > by s MGA mohla), a pokud bude v rezimu NOWAIT vyhuci naprosto stejne
> > jako v uvedenem prikladu. Pokud bude v rezimu WAIT, pak ma rovnez
> > sanci skoncit s chybou, a to naprosto stejnou jako u systemu s MGA.
> > Predpokladejme, ze skonci s chybou (z prikladu neni az tak patrna
> > casova souslednost, ale po commitu T2 musi T1 skoncit s chybou).
>
> Lenze T1 moze normalne komitnut po T2 presne ako som to uviedol.
> A v MGA nemoze. Takze zbytocne sa vyhovarat, v tomto pripade
> je to jednoducho tak. Mozes to hoci aj vedecky dokazat alebo vyvratit.
ROFL
> > Eriku, opravdu myslis uvedeny priklad vazne ? Jeste jsem nevidel
> > viceuzivatelsky (ale ani jiny) system, kde by cteni dat v jedne
> > transakci znemoznovalo cist stejna data v jine transakci. Pokud jsi
> > vyseuvedeny priklad myslel smrtelne vazne a seriozne, pak jsi
> > prokazal elementarni neznalost problematiky transakci, a rizeni
> > pristupu k sdilenym zdrojum v databazovych (ale i jinych) systemech.
>
> takze jedina spravna a univerzalna uroven je zrejme ten snaphot
> a tomu treba vsetko dopasovat. A tam, kde to nevelmi pasuje
> radsej napadame protivnika z naznalosti elementarnej problematiky.
Tohle preci s urovni izolace nema vubec nic spolecneho, dokonce ani
specificky s databazemi. Proc radsi jako chlap nepriznas, ze jsi
placnul naprosty blabol ? A postavit priklad (natoz pak dukazni) na
naprosto nesmyslnem premise ze cteni by melo blokovat jine cteni neni
nic jineho nez blabol, at uz se na to podivas z kterekoliv strany.
> > > Zbehli obidve transakcie, jedna z nich ale cakala, kym sa uvolni
> > > zamok. Ziadne smetie nevzniklo, v trans. logu su zmeny, ktore boli aj
> > > komitnute.
> >
> > Protoze je uvedeny priklad naprosto nesmyslny, nema smysl rozebirat
> > zavery ktere z neho vyvozujes.
>
> lebo nam nepasuje, tak sa mu vyhnime. Este k tomu napis, ze je to
> vedecky dokazane, ze je to naprosto nezmyselny a vec je pre Teba
> zrejme vybavena. Prepac, ale ja to nemozem inak komentovat a tato
> diskusia tak uplne stratila akykolvek vyznam.
Pro me osobne diskuze s tebou stratily vyznam uz davno :-) A pentli
si tu cancam spis kvuli intelektualnimu cviceni ve formulaci
argumentu a kvuli ostatnim v konferenci, nez kvuli tobe.
Nicmene pokud predlozis nejakou dukazni konstrukci na prikladu se
zamky, ktera nebude postavena na nesmyslne premise ze cteni blokuje
jine cteni, muzeme v ni nadale pokracovat.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
Chyba pri pouziti JCL debugeru
[*] Petr Vones <konference(zv)petrvones(tec)net> - 19.10.2004 13:13:36
From: "Josef Zvonicek" <prosoft(zv)prosoft(tec)cz>
> JCL debug data tak pri prekladu programu se mi objevi okno JCL debug data
> information a v nem Linker bug DirectShow9. Nevim co je spatne s timto
> unitem. Pomuze mi nekdo?
To je chyba linkeru pri generovani TD32 symbolu. Vicemene to muzes ignorovat,
nanejvys se ti zobrazi nespravna informace o mistu ve zdrojaku v pripade, ze
bude nejaka adresa na stacku nalezet prave tomuto unitu.
Petr Vones
Jak na oznaceni textu v Editu
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 19.10.2004 13:17:37
> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Ing. Radek Tomsik
>
> Ahoj,
Ahoj,
> Morim se tu s programovym oznacenim textu v Editu. Kdysi jsem
> to uz psal
EditX.SelStart...EditX.SelLength....
S pozdravem a dikem
=====================================
> Pavel Malinsky; malinsky(zv)pmcom(tec)cz <
=====================================
> GSM: 602 652 203 | ICQ: 322015967 <
=====================================
Jak na oznaceni textu v Editu
[*] Ing. Radek Tomsik <radek(zv)tomsige(tec)cz> - 19.10.2004 13:07:36
Ahoj,
Morim se tu s programovym oznacenim textu v Editu. Kdysi jsem to uz psal
a chodilo to, ale ted uz si nevzpominam jak na to :O(
Myslel jsem, ze by mohlo fungovat SendMessage(Edit.Handle, EM_SETSET, 0,
-1) ale nedela to nic :O(
Diky za rady
Radek
Firebird a GBAK na velkou GDB
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 19.10.2004 13:05:35
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Winsoft
> Sent: Tuesday, October 19, 2004 12:48 PM
>
> > Podivejme se ted na stejny priklad, ale z pohledu systemu se zamky a
> > logem. On je totiz aplikovatelny i na tento system :-) Zapis radku v
> > T2 totiz na radek uvali zamek, a T1 jej tedy nemuze prepsat (a v jine
> > izolaci nez Read Uncommitted, cili Dirty Read dokonce ani cist, coz
> > by s MGA mohla), a pokud bude v rezimu NOWAIT vyhuci naprosto stejne
> > jako v uvedenem prikladu. Pokud bude v rezimu WAIT, pak ma rovnez
> > sanci skoncit s chybou, a to naprosto stejnou jako u systemu s MGA.
> > Predpokladejme, ze skonci s chybou (z prikladu neni az tak patrna
> > casova souslednost, ale po commitu T2 musi T1 skoncit s chybou).
>
> Lenze T1 moze normalne komitnut po T2 presne ako som to uviedol.
> A v MGA nemoze. Takze zbytocne sa vyhovarat, v tomto pripade
> je to jednoducho tak. Mozes to hoci aj vedecky dokazat alebo vyvratit.
Osobne si myslim, ze se commit povest NESMI. Uz jen z jednoho prosteho
duvodu - data by se mohla stat nekonzistentnimi, protoze v dobe zahajeni
transakce bylo vse jinak a soucasny stav se od vychoziho stavu odlisuje a
muze byt tedy ovlivnena i relevantnost takove transakce. A v tu chvili se
Tve argumenty stavaji irelevantnimi.
> > Eriku, opravdu myslis uvedeny priklad vazne ? Jeste jsem nevidel
> > viceuzivatelsky (ale ani jiny) system, kde by cteni dat v jedne
> > transakci znemoznovalo cist stejna data v jine transakci. Pokud jsi
> > vyseuvedeny priklad myslel smrtelne vazne a seriozne, pak jsi
> > prokazal elementarni neznalost problematiky transakci, a rizeni
> > pristupu k sdilenym zdrojum v databazovych (ale i jinych) systemech.
>
> takze jedina spravna a univerzalna uroven je zrejme ten snaphot
> a tomu treba vsetko dopasovat. A tam, kde to nevelmi pasuje
> radsej napadame protivnika z naznalosti elementarnej problematiky.
Ale to preci neni o Snapshot transakci. Tohle je o Read commited a i v tuto
chvili to proste nejde ani precist. A to je neco co ja proste nehodlam
prekousnout. A spokojit se s Dirty read ??? NIKDY - konzistence dat je pro
me az prilis dulezita. Snapshot je o necem naprosto jinem nez je Read
commited a uz uplne neco jineho nez o cem pises Ty.
>
> > > Zbehli obidve transakcie, jedna z nich ale cakala, kym sa uvolni
> > > zamok. Ziadne smetie nevzniklo, v trans. logu su zmeny, ktore boli aj
> > > komitnute.
> >
> > Protoze je uvedeny priklad naprosto nesmyslny, nema smysl rozebirat
> > zavery ktere z neho vyvozujes.
>
> lebo nam nepasuje, tak sa mu vyhnime. Este k tomu napis, ze je to
> vedecky dokazane, ze je to naprosto nezmyselny a vec je pre Teba
> zrejme vybavena. Prepac, ale ja to nemozem inak komentovat a tato
> diskusia tak uplne stratila akykolvek vyznam.
A proc Ty tedy argumenty nedokazes relevantnost Tebou uvedeneho prikladu. Ja
jej totiz taky s odstupem casu povazuji za v praxi naprosto nepouzitelny a
tudiz irelevantni.
S pozdravem
Milan Tomes
Vlakna - zobrazeni informaci uzivateli na jeden fo
[*] delphin(zv)post(tec)cz - 19.10.2004 12:53:34
> V pripade kdy dotycna zprava nedojde, tak samozrejme nedojde k uvolneni
> alokovane pameti. Vim, ze v pripade ukonceni aplikace dojde i k uvolneni
> veskere pameti procesu, kde byla dotycna pamet alokovana, ale preci jen se
> mi to vubec nelibi... Jakym zpusobem lze tedy predavat dynamicky alokovane
> parametry a korektne je uvolnovat ???
V takovem pripade je nutne parametry nekde udrzovat. Resenim je napriklad
predavat je pres TThreadList a hlavnimu vlaknu pote posilat univerzalni
zpravu a pripravenosti konkretni zpravy v TThreadListu. Pri ukonceni
aplikace neni pote problem nevyrizene zpravy korektne uvolnit.
Firebird a GBAK na velkou GDB
[*] Winsoft <winsoft(zv)netkosice.sk> - 19.10.2004 12:47:33
> > 1. Optimisticke zamykanie (MGA)
> >
> > Transakcia1 Transakcia2
> >
> > precita 'Erik' precita 'Erik'
> > nieco robi zapise 'Patrik' (ako novu generaciu)
> > nieco robi nieco robi
> > nemoze zapisat 'Fero' nieco robi
> > rollback commit
>
> Tento priklad je sice po formalni strance vporadku, nicmene postrada
> vyznamny udaj: v jake urovni izolace obe transakce pracuji, a jake
> maji dalsi parametry.
myslim, ze sa tu uz dost dlho o tom bavime a vysvetlujeme ako co
kedy sa robi, aby bolo kazdemu jasne o aku uroven izolacie ide.
Nevyhovaraj sa prosim, ale ries problem a hovor k veci.
> Uvedeny priklad bude pravdivy pouze pokud T1 bude v rezimu NOWAIT
> (implicitni je ovsem WAIT), a ani jedna z obou transakci nebude v
> izolaci Snapshot table stability, pripadne nebude vyuzivat rezervace
> tabulek pro danou tabulku (pak muze byt i v jine urovni izolace). Pri
> jinem nastaveni parametru bude chovani odlisne.
no skus mi vysvetlit, v com bude vyhoda ak T1 namiesto rollback
bude cakat. To len este zhorsi situaciu. T1 bude zbytocne cakat,
jednoducho nemoze prepisat uz prepisany zaznam ani po skonceni
T2 nech by cakal akokolvek dlho.
> Pominme pravzlastni logiku tvrzeni, ze (cituji): "Cize Transakcia1
> bezala a zatazovala system zbytocne a okrem mozneho smetia,
> zatazenia systemu a sposobenia novej generacie zaznamu 'Patrik'
> nic nevyriesila.". Toto tvrzeni lze totiz aplikovat na jakoukoliv
> transakci ktera z nejakeho duvodu skoncila rollbackem, a to bez
> ohledu na architekturu transakci. Venujme se tedy zbytku tvrzeni
> ktere se tyka "smeti" vytvorenemu v T1.
ta logika je v tom, ze v jednom z tych systemov v rovnakom priklade
ta transakcia zbehla a nebola zbytocna. Takze to je IMHO rozdiel.
> Podivejme se ted na stejny priklad, ale z pohledu systemu se zamky a
> logem. On je totiz aplikovatelny i na tento system :-) Zapis radku v
> T2 totiz na radek uvali zamek, a T1 jej tedy nemuze prepsat (a v jine
> izolaci nez Read Uncommitted, cili Dirty Read dokonce ani cist, coz
> by s MGA mohla), a pokud bude v rezimu NOWAIT vyhuci naprosto stejne
> jako v uvedenem prikladu. Pokud bude v rezimu WAIT, pak ma rovnez
> sanci skoncit s chybou, a to naprosto stejnou jako u systemu s MGA.
> Predpokladejme, ze skonci s chybou (z prikladu neni az tak patrna
> casova souslednost, ale po commitu T2 musi T1 skoncit s chybou).
Lenze T1 moze normalne komitnut po T2 presne ako som to uviedol.
A v MGA nemoze. Takze zbytocne sa vyhovarat, v tomto pripade
je to jednoducho tak. Mozes to hoci aj vedecky dokazat alebo vyvratit.
> Eriku, opravdu myslis uvedeny priklad vazne ? Jeste jsem nevidel
> viceuzivatelsky (ale ani jiny) system, kde by cteni dat v jedne
> transakci znemoznovalo cist stejna data v jine transakci. Pokud jsi
> vyseuvedeny priklad myslel smrtelne vazne a seriozne, pak jsi
> prokazal elementarni neznalost problematiky transakci, a rizeni
> pristupu k sdilenym zdrojum v databazovych (ale i jinych) systemech.
takze jedina spravna a univerzalna uroven je zrejme ten snaphot
a tomu treba vsetko dopasovat. A tam, kde to nevelmi pasuje
radsej napadame protivnika z naznalosti elementarnej problematiky.
> > Zbehli obidve transakcie, jedna z nich ale cakala, kym sa uvolni
> > zamok. Ziadne smetie nevzniklo, v trans. logu su zmeny, ktore boli aj
> > komitnute.
>
> Protoze je uvedeny priklad naprosto nesmyslny, nema smysl rozebirat
> zavery ktere z neho vyvozujes.
lebo nam nepasuje, tak sa mu vyhnime. Este k tomu napis, ze je to
vedecky dokazane, ze je to naprosto nezmyselny a vec je pre Teba
zrejme vybavena. Prepac, ale ja to nemozem inak komentovat a tato
diskusia tak uplne stratila akykolvek vyznam.
Erik
Vlakna - zobrazeni informaci uzivateli na jeden fo
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 19.10.2004 12:27:31
Dobre jak tedy provest korektni dealokaci v tomto pripade:
procedure TG3UDPServer.Execute;
var
Sock: TUDPBlockSocket;
Buf: string;
DBConnection: TDBConnection;
Buf_1: string;
Ptr: Pointer;
begin
SetName;
if Assigned(FDBConnection) then
DBConnection := TDBConnection(FDBConnection)
else
DBConnection := nil;
Sock := TUDPBlockSocket.Create;
try
Sock.Bind(cAnyHost, IntToStr(FPort));
if Sock.LastError <> 0 then
exit;
while True do
begin
if Terminated then
break;
Buf := sock.RecvTerminated(1000, cmd_Terminator) + cmd_Terminator;
if Sock.LastError = 0 then
begin
if Buf = cmd_GetIP then
begin
Sock.SendString(cmd_GetIP_Response);
end;
if Buf = cmd_AppParamsChanged then
PostMessage(Application.MainForm.Handle, WM_PARAMSCHANGED, 0, 0);
if copy(Buf, 1, Length(cmd_FunctionParamsChanged)) =
cmd_FunctionParamsChanged then
begin
if Length(Buf) = Length(cmd_FunctionParamsChanged) +
Length(cmd_Terminator) then
PostMessage(Application.MainForm.Handle, WM_PARAMSCHANGED,
1, -1)
else
PostMessage(Application.MainForm.Handle, WM_PARAMSCHANGED, 1,
StrToInt(copy(Buf, Length(cmd_FunctionParamsChanged) + 2, Length(Buf) -
Length(cmd_FunctionParamsChanged) - 2)));
end;
if Buf = cmd_ShutDownApp then
PostMessage(Application.MainForm.Handle, WM_CLOSE, 1, 0);
if copy(Buf, 1, Length(cmd_AdminMessage)) = cmd_AdminMessage then
begin
Buf_1 := copy(Buf, Length(cmd_AdminMessage) + 2, Length(Buf) -
Length(cmd_AdminMessage) - 2);
GetMem(Ptr, Length(Buf_1) + 1);
StrPCopy(PChar(Ptr), Buf_1);
PostMessage(Application.MainForm.Handle, WM_ADMINMESSAGE,
Longint(Ptr), 0);
end;
if copy(Buf, 1, Length(cmd_UserMessage)) = cmd_UserMessage then
begin
Buf_1 := copy(Buf, Length(cmd_UserMessage) + 2, Length(Buf) -
Length(cmd_UserMessage) - 2);
GetMem(Ptr, Length(Buf_1) + 1);
StrPCopy(PChar(Ptr), Buf_1);
PostMessage(Application.MainForm.Handle, WM_USERMESSAGE,
Longint(Ptr), 0);
end;
end;
Sleep(1);
end;
Sock.CloseSocket;
finally
freeAndNil(Sock);
end;
end;
Jedna se o vlakno, ktere ma otevreny konkretni UDP port pro prichozi
pozadavky. Na nektere pozadavky posila v ramci daneho spojeni odpoved a na
nektere ne - jen zasle zpravu hlavnimu oknu aplikace zpravu.
Toto okno ji zpracuje nasledovne:
procedure TG3WMainForm.WndProc(var Message: TMessage);
var
P: PChar;
i: integer;
begin
if (Message.Msg = WM_CLOSE) and (Message.WParam = 1) then
Application.Terminate;
if Message.Msg = WM_PARAMSCHANGED then
begin
case Message.WParam of
0: Gor3WinApp.Params.LoadParams([ptApp]);
1: Gor3WinApp.Params.LoadParams([ptFunction]);
end;
for i := 0 to Pred(Screen.FormCount) do
if (Screen.Forms[i] <> self) and (Screen.Forms[i] is TG3WForm) then
SendMessage(Screen.Forms[i].Handle, WM_PARAMSCHANGED,
Message.wParam, Message.lParam);
end;
if Message.Msg = WM_ADMINMESSAGE then
begin
P := StrNew(PChar(Message.wParam));
try
FreeMem(Pointer(Message.wParam), Length(P) + 1);
if IsIconic(Application.Handle) then
FlashWindow(Application.Handle, true);
Application.MessageBox(PChar(HexStrToStr(P)), 'Zprava administratora',
MB_OK + MB_ICONINFORMATION);
finally
StrDispose(P);
end;
end;
if Message.Msg = WM_USERMESSAGE then
begin
P := StrNew(PChar(Message.wParam));
try
FreeMem(Pointer(Message.wParam), Length(P) + 1);
UserMessage(HexStrToStr(P));
finally
StrDispose(P);
end;
end;
inherited;
end;
V pripade kdy dotycna zprava nedojde, tak samozrejme nedojde k uvolneni
alokovane pameti. Vim, ze v pripade ukonceni aplikace dojde i k uvolneni
veskere pameti procesu, kde byla dotycna pamet alokovana, ale preci jen se
mi to vubec nelibi... Jakym zpusobem lze tedy predavat dynamicky alokovane
parametry a korektne je uvolnovat ???
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of delphin(zv)post(tec)cz
> Sent: Tuesday, October 19, 2004 12:16 PM
>
> > Ted jsem si uvedomil, ze to vlastne take tak delam a jako parametr
> predavam
> > pointer na dynamicky alokovany buffer se stringem. A tak bych se ted rad
> > zeptal ja:
> > 1. Muze se stat, ze zprava neni zpracovana ???
> > 2. Pokud ano, tak za jakych podminek ???
> > 3. Pokud ano, tak kde mam zajistit korektni dealokaci pameti ???
>
> Zpravy jsou zpracovavany dokud existuje prislusny formular a neni ukoncena
> aplikace. Po ukonceni aplikace mohou nektere zpravy zustat nevyrizeny.
Vlakna - zobrazeni informaci uzivateli na jeden fo
[*] delphin(zv)post(tec)cz - 19.10.2004 12:15:30
> Ted jsem si uvedomil, ze to vlastne take tak delam a jako parametr
predavam
> pointer na dynamicky alokovany buffer se stringem. A tak bych se ted rad
> zeptal ja:
> 1. Muze se stat, ze zprava neni zpracovana ???
> 2. Pokud ano, tak za jakych podminek ???
> 3. Pokud ano, tak kde mam zajistit korektni dealokaci pameti ???
Zpravy jsou zpracovavany dokud existuje prislusny formular a neni ukoncena
aplikace. Po ukonceni aplikace mohou nektere zpravy zustat nevyrizeny.
Firebird a GBAK na velkou GDB
[*] Pavel Cisar <pcb(zv)atlas(tec)cz> - 19.10.2004 12:05:30
Haj hou!
On 18 Oct 2004 at 22:56, Winsoft wrote:
> tak teda uvediem jednoduchy priklad, kedy sa nevyhoda MGA
> z hladiska mozneho generovania zbytocneho smetia prejavi:
Ok, podivejme se tedy na ne.
> Uvazujme tabulku, v ktorej je zaznam s polozkou Erik a dve
> transakcie, ktore tu polozku budu citat aj zapisovat. Transakcie
> su uvedene vedla seba, ako bezia (T1 bola spustena trocha skor
> ako T2):
>
> 1. Optimisticke zamykanie (MGA)
>
> Transakcia1 Transakcia2
>
> precita 'Erik' precita 'Erik'
> nieco robi zapise 'Patrik' (ako novu generaciu)
> nieco robi nieco robi
> nemoze zapisat 'Fero' nieco robi
> rollback commit
Tento priklad je sice po formalni strance vporadku, nicmene postrada
vyznamny udaj: v jake urovni izolace obe transakce pracuji, a jake
maji dalsi parametry.
Uvedeny priklad bude pravdivy pouze pokud T1 bude v rezimu NOWAIT
(implicitni je ovsem WAIT), a ani jedna z obou transakci nebude v
izolaci Snapshot table stability, pripadne nebude vyuzivat rezervace
tabulek pro danou tabulku (pak muze byt i v jine urovni izolace). Pri
jinem nastaveni parametru bude chovani odlisne.
> Teda Transakcia2 zbehla ale Transkacia1 nie. To znamena,
> ze ak Transakcia1 vytvorila nejake nove generacie zaznamov
> (v ramci tych operacii "nieco robi"), tak to bolo zbytocne a
> tie zaznamy su nanic a teda vzniklo smetie. Cize Transakcia1
> bezala a zatazovala system zbytocne a okrem mozneho smetia,
> zatazenia systemu a sposobenia novej generacie zaznamu 'Patrik'
> nic nevyriesila.
Pominme pravzlastni logiku tvrzeni, ze (cituji): "Cize Transakcia1
bezala a zatazovala system zbytocne a okrem mozneho smetia,
zatazenia systemu a sposobenia novej generacie zaznamu 'Patrik'
nic nevyriesila.". Toto tvrzeni lze totiz aplikovat na jakoukoliv
transakci ktera z nejakeho duvodu skoncila rollbackem, a to bez
ohledu na architekturu transakci. Venujme se tedy zbytku tvrzeni
ktere se tyka "smeti" vytvorenemu v T1.
Mas pravdu jen castecne. Mas pravdu v tom, ze verze radku vytvorene
T1 jsou po jejim rollbacku jiz zbytecne.Jenze ty porad vnimas dany
problem pouze z uzkeho hlediska situace vznikle po rollbacku T1. Pred
timto okamzikem *nejsou* verze vytvorene touto transakci zbytecne,
ale primo nezbytne. Rovnez nemas pravdu v pripade zbytecneho
zatezovani systemu z duvodu zbytecneho vytvareni verzi radku.
Puvodni hodnota radku *musi* byt nekde uchovana, bud primo v databazi
jako u MGA, nebo v transakcnim logu. Ty vnimas vytvoreni nove verze
radku jako neco specifickeho pro MGA, ale neni to pravda. I system s
logem zapisuje primo do databaze *novou verzi radku*. Rozdil je v
tom, co se deje s *puvodni verzi radku*. U MGA zustava v databazi, u
systemu s logem skonci v logu. Mnozstvi prace a dat zpracovane pri
zapisu je tedy u MGA a systemu s logem v podstate stejne. Jediny
rozdil je v tom, ze po rollbacku je u MGA zbytecna novejsi verze, a
po commitu naopak starsi verze. U systemu s logem se jedna vzdy pouze
o puvodni hodnotu radku (je v logu), a ta se rovnez stava zbytecnou,
a to jak po rollbacku, tak i po commitu. Po rollbacku je navic nutne
obnovit hodnotu radku v databazi. Dle tve logiky (viz citace vyse) by
se tedy rovnez dalo prohlasit, ze jedna z transakci vygenerovala data
zbytecne, a to bez ohledu na architekturu. Nicmene to ani v jednom
pripade nebyla zbytecna prace, protoze se ji proste uz z podstaty
transakci vyhnout neda.
Podivejme se ted na stejny priklad, ale z pohledu systemu se zamky a
logem. On je totiz aplikovatelny i na tento system :-) Zapis radku v
T2 totiz na radek uvali zamek, a T1 jej tedy nemuze prepsat (a v jine
izolaci nez Read Uncommitted, cili Dirty Read dokonce ani cist, coz
by s MGA mohla), a pokud bude v rezimu NOWAIT vyhuci naprosto stejne
jako v uvedenem prikladu. Pokud bude v rezimu WAIT, pak ma rovnez
sanci skoncit s chybou, a to naprosto stejnou jako u systemu s MGA.
Predpokladejme, ze skonci s chybou (z prikladu neni az tak patrna
casova souslednost, ale po commitu T2 musi T1 skoncit s chybou).
Pri rollbacku T1 je nutne projit transakcni log, a obnovit puvodni
hodnoty radku ktere T1 zmenila (predpokladam, ze neco zmenila. Ty
pises ze pred kolizi "nieco robi", coz muze byt i pouhe cteni,
nicmene z dalsiho textu se da usuzovat ze neco menila). U MGA se nic
takoveho nedeje. Rozdil mezi nulovou praci (u MGA) a nejakou praci
(obnova z logu) mi vychazi jednoznacne ve prospech MGA. Pokud tedy T1
zbytecne mari nejake zdroje, pak je to u systemu s transakcnim logem
(opet pripominam, ze praci spojene s uchovanim puvodni hodnoty radku
se vyhnout neda za zadnych okolnosti).
> 2. Pesimisticke zamykanie so zamkami
>
> Transakcia1 Transakcia2
>
> precita 'Erik' nemoze precitat (zamknute), tak caka
> nieco robi caka
> nieco robi caka
> zapise 'Fero' caka
> nieco robi caka
> commit odomknute, precita 'Fero'
> zapise 'Patrik'
> nieco robi
> nieco robi
> commit
Eriku, opravdu myslis uvedeny priklad vazne ? Jeste jsem nevidel
viceuzivatelsky (ale ani jiny) system, kde by cteni dat v jedne
transakci znemoznovalo cist stejna data v jine transakci. Pokud jsi
vyseuvedeny priklad myslel smrtelne vazne a seriozne, pak jsi
prokazal elementarni neznalost problematiky transakci, a rizeni
pristupu k sdilenym zdrojum v databazovych (ale i jinych) systemech.
> Zbehli obidve transakcie, jedna z nich ale cakala, kym sa uvolni
> zamok. Ziadne smetie nevzniklo, v trans. logu su zmeny, ktore boli aj
> komitnute.
Protoze je uvedeny priklad naprosto nesmyslny, nema smysl rozebirat
zavery ktere z neho vyvozujes.
> cize ak som to dobre pochopil, index obsahuje odkazy na rozne
> generacie zaznamov a dodatocne je potrebne overit, ci ten zaznam
> vybrany indexom je z tej mojej transakcie.
Tohle jsem vysvetloval uz v jinem mailu. Ve zkratce: Ne (nikoliv na
rizne verze, ale na cely retez) a Ano (relevanci nutno overit z dat
radku).
> Tu je potom este otazka, ci sa nieco robi s indexom vtedy, ked
> transakcia zbehne, resp. ked nezbehne. Teda ci sa ten index aktualizuje
> (napr. po zbehnuti transakcie sa mozu IMHO v indexe zrusit odkazy na
> stare generacie zaznamov, ktore boli transakciou prepisane). alebo sa
> ponechava ako je a upratovanie indexov sa robi dodatocne cez ten sweep
> (dufam, ze tak sa to v IB vola) alebo priebeznym upratovanim.
V ramci transakce (resp. jejiho ukonceni) se pokud vim s indexem
nedeje nic (bude obsahovat jiz neplatny uzel). Struktura indexu se
urcite cisti pri sweepu, a za urcitych okolnosti i pri GC, ale na
podrobnosti si ted nevzpomenu.
> lenze falosna kolizia ak sa zamok zisti vcas, nema iny dopad
> ako pozdrzanie transakcie. Cize nemusi to byt vzdy nevyhodne.
To mi prijde naopak jako velmi nevyhodne. Falesna kolize je falesna
kolize, k tem by vubec nikdy nemelo dojit.
> V MDA je paralelizmus vecsi, ale zas to nemusi byt vzdy vyhodne. V
> priklade, co som uviedol, nebola ziadna vyhoda paralelizmu, prave
> naopak.
Priklad byl nesmyslny. Z nesmyslnych predpokladu se jen malokdy daji
vytvorit smysluplne zavery.
> U MDA mam taky nedobry pesimisticky pocit, ze ked tam ten optimizmus
> nevyjde, tak sa situacia zacne zhorsovat (pribuda smetie, vznikaju
> generacie zaznamov, strata vykonu pocitaca v dosledku nezbehnutia
> transakcie).
1. Osobni pocity nemaji nic spolecneho s objektivni realitou.
2. Smeti, tedy jiz bytecne verze radku vznikaji s kazdym koncem
transakce, bez ohledu zda jde o rollback nebo commit. MGA ma
mechanizmy, jak se jich zbavovat a udrzet jejich mnozstvi na uzde
(pokud ovsem vyvojar nenasadi vsechny paky aby ji praci stizil nebo
znemoznil).
> uz si sa v praxi stretol s pripadom, ked po zvecseni RAMky
> doslo v dosledku zvysenej rezie spravy pamete k znizeniu vykonu
> pocitaca a bolo potrebne RAMku zmensit? Ja este nie.
> Pomer pristupovej doby disku a RAM-ky je asi milion, takze
> to by musela byt poriadne komplikovana a neefektivna
> sprava pameti aby sa nevyplatila. V praxi su skor ine problemy,
> ze ta RAMka nieco stoji.
K tomuhle jsem se vyjadril v jinem mailu.
S pozdravem
Pavel Cisar (ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix(tec)cz
Vse co potrebujete pro Firebird a InterBase
Firebird a GBAK na velkou GDB
[*] Petr Fejfar <development(zv)callnet(tec)cz> - 19.10.2004 11:59:29
Pavel Cisar wrote:
> O tom jsem uz preci psal ja. Vubec totiz nejde o pristupovou dobu do
> cache jak to vidi Erik, ale o uspesnost vyuziti cache, tedy zda jsou
> data ctena z cache misto z disku. Zvetseni velikosti cache
> automaticky neznamena zvyseni uspesnosti jejiho vyuziti
Mimo spekulativni pripady pravdepodobnost, ze se data budou cist z cache
misto z disku urcite s velikosti cache poroste - ostatne jak sam pises,
v pripade, ze se cela DB vejde do cache, dosahnes jistoty :-)
Jina otazka je samozrejme o kolik. Proto si myslim, ze pomer pristupovych
dob je *urcujicim* kriteriem, mj. to jsou zmeritelne veliciny, zatimco
ostatni vlastnosti jak se o nich zminujes jsou z kategorie heuristik,
odhadu a predpokladu.> Optimalni velikost cache je ruzna ....
Ano, ale optimum prece neznamena, ze se efektivita cache nezvysuje
spolu s velikosti pameti. Jen se to nad nejakou mez nevyplati popr. je to
nerealizovatelne.
pf
Vlakna - SYNASER - thread safety?
[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 19.10.2004 11:57:29
> Jeste dotaz k synaseru, jestli nedelam neco spatne. Omlouvam za tolik
> dotazu, ale zacina mi zlobit aplikace a ja si uz nevim rady. Dekuji za
> pochopeni a Vase rady. Hlavni vlakno aplikace otevre spojeni na COM
> port a dale s nim jiz napracuje. Pak mam dve "podrizene" vlakna, ktere
> podle stanoveneho workflow s timto portem obcas pracuji. Mam osetreno,
> ze se nemuze stat, aby se obe vlkana v jednu chvili snazili neco
> posilat nebo neco cist z tohoto portu. Nicmene mam dotaz, jestli je
> toto je "ciste" reseni a nehrori mi nejaky problem. Ptam se dost
> zjistne, protoze maly problem mam a nevim, kde je problem.
No fuj, podobnermu pouzivani se opravdu vyhni. Spravne reseni je mit
jeden thread, k Synaseru pristupova vyhradne z toho jednoho threadu.
Tedy i vytvareni a likvidace objektu Synaseru delej zase v ramci toho
jednoho threadu. Z ostatnuich mist programu uz pak jensignalizuj tomu
komunikacnimuthreadu, co chces aby delal, stejne tak si nech
signalizovat zpet, ze pozadovana operace uz probehla.
Ono to pochopitelne jde delat podobne, jak to delas ted ty, ale je
tam mnoho mist, kde muzes udelat chybu, a bez detailni znalosti toho
co se deje v Synaseru potazmo ve WIN32 API se do toho nepoustej.
--
Lukas Gebauer.
E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 19.10.2004 11:45:26
Ing. Jiri Sokol wrote:
> Vlakno.Create; (mam vlastni constructor), ale v nem to zhuci na vyjimku.
Nemelo by spis byt Vlakno := Tvlakno.Create;
???
--
Jiri Cincura
e-mail: mailto:jiri(zv)cincura.net; mailto:xcincura(zv)informatics.muni(tec)cz
ICQ#: 314711544
web:
http://www.cincura.net/
http://photo.cincura.net/
http://phorum.cincura.net/
---
A i kdyz je nase doba obtizna a zmatena, je podnetna a vyplnena
prilezitostmi. And if our times are difficult and perplexing, so are they
challenging and filled with opportunity. -Robert F. Kennedy, 1961
Vlakna - zobrazeni informaci uzivateli na jeden fo
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 19.10.2004 11:01:21
Ano i to je moznost. Parametry se predaji v l(w)Param treba i pomoci nejake
dynamicke struktury, ale zalezi na casove narocnosti volane akce - aby
nebylo vytvareni a plneni struktury pomalejsi nez provedeni metody pomoci
Synchronize. Ale jde o princip.
Pokud bych mel framework, ktery je postaven na vlaknech, tak bych asi
opravdu volil tuto moznost uz je proto, ze je to *systemove* :))))
Ted jsem si uvedomil, ze to vlastne take tak delam a jako parametr predavam
pointer na dynamicky alokovany buffer se stringem. A tak bych se ted rad
zeptal ja:
1. Muze se stat, ze zprava neni zpracovana ???
2. Pokud ano, tak za jakych podminek ???
3. Pokud ano, tak kde mam zajistit korektni dealokaci pameti ???
Diky
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of delphin(zv)post(tec)cz
> Sent: Tuesday, October 19, 2004 10:49 AM
>
> > Jak to resite teda vy, kdyz mate vice vlaken a potebujete neco uzivateli
> napsat?
>
> Napriklad poslat message hlavnimu vlaknu zpravu pomoci PostMessage.
>
>
>
Vlakna - SYNASER - thread safety?
[*] wetty(zv)quick(tec)cz - 19.10.2004 11:27:24
Zdravim,
osobne bych pro komunikaci udelal jeden thread a roydilne akce bych rozlisil pomoci eventu.
Petr
Ing. Jiri Sokol napsal(a):
>Nicmene mam dotaz, jestli je toto je "ciste" reseni a nehrori mi nejaky problem. Ptam se dost zjistne, protoze maly problem mam a nevim, kde je problem.
>
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] Ing. Jiri Sokol <js-delphi(zv)email(tec)cz> - 19.10.2004 10:43:19
Ahoj.
Navazuji na svuj predchozi prispevek, tak se uz nebudu rozepisovat co a jak delam. Jde o to, ze kdyz mi vlakno dojede na nejakou vyjimku, tak chci vyloucit chyby, ktere by to mohlo zpusobovat nasledne a chtel bych toto vlykno, ktere bezi porad ukonict, uvolnit a znovu vytvorit a pripravit ho na dalsi spusteni.
To jsem chtel resit tak, do hlavniho vlakna si poslu zpravu. Zpravu odchytim, vim, ze je to s pozadavkem o:
Vlakno.Kill(INFINITE);
FreeAndNil(Vlakno);
a pak chci pokracovat
Vlakno.Create; (mam vlastni constructor), ale v nem to zhuci na vyjimku.
Jedine, jak to muzu provest je, ze jakmile hlavni vlakno aplikace odchyti zpravu vlakna o jeho "reset", tak si samo na sebe posle jinou zpravu, ve ktere se provedou ty zminene 3 radky uvedene vyse. VSE je OK...
Znamena to, ze kdyz mi prijde zpravy z nejakeho objektu, tak po dobu zpracovani teto zpravy se NESMIM pokusit ten objekt zrusit a znovu vytvorit? Proc? Zpravy si posilam pre POSTMessage, coz by melo znamenat, ze jdou asynchronne...
Muzete mi to, prosim, nekdo vyvsetlit?
Diky
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol(zv)seznam(tec)cz; 972 231 187
D6Prof+SP3; WinXPProf+SP1; FB 1.5.0
programator amater
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] delphin(zv)post(tec)cz - 19.10.2004 11:13:23
> To jsem chtel resit tak, do hlavniho vlakna si poslu zpravu. Zpravu
odchytim, vim, ze je to s pozadavkem o:
> Vlakno.Kill(INFINITE);
> FreeAndNil(Vlakno);
> a pak chci pokracovat
> Vlakno.Create; (mam vlastni constructor), ale v nem to zhuci na vyjimku.
Nema tam byt spise TVlakno.Create ?
Vlakna - SYNASER - thread safety?
[*] Ing. Jiri Sokol <js-delphi(zv)email(tec)cz> - 19.10.2004 11:05:22
Ahoj do tretice.
Jeste dotaz k synaseru, jestli nedelam neco spatne. Omlouvam za tolik dotazu, ale zacina mi zlobit aplikace a ja si uz nevim rady. Dekuji za pochopeni a Vase rady.
Hlavni vlakno aplikace otevre spojeni na COM port a dale s nim jiz napracuje. Pak mam dve "podrizene" vlakna, ktere podle stanoveneho workflow s timto portem obcas pracuji. Mam osetreno, ze se nemuze stat, aby se obe vlkana v jednu chvili snazili neco posilat nebo neco cist z tohoto portu.
Nicmene mam dotaz, jestli je toto je "ciste" reseni a nehrori mi nejaky problem. Ptam se dost zjistne, protoze maly problem mam a nevim, kde je problem.
Moc Vam vsem diky
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol(zv)seznam(tec)cz; 972 231 187
D6Prof+SP3; WinXPProf+SP1; FB 1.5.0
programator amater
Vlakna - zpracovani zpravy vlakna v hlavnim vlakne
[*] Petr Fejfar <development(zv)callnet(tec)cz> - 19.10.2004 11:01:21
Ing. Jiri Sokol wrote:
> Vlakno.Create; (mam vlastni constructor), ale v nem to zhuci na
> vyjimku.
A to je problem zjistit trasovanim popr. logovanim,
co se tam deje a kde a na jakou vyjimku to spadne?
pf