Archív konference Delphi

Zpět na výběr roku archívu nebo přejít na fulltextové vyhledávání v konferenci.

firebird - delka char

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.3.2005 06:57:03

Problem bude pravdepodobne na strane ZEOSLib - FireBird podporuje CHAR az do
delky 32767 znaku (byte) a VARCHAR do delky 32765 znaku (byte)

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of votavaSW
> Sent: Thursday, March 24, 2005 5:38 PM
>
> jaka muze byt maximalni delka char ve firebird, nastavit pri
> vytvareni sloupce jde i char(4000), ale nacte se pouze 513 zn.

firebird a nazvy v uvozovkach

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.3.2005 06:39:02

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Radek Cervinka
> Sent: Thursday, March 24, 2005 5:28 PM
>
> furt mi pripada ze si nerozumime.
>
> > Ale vzdyt jsem psal: od D6 se to generuje automaticky.
> hmm, mam d5
>
> ale presto: to jako ze za behu se to vygeneruje?
> Ne ty asi myslis design mod.

A je nejaky zasadni problem generovat I ty U/I/D dotazy v runtime ??? Ja v
tom zadny problem nevidim...

> > Ty 4 SQL jsou tam vzdycky, od BDE pocinaje, v ADO a
> TDataSetProvider konce.
> tady opatrne, jsem presvedcen ze u nekterych DB je primo
> vyuzivano API nebo jejich binarni komunikacni protokol (hmm,
> do utery jsem si myslel ze je to i u komponent ze zalozky
> interbase presto vim, ze napr.
>
> http://web.tiscali.it/fblib/
> to tak ma, ale zase neni DB aware.)

Mas pravdu, ze vetsina komponent vyuziva API, ale napr. U Tebou zminovaneho
FireBirdu v API neni naprosto vubec nic, co by se tykalo napr. insertu. Vse
se odehrava pomoci API funkce isc_dsql_execute a Tebou zminovany FBLib na
tom neni jinak (jinak by totiz nepotreboval klientskou knihovnu). AFAIK
jedina vec, ktera nepouziva klientskou knihovnu, ale implementuje primo
komunikacni protokol FB, je FireBird .NET provider, a ostatni baliky
komponent "jen vyuzivaji" klientskou knihovnu a tudiz API. Ve vysledku je to
tedy presne tak, jak to psal kdosi pred Tebou (jmeno jsi vtipne vymazal), a
tedy, ze se musi ty dalsi 3 dotazy vygenerovat...

> > Jenom se to deje automaticky a ja to nemam (na rozdil od
> TIBDataSet) pod kontrolou.
> > Centralizovany kod je samozrejme prima.
> > Jakmile ale v Delphi pouziju JAKYKOLI dataset, uz jsem
> vazan na prislusnou technologii (BDE, ADO, IBX, dbExpress,
> atd.), takze stejne nic centralizovanyho nemam.
> to neni pravda, prave kdyby jsi pouzil jen to umi dataset tak
> ti je ti uplne putna co je to za dataset (samozrejme musis to
> pouzivat inteligentne).
>
> > Jestli to chci mit hodne centralizovany (modularni),
> zamyslim se nad DataSet v .NET.
> OT:<joke>ja rad pouzivam u pole typu DATETIME hodnotu null,
> treba na urceni ze akce jeste neprobehla. Modri jiz vedi</joke>
>
> Jedine co by mi stacilo ke stesti je aby existoval nejaky
> naslednik datasetu, ktery by v !runtime! kdyz by se mu predal
> SQL SELECT se seznamem poli !z jedne tabulky! dokazal
> updatovat radek v te jedne tabulce.

Ale no tak - tohle preci neni vubec problem napsat...

> Zjistil jsem ze asi nic takoveho pro D5 a interbasi/firebird
> neexistuje.
> Resenim je bud pouzit D6, kde jak jsem pochopil to asi jde (i
> kdyz si nejsem jist zda v runtime).
>
> tj. bud to napisi (muzu treba vyjit z TIBTable ktera to umi
> ale jen nad celou tabulkou) nebo to necham byt.

TIBTable neeeeeeeeeeeeeeee... :) Vazne...

S pozdravem

Milan Tomes

> Radek Cervinka

Akce provedena jednou pri prekresleni gridu

[*] Krysl, Tomas <tomas.krysl(zv)cherry.de> - 24.3.2005 18:53:41

> Tak dobre, ja potrebuju updatovat label na kterym je pocet oznacenych
> zaznamu v gridu. Zjistil jsem, ze po oznaceni zaznamu se
> pochopitelne vola
> obsluha prekresleni gridu, tak jsem to povesil na to. Poradte
> neco lepsiho.

Vytvorit akci a do Update dat napr.

Label.Caption := Format('Pocet oznacenych zaznamu = %d',
[Grid.Selection.Bottom - Grid.Selection.Top]);

Jedina nevyhoda snad je, ze kdyz ta akce je na hlavnim formu, tak pri
zobrazeni jineho modalniho formu se neupdatuje - pokud dojde ke zmene,tak je
treba ruco zavolat Action.Update.

Tk.

Ovladani IIS

[*] Ing. Petr Sikola <developer(zv)efg(tec)cz> - 24.3.2005 17:57:37

Zdravim, potreboval bych z aplikace v delphi pridat do iis
- isapi filtr
- nakonfigurovat aplikaci
- pridat vychozi dokument

Nemate nekdo namet jak toto provest? Da se do delphi naimportovat nejake
Active-X, ktere toto umi? Kde ho sehnat?

Dekuji za nemety.

Petr Sikola

D5E, WXP, IIS5

firebird - delka char

[*] votavaSW <mail(zv)votavasw(tec)com> - 24.3.2005 17:37:35

dobry den,
jaka muze byt maximalni delka char ve firebird, nastavit pri vytvareni
sloupce jde i char(4000), ale nacte se pouze 513 zn.
nevite co je s 'www.delphi(tec)cz/hledani.asp'?

s pozdravem Votava

w2k D5Pro FB 1.5.2 zeos 5.3.0


firebird a nazvy v uvozovkach

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 24.3.2005 17:27:34

Ahoj,

furt mi pripada ze si nerozumime.

> Ale vzdyt jsem psal: od D6 se to generuje automaticky.
hmm, mam d5

ale presto: to jako ze za behu se to vygeneruje?
Ne ty asi myslis design mod.

> A co se vygeneruje, muzu si upravit.
> David Lebeda paralelne spravne pise: "mam to pod kontrolou".
no on mi myslim porozumel ze tak jsem to nemyslel,
ja !vsechny! query generuji za behu, krome jineho dle pristupovych prav.
Mam object ktery ma hromadu metod a podle parametru (metody) ktere ji
predam mi ta ktera metoda vygeneruje SQL (treba jen pro jeden zaznam, nebo
naopak pres JOIN pripoji tabulky - to pouzivam pro grid). Ale pri zapisu je
to vzdy jednoduchy select pole1, pole2 ..... FROM tabulka.

> Pripominam, co jsem psal nedavno: slozity select, jednoduchy update.
> To mi zadne ADO neudela, alespon myslim.
jo, to taky nechci.

> Ty 4 SQL jsou tam vzdycky, od BDE pocinaje, v ADO a TDataSetProvider konce.
tady opatrne, jsem presvedcen ze u nekterych DB je primo vyuzivano API nebo
jejich binarni komunikacni protokol
(hmm, do utery jsem si myslel ze je to i u komponent ze zalozky interbase
presto vim, ze napr.

http://web.tiscali.it/fblib/
to tak ma, ale zase neni DB aware.)> Jenom se to deje automaticky a ja to nemam (na rozdil od TIBDataSet) pod kontrolou.
> Centralizovany kod je samozrejme prima.
> Jakmile ale v Delphi pouziju JAKYKOLI dataset, uz jsem vazan na prislusnou technologii (BDE, ADO, IBX, dbExpress, atd.), takze stejne nic centralizovanyho nemam.
to neni pravda, prave kdyby jsi pouzil jen to umi dataset tak ti je ti
uplne putna co je to za dataset (samozrejme musis to pouzivat inteligentne).

> Jestli to chci mit hodne centralizovany (modularni), zamyslim se nad DataSet v .NET.
OT:<joke>ja rad pouzivam u pole typu DATETIME hodnotu null, treba na urceni
ze akce jeste neprobehla. Modri jiz vedi</joke>

Jedine co by mi stacilo ke stesti je aby existoval nejaky naslednik datasetu,
ktery by v !runtime! kdyz by se mu predal SQL SELECT se seznamem poli !z
jedne tabulky! dokazal updatovat radek v te jedne tabulce.

Zjistil jsem ze asi nic takoveho pro D5 a interbasi/firebird neexistuje.
Resenim je bud pouzit D6, kde jak jsem pochopil to asi jde (i kdyz si
nejsem jist zda v runtime).

tj. bud to napisi (muzu treba vyjit z TIBTable ktera to umi ale jen nad
celou tabulkou) nebo to necham byt.

seznam komponent pro IB

http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_dev_comps

Diky vsem za pomoc

Radek Cervinka


TRichEdit - paste

[*] Jan Fiala <jan.fiala(zv)wo(tec)cz> - 24.3.2005 15:19:26

24.3.2005 Igor Kapoun:
> Existuje nejaka moznost, jak elegantne vlozit to TRichEdit nejaky text?
> Podobne, jak to dela metoda PasteFromClipboard,
> ale bez nutnosti dat data pred tim do clipboardu

RichEdit.SelText := 'Vkladam nejaky text';

--
Jan Fiala
mailto:jan.fiala(zv)wo(tec)cz


IdFTPServer, OnStoreFile, GetFileSize

[*] Suky <suky(zv)atlas(tec)cz> - 24.3.2005 15:09:24

Ahoj,

mam moznost ziskat velikost uploadovaneho souboru v udalosti OnStoreFile v
komponente IdFTPServer od INDY? Nebo kde jinde se dozvim tuto informaci?

--
S pozdravem,
Michal Soukup
http://hobitin.blogspot.com/ (Blog Bilba Pytlika z Kraje)

firebird a nazvy v uvozovkach

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 24.3.2005 14:31:20

> a hlavne delat to pro 180 tabulek je na odstrel a to
> se radsi na to vykaslu a necham to jen pro MSSQL),

Take se mi nechtelo sestavovat, a predevsim UDRZOVAT sadu SQL pro kazdy
dataset, to je fakt silene. Proto pouzivam TIBClientdataset, ktery si,
presne jak chces, generuje vse sam. Jak pozna primarni klic? Kazdy Field ma
providerflags, kde se nastavuje zda je field soucasti where, pfKey, Update.
takze neni problem ani s joinovanymi selecty, protoze v udalosti
OnGetTablename muzes nastavit jmeno updatovane tabulky a joinovana pole
vynechat z updatu. Dokonce se da v onUpdateTable (nebo tak nejak) uplne
obejit a vyresit update jinak. TIBclientdataset, alespon tak jak je v D6 ma
ovsem chybu, ze neumi RefreshRecord, pouze Refresh. Bud si to vyresis
opravou, nebo se obejdes bez. Pokud uvazujes i o jinych DB nez IB/FB, tak je
lepsi pouzit Provider+Tclientdataset - to tu uz zaznelo nekolikrat...takze
myslim, ze netreba hazet flintu do zita :))

MB


Prechod QuickReport -> FastReport

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 24.3.2005 14:43:21

Nevite prosim nekdo o pokud mozno bezbolestnem prevodu stavajicich sestav z QuickReportu 3.5 do
FastReportu 3.0? Na webu jsem nasel jen neplatne odkazy na jakysi 5 let stary soft...

Diky, Karel Rys


Seznam prav z interbase tabulky

[*] TomA?L? Krejzek <tomas.krejzek(zv)kpsys(tec)cz> - 24.3.2005 14:37:20

Projdi si tabulku RDB$USER_PRIVILEGES
mas tam jmeno uzivatele, prava, i tabulku na kterou se to vztahuje

Tom

Jiri Virt napsal(a):

>Ahoj,
> nemate nekdo postup, jak zjistit z tabulky v interbasi seznam prav
>(privileg) pro jednotliveho uzivatele?
>
>Diky
>
>Jirka Virt
>
>
>
>
>
>

--
Ing. Tom+AOEBYQ- Krejzek
KpSys Pardubice, spol. s r.o.
+AQw-ack+AOk- 155, 530 02
tel. +-420 466 655 055

firebird a nazvy v uvozovkach

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 24.3.2005 14:31:19

> No prave. Ja nechapu *proc* bych to mel delat
> (vim ze to tak jde, ale prijde mi to strasny krok zpatky a je to takove
> neobjektove, neprehledne,

Ale vzdyt jsem psal: od D6 se to generuje automaticky.
A co se vygeneruje, muzu si upravit.
David Lebeda paralelne spravne pise: "mam to pod kontrolou".
Pripominam, co jsem psal nedavno: slozity select, jednoduchy update.
To mi zadne ADO neudela, alespon myslim.
Jeste kdybych tak "select * from storedproc", stejne to muzu updateovat, jak chci.

> Schvalne se nezabyvam dotazy s JOIN. Ja musim
> zarucit ze v SQL bude vzdy jen jednoduchy update nebo insert.

No prave, kdyz si to napisu sam, tak to bude jednoduchy.
Viz treba to "select from storedproc". S tim si neporadi nikdo, jenom ja sam.

> Proto prece je tam object Field aby odstinoval ruzne implmentace datovych
> formatu (typicky datum). Copak to nevidite?

kdyz napisu to FieldByName('datum')as.DateTime := Now;
a pak "update ...", tak je to v poradku.
Field (resp. dataset) si to zaridi spravne.

> Proste odmitam pro kazdou tabulku psat 4 SQL. Lidi se snazi psat
> procedury
> aby meli kod centralizovany a nejednou rup: 4 SQL pro jednu tabulku.
> To to fakt nikomu nevadi?

Ty 4 SQL jsou tam vzdycky, od BDE pocinaje, v ADO a TDataSetProvider konce.
Jenom se to deje automaticky a ja to nemam (na rozdil od TIBDataSet) pod kontrolou.
Centralizovany kod je samozrejme prima.
Jakmile ale v Delphi pouziju JAKYKOLI dataset, uz jsem vazan na prislusnou technologii (BDE, ADO, IBX, dbExpress, atd.), takze stejne nic centralizovanyho nemam.
Jestli to chci mit hodne centralizovany (modularni), zamyslim se nad DataSet v .NET. Klient pak vubec nevi, nad jakou databazi pracuje nebo zda se to nacetlo z XML.

> Ja proste nechapu proc kdyz to v Adonisu nebo AdoExpresu funguje a
> funguje to dobre tak proc bych se toho mel vzdat.

Priznam se, i kdyz jsem pres ADO neco psal, ze nemam zkusenot, zda Adonis ci ADO dokaze update na velmi, velmi slozity select. Natoz na "select from storedproc". TIBDataSet ano.

> Nehlede na dalsi aspekty (jako ze nechci mit SQL dotazy rozhazene po cele
> aplikaci a uz vubec ne primo v komponentach(z toho jsem uz vyrostl), ale
> mam je centralizovane - takovy jako "aplikacni server").

Proc ne. Tak napisu aplikacni server (bez uvozovek).
Potom se ale logika i/u/d prenasi z DataSetu na TDataSetProvider. No a co?

> OT: A nerad se vzdavam typove kontroly
> (FieldByName('asss').AsInteger:=iNeco).

Te se TIBDataSet nevzdava. Pracuje se s nim uplne stejne.

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)
====================================

Seznam prav z interbase tabulky

[*] Jiri Virt <virt(zv)volny(tec)cz> - 24.3.2005 14:23:19

Ahoj,
nemate nekdo postup, jak zjistit z tabulky v interbasi seznam prav
(privileg) pro jednotliveho uzivatele?

Diky

Jirka Virt

TRichEdit - paste

[*] Igor Kapoun <igor.kapoun(zv)volny(tec)cz> - 24.3.2005 13:23:14

Existuje nejaka moznost, jak elegantne vlozit to TRichEdit nejaky text?
Podobne, jak to dela metoda PasteFromClipboard,
ale bez nutnosti dat data pred tim do clipboardu

Igor


--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.8.1 - Release Date: 23.3.2005


firebird a nazvy v uvozovkach

[*] Radek AServinka <radek.cervinka(zv)technodat(tec)cz> - 24.3.2005 12:59:12

Ahoj,

> Asi mas pravdu, jen nevim, jak se komponenta dozvi jen na zaklade
> selectu, ktere pole je primarni klic, zvlast kdyz v selectu treba nebude
> vubec uvedeno.

to je prave problem u tech skladanych SQL, kdyby to jelo pres API tak tam
by to asi problem nebyl.

Resp. stejnak si myslim ze se to da nejak zjistit (treba z tabulek
RDS$....), treba v okamziku Post (a ta informace se da cachovat, takze
priste se jiz ptat nemusim).

> Neznam Adonis a spol., ale nebylo by tedy resenim jet i na FireBird
> pres ADO?

dva duvody:
a) neexistuje dobry OLEDB driver pro interbasi (resp, zadny ktery umi EDIT..)
Jediny schopny je zde
http://www.ibprovider.com/eng/documentation/FreeVSCom.html
a jeden z rozdilu mezi placenou a free verzi je prave
moznost Edit, Post

b) muj system bezi slusne pod wine na linuxu (mozna i rychleji nez
na windows). Jediny problem je ze wine zatim nema vlastni implementaci
ADO knihoven, takze jedina moznost je do nej je naistalovat. A to jde jen
pokud je nainstalovan IExplorer (grrrrr). A tady zacinaji licencni
problemy. Ne ze by to neslo :) (IE6 SP1, ADO 2.7)

Nativni pristup k Firebirdu by to krasne vyresil (i licencne).

Radek

firebird a nazvy v uvozovkach

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 24.3.2005 12:07:08

> kdyz jsem v tom SelectSQL presne specifikoval ktere pole tam jsou,
> a tim ze jsem udelal
> FieldByName('neco').AsDateTime:=Now
> jsem jasne naznacil ze _tenhle_ ten field a jen ten jsem jako zmenil, takze
> kdyz dam POST tak (v nejhorsim pripade by mela ta komponenta vygenerovat _sama_
> UPDATE tabulka SET neco = datum WHERE ID = klic
> (kde automaticky je datum konvertovane spravne a jak mne nezajima).
>
> Vsechny informace pro to ma.

Asi mas pravdu, jen nevim, jak se komponenta dozvi jen na zaklade
selectu, ktere pole je primarni klic, zvlast kdyz v selectu treba nebude
vubec uvedeno.

> Proste odmitam pro kazdou tabulku psat 4 SQL. Lidi se snazi psat procedury
> aby meli kod centralizovany a nejednou rup: 4 SQL pro jednu tabulku.
> To to fakt nikomu nevadi?

Osobne preferuji, ze si SQL prikaz sestavim sam, uz treba proto abych
se mohl rozhodnout, ktere sloupce do insertu zahrnu a ktere zamerne
vynecham (aby se napr. u insertu mohly uplatnit default hodnoty z
databaze). Kdyz bych chtel mit vse centralizovane, muzou veskere
inserty/updaty/delety delat ulozene procedury (a jen ony mohou mit
prava k zasahum do tabulek). Pokud se centralizaci mysli to, aby se
braly treba z jedne unity, tak neni problem ty InsertSQL atd. plnit az v
kodu a odnekud je nacitat.

> Ja proste nechapu proc kdyz to v Adonisu nebo AdoExpresu funguje a
> funguje to dobre tak proc bych se toho mel vzdat.

Neznam Adonis a spol., ale nebylo by tedy resenim jet i na FireBird
pres ADO?

David Lebeda

Akce provedena jednou pri prekresleni gridu

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 24.3.2005 11:47:07

> Tak dobre, ja potrebuju updatovat label na kterym je pocet oznacenych
> zaznamu v gridu. Zjistil jsem, ze po oznaceni zaznamu se pochopitelne vola
> obsluha prekresleni gridu, tak jsem to povesil na to. Poradte neco lepsiho.

Ahoj,

nestacilo by obslouzit AfterScroll u datasetu?

David Lebeda

Firebird, ISQL - implicitni nastaveni

[*] petr palicka <palicka.petr(zv)seznam(tec)cz> - 24.3.2005 11:07:03

Ahoj,

chtel jsem se zeptat, zda lze nejak prednastavit isql od firebirda.
Mam nastaveny heslo a uzivatele, ale chtel bych, aby po spusteni isql uz
bylo nastaveno:
SET COUNT ON;
SET NAMES DOS852;
SET SQLDIALECT 3;

A jeste jeden dotaz, kdyz presmeruju vystup isql do souboru, je tam v
pravidelnych intervalech vlozeno:

CONCATENATION
===================================================

Lze to nejake vypnout?

Dekuju

Peca

firebird a nazvy v uvozovkach

[*] Libor Junek, Medisoft International <libor.junek(zv)medisoft(tec)cz> - 24.3.2005 11:25:05

Neni prece velky problem si ty komponenty upravit aby to generovalo I/U/D/R
automaticky ne?
Libor

----- Original Message -----
From: "Radek AServinka" <radek.cervinka(zv)technodat(tec)cz>
Sent: Thursday, March 24, 2005 11:11 AM


> Proste odmitam pro kazdou tabulku psat 4 SQL.

firebird a nazvy v uvozovkach

[*] Radek AServinka <radek.cervinka(zv)technodat(tec)cz> - 24.3.2005 11:11:03

Ahoj,

> To mi nerikej, ze moje dochazka, ktera bezi v JCR (1000 zamestnancu) od roku 2001, nefunguje ...
> Jenom musis do toho TIBDataSet zadat
>
> SelectSQL.Text:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE idCurrency = :idcurrency';
> UpdateSQL.Text:='update tcurrency set idcurrency=new_idcurrnecy, dcCode=new.dcCode, dcName=new_dcName where iddurrency=old_idcurrency
> InsertSQL.Text:='insert into tcurrency(idCurrency, dcCode, dcName) values (new_idCurrency, new_dcCode, new_dcName)
> DeleteSQL.Text:='delete from tcurrency where iddurrency=old_idcurrency
> RefreshSQL:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE idCurrency = old_idcurrency'

No prave. Ja nechapu *proc* bych to mel delat
(vim ze to tak jde, ale prijde mi to strasny krok zpatky a je to takove
neobjektove, neprehledne,
a hlavne delat to pro 180 tabulek je na odstrel a to
se radsi na to vykaslu a necham to jen pro MSSQL),

kdyz jsem v tom SelectSQL presne specifikoval ktere pole tam jsou,
a tim ze jsem udelal
FieldByName('neco').AsDateTime:=Now
jsem jasne naznacil ze _tenhle_ ten field a jen ten jsem jako zmenil, takze
kdyz dam POST tak (v nejhorsim pripade by mela ta komponenta vygenerovat _sama_
UPDATE tabulka SET neco = datum WHERE ID = klic
(kde automaticky je datum konvertovane spravne a jak mne nezajima).

Vsechny informace pro to ma. V lepsim pripade by misto UPDATE mela volat
API interbase pro update. Schvalne se nezabyvam dotazy s JOIN. Ja musim
zarucit ze v SQL bude vzdy jen jednoduchy update nebo insert.

Proto prece je tam object Field aby odstinoval ruzne implmentace datovych
formatu (typicky datum). Copak to nevidite?

Proste odmitam pro kazdou tabulku psat 4 SQL. Lidi se snazi psat procedury
aby meli kod centralizovany a nejednou rup: 4 SQL pro jednu tabulku.
To to fakt nikomu nevadi?
Ja proste nechapu proc kdyz to v Adonisu nebo AdoExpresu funguje a
funguje to dobre tak proc bych se toho mel vzdat.

Nehlede na dalsi aspekty (jako ze nechci mit SQL dotazy rozhazene po cele
aplikaci a uz vubec ne primo v komponentach(z toho jsem uz vyrostl), ale
mam je centralizovane - takovy jako "aplikacni server").
OT: A nerad se vzdavam typove kontroly (FieldByName('asss').AsInteger:=iNeco).

Radek


Akce provedena jednou pri prekresleni gridu

[*] Martin Pisarik <martin.pisarik(zv)seznam(tec)cz> - 24.3.2005 10:52:56

Tak dobre, ja potrebuju updatovat label na kterym je pocet oznacenych
zaznamu v gridu. Zjistil jsem, ze po oznaceni zaznamu se pochopitelne vola
obsluha prekresleni gridu, tak jsem to povesil na to. Poradte neco lepsiho.

>
> Ahoj,
> nevim nevim, neco mi rika ze pri prekresleni by se melo jen prekreslovat a
> ostatni veci resit v jinych obsluhach udalosti.
>
> Tk.
>

Akce provedena jednou pri prekresleni gridu

[*] Petr Vones <konference(zv)petrvones(tec)net> - 24.3.2005 10:50:51

From: "Martin Pisarik" <martin.pisarik(zv)seznam(tec)cz>
> tak se mi ta fce Akce() zavola nekolikrat behem prekresleni, coz hodne
> zdrzuje.

Vypada to ze tu akci by si mel provadet asi jinde. Zadost o prekresleni si
vyvolava operacni system kdykoli to uzna za potrebne, takze to neni vhodne
misto k provadeni takovych akci.

Petr Vones


Akce provedena jednou pri prekresleni gridu

[*] Krysl, Tomas <tomas.krysl(zv)cherry.de> - 24.3.2005 10:42:50

Ahoj,
nevim nevim, neco mi rika ze pri prekresleni by se melo jen prekreslovat a
ostatni veci resit v jinych obsluhach udalosti.

Tk.

> Vim, ze to mam asi reseny nehezky, ale nenapada me nic
> lepsiho. Jak zavolat
> 1x funkci Akce pri prekresleni Gridu?

Akce provedena jednou pri prekresleni gridu

[*] Martin Pisarik <martin.pisarik(zv)seznam(tec)cz> - 24.3.2005 10:32:49

Ahoj *,

Potrebuju pri prekresleni gridu provest nejakou akci.
Pokud pouziju funkci;

void __fastcall TBaseMFrm::GridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
Akce();
}

tak se mi ta fce Akce() zavola nekolikrat behem prekresleni, coz hodne
zdrzuje.

Zatim jsem to optimalizoval takto:

void __fastcall TBaseMFrm::GridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if (DataCol==1) {
Akce();
}

}

Ted se mi zavola jen pri vykreslovani 2. sloupce. To vsak nese problemy,
pokud je 2. sloupec neviditelny, tak se nezavola.

Vim, ze to mam asi reseny nehezky, ale nenapada me nic lepsiho. Jak zavolat
1x funkci Akce pri prekresleni Gridu?

Dik.

firebird a nazvy v uvozovkach

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 24.3.2005 10:06:47

> SQL.Text:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE
> idCurrency = 10');
> Open;
> Edit;
> // upravy
> Post;
>
> Zkousel jsem komponenty ze zalozky Interbase a to hlasi ze nemohu editovat
> read-only dataset.

Ahoj,

nejsem si jist, zda neco najdes. K uvedenemu ucelu by se mel pouzit
IBDataset, ovsem musis si sam predepsat InsertSQL, ModifySQL atd.

Pak pri Post po Edit se provede ModifySQL (ten se napise jednou
obecne - s parametry). Muzes si tak obslouzit ruzne specialnosti -
vynachat nejake pole, ktere v zadnem pripade nema byt editovano,
doplnovat nejake hodnoty natvrdo...cokoli, co ti Update prikaz dovoli.

IBDataset se tak pouzit i pri editaci primo v DBGridu apod., kdyz by to
nekdo pozadoval.

Osobne o jine ceste nevim, coz ale neznamena, ze nemusi existovat.

David Lebeda

firebird a nazvy v uvozovkach

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 24.3.2005 09:58:47

> OK, bez tak sem nenasel zadny provaz :)).
> Ale furt jsem nejak nevyresil problem s vhodnyma komponentama, kde
> by existoval nejaky TxxxDataSet (nebo Query) u kterych bych mohl udelat
>
> SQL.Text:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE
> idCurrency = 10');
> Open;
> Edit;
> // upravy
> Post;

To mi nerikej, ze moje dochazka, ktera bezi v JCR (1000 zamestnancu) od roku 2001, nefunguje ...
Jenom musis do toho TIBDataSet zadat

SelectSQL.Text:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE idCurrency = :idcurrency';
UpdateSQL.Text:='update tcurrency set idcurrency=new_idcurrnecy, dcCode=new.dcCode, dcName=new_dcName where iddurrency=old_idcurrency
InsertSQL.Text:='insert into tcurrency(idCurrency, dcCode, dcName) values (new_idCurrency, new_dcCode, new_dcName)
DeleteSQL.Text:='delete from tcurrency where iddurrency=old_idcurrency
RefreshSQL:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE idCurrency = old_idcurrency'

Parametr :idcurrency se pak zadava pres Params (nebo tak nejak).

Mam takovej pocit, ze v D5 se to musi zadavat rucne, od D6 je to na dblclick v property editoru a vygeneruje se to samo.

Viz nase kurzy www.haes(tec)cz a zadnej problem s IBX neni, provazy neni treba hledat.

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)
====================================

zjisteni handle okna

[*] jiri.bartonek(zv)email(tec)cz - 24.3.2005 09:50:46

> --- Puvodni zprava ---
> Od: Jan Fiala <jan.fiala(zv)wo(tec)cz>
> Datum: 24.03.2005 09:35:35
>
> 24.3.2005 jiri.bartonek(zv)email(tec)cz:
> > Zdravim,
>
> > mohl by mi nekdo vysvetlit rozdilne chovani fce FindWindow()?
> > Pri pouziti v aplikaci vrati handle hledaneho okna,
> > pokud neuspeje vrati 0.
>
> > Chtel sem tuto fci pouzit v service, ale vraci stale 0.
>
> Ma ta service povolen pristup na plochu ?
>
> --
> Jan Fiala
> mailto:jan.fiala(zv)wo(tec)cz

Bylo to tim pristupem na plochu.
Diky
Jiri

zjisteni handle okna

[*] Jan Fiala <jan.fiala(zv)wo(tec)cz> - 24.3.2005 09:34:44

24.3.2005 jiri.bartonek(zv)email(tec)cz:
> Zdravim,

> mohl by mi nekdo vysvetlit rozdilne chovani fce FindWindow()?
> Pri pouziti v aplikaci vrati handle hledaneho okna,
> pokud neuspeje vrati 0.

> Chtel sem tuto fci pouzit v service, ale vraci stale 0.

Ma ta service povolen pristup na plochu ?

--
Jan Fiala
mailto:jan.fiala(zv)wo(tec)cz


zjisteni handle okna

[*] jiri.bartonek(zv)email(tec)cz - 24.3.2005 09:14:43

Zdravim,

mohl by mi nekdo vysvetlit rozdilne chovani fce FindWindow()?
Pri pouziti v aplikaci vrati handle hledaneho okna,
pokud neuspeje vrati 0.

Chtel sem tuto fci pouzit v service, ale vraci stale 0.

Diky za nasmerovani

Jiri

D6 Ent, WinXp Prof SP2

kod service - jedna se o vysek kodu:

program Project2;

uses
SvcMgr,
Unit1 in 'Unit1.pas' {Service1: TService};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TService1, Service1);
Application.Run;
end.
---------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls;

type
TService1 = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure ServiceStart(Sender: TService; var Started: Boolean);
private
Cyklus : Byte;
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;

//simuluji udalost
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
Timer1.Enabled := True;
end;

//readuji na udalost
procedure TService1.Timer1Timer(Sender: TObject);
var F: TextFile;
begin
AssignFile(F, 'c:\hWnd.txt');
Rewrite(F);
Writeln(F, 'Handle okna: '+IntToStr(FindWindow(nil,'HledaneOkno')));
CloseFile(F);
Timer1.Enabled := False;
end;

end.

firebird a nazvy v uvozovkach

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 24.3.2005 09:00:41

Ahoj,

Ing. Marek Kocan wrote:

> rekl bych, ze to jinak nejde - pouzijes-li uvozovky, je to vcetne uvozovek
> (presny nazev vcetne velikosti, mezer apod.). Otazka spise ale zni, proc to
> tak chces mit? KER

OK, tak se s tim nejak musim smirit (bez tak sem nenasel zadny provaz :)).
Proste mi to pripada neprehledne (a tak nejak mi to pripomina vek
dalnopisu). Snazim se portnout stavajici system (180+ formularu) na
firebird. SQL dotazy mam separovane od formularu v jedne tride. Ale sem tam
pracuji se jmeny tabulek.

> zejmena, pouzivas-li k vytvareni nejaky nastroj a nepises z ruky primo
pisu vse z ruky
> SQL prikazy. Potom totiz muzes v selectech pouzivat velka i mala
> pismena dle libosti bez uvozovek. Jen v tech systemovych tabulkach to
> budes mit vse velkyma.

Jeste jsem zjistil ze je jedno jak se tabulka jmenuje pri vytvareni.
Pokud tam nejsou " tak se to vse stejne prevede na velka pismena.

OK. Ale furt jsem nejak nevyresil problem s vhodnyma komponentama, kde
by existoval nejaky TxxxDataSet (nebo Query) u kterych bych mohl udelat

SQL.Text:='SELECT idCurrency, dcCode, dcName FROM tCurrency WHERE
idCurrency = 10');
Open;
Edit;
// upravy
Post;

Zkousel jsem komponenty ze zalozky Interbase a to hlasi ze nemohu editovat
read-only dataset. Ani se nedivim. Kdyz jsem se dival do zdrojaku
tak musi mit zvlastni updateobject, jenze v helpu je napsane ze to plati
jen pro CachedUpdates, coz neni ten pripad.
TIBTable funguje, ale jen nad celou tabulkou.

Dale vypadali velmi zajimave Unified Interbase
http://www.progdigy.com/modules.php?name=UIB,
ale pod Delphi 5 se mi je nepodarilo prelozit (resp. malo jsem se snazil).
Ale stejne nepodporuji Edit a spol.

Vim, ze interbase a spol ma vlastni API a diky jemuz se da s ni pracovat
efektivneji nez pres UPDATE SQL a hlavne pak odpadaji problemy s ruznyma
formatama datumu a spol(plati pri programovani pro vice SQL serveru) a tak
jsem nejak doufal ze to nekdo zapouzdril pro naslednika DataSet.


R.

Preruseni spojeni s databazi

[*] Tyslic Jiri <jiri.tyslic(zv)opp.tbggroup(tec)com> - 24.3.2005 08:42:40

Dobry den vsem,
Chtel bych se zeptat zkusenejsich jak se resi odpojeni od databaze.
Priklad: Uzivatel prohlizi data a protoze jsou v cache nevi nic o tom, ze server spadnul. Da editaci polozky vyplnuje, vyplnuje... a pri ulozeni mu to zahlasi chybu a muze editovat znovu...

Napdalo me, pouzit periodicky check napr. po 5min. a pokud neni connect na server, ukoncit aplikaci nebo provest reconnect...
nebo vzdy pri zmene State datasetu kontrolovat connect...
Jak toto resite vy zkusenejsi?

Diky moc

Jirka


komponenty pro Firebird

[*] Marek Dostal <konf(zv)agnis(tec)cz> - 24.3.2005 07:46:36

> muzu se zeptat, ktere komponenty pouzivate pro Firebird (1.5)?
Pouzivame technologii dbExpress, ktera je v Delphi od verze 6. A z ni
konkretne komponentu TSimpleDataSet.> ja mam D5 Prof.
Tam jeste dbExpress neni.>Pouzivam TIBDatabase, TIBQuery, ... v zalozce Interbase, bez jakychkoli
>problemu
dbExpress ma oproti temto komponentam jednu vyhodu a to sice, ze neni
zavisly na konkretnim SQL serveru, pouze se zadaji jine nazvy dll knihoven.
Konkretni priklad: komponenty TIBxxxx vyzaduji natvrdo gds32.dll, coz je u
FireBirdu 1.0 nevadi, ale uz u FireBirdu 1.5, ktery ma novou klientskou dll
knihovnu fbcient.dll je potreba udelat takovy podpurny krok, a to sice ze se
knihovna fbclient.dll nakopiruje do systemu pod jmenem gds32.dll (je to
popsano i nekde v release notes k FB 1.5). A nikde neni zaruceno ze u
vyssich verzi FB to take tak pujde. V dbExpress jsem proste jen zmenil
property VendorLib u TDBConnection, kde jsem misto gds32.dll zadal
fbclient.dll. Marek Dostal
D7Prof, WinXP, FireBird 1.0, 1.5

firebird a nazvy v uvozovkach

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 24.3.2005 06:56:32

> Nez si hodim smycku, da se nejak nastavit abych
> nemusel zadavat ty " a pritom to zustalo
> jako tEF_Currency?
>

Ahoj,

nevim, jestli se v nejnovejsich verzich FB neco nezmenilo, ale rekl
bych, ze mas v podstate smulu. IMHO nejlepsi je pri vytvareni
databazovych objektu deklarovat vsechny nazvy velkymi pismeny,
zejmena, pouzivas-li k vytvareni nejaky nastroj a nepises z ruky primo
SQL prikazy. Potom totiz muzes v selectech pouzivat velka i mala
pismena dle libosti bez uvozovek. Jen v tech systemovych tabulkach to
budes mit vse velkyma.

David Lebeda

firebird a nazvy v uvozovkach

[*] Ing. Marek Kocan <kocan(zv)ebchod(tec)cz> - 23.3.2005 23:28:01

Cau,
rekl bych, ze to jinak nejde - pouzijes-li uvozovky, je to vcetne uvozovek
(presny nazev vcetne velikosti, mezer apod.). Otazka spise ale zni, proc to
tak chces mit? KER

|| http://www.dbsvet(tec)cz - Databazovy svet

>
> Nez si hodim smycku, da se nejak nastavit abych
> nemusel zadavat ty " a pritom to zustalo
> jako tEF_Currency?
>
> tj. ze pak muzu dat
> SELECT * FROM tEF_Currency
> a ne
> SELECT * FROM "tEF_Currency"
> (a pritom v seznamu DB bude tEF_Currency a ne TEF_CURRENCY).
>
> Mejaky globalni option?
> Nekde neco nastavit...

firebird a nazvy v uvozovkach

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 23.3.2005 21:37:54

Mam tabulky vytvorene timto zpusobem:

CREATE TABLE "tEF_Currency" (
"idCurrency" INTEGER NOT NULL,
"dcCode" VARCHAR(5) NOT NULL,
"dcName" VARCHAR(60) NOT NULL
);

Nez si hodim smycku, da se nejak nastavit abych
nemusel zadavat ty " a pritom to zustalo
jako tEF_Currency?

tj. ze pak muzu dat
SELECT * FROM tEF_Currency
a ne
SELECT * FROM "tEF_Currency"
(a pritom v seznamu DB bude tEF_Currency a ne TEF_CURRENCY).

Mejaky globalni option?
Nekde neco nastavit...

Radek


TP ASM -> Delphi

[*] delphin(zv)post(tec)cz - 23.3.2005 16:57:32

procedure Code(var A;L:word);
var i:integer;
p:^byte;
begin
p:=(zv)A;
for i:=0 to L-1 do
begin
p^:=p^ xor $aa;
inc(p);
end;
end;

TP ASM -> Delphi

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 23.3.2005 15:59:27

Lauko Stefan wrote:

> Ahojte,
> vedel by mi niekto pomoct upravit tuto procedurku do delphi? Assembler
> neovladam.
>
> Je to z TP.
> {$S-}
> procedure Code(var A; L: word); assembler;
> asm
cld;
mov cx,L;
jcxz (zv)2;
les di,A;
mov al,0aaH;
(zv)1: xor es:[di],al;
inc di;
loop (zv)1;
(zv)2:
> end;
> {$S+}

ze by?

procedure Code(var A; L: word);
var
p:PChar;
i:Integer;
begin
p:=(zv)A;
for i:= 0 to L -1 do
p[i]:=Char(byte(p[i]) xor $aa)
end;


test:

procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:='radek';
Code(s[1],5); // zaxoruj
Code(s[1],5); // vysledek by mel byt stejny
ShowMessage(s); // radek
end;> Dakujem. Lauko.
>
>
>
>

TP ASM -> Delphi

[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 23.3.2005 15:59:27

On Wednesday, March 23, 2005 3:17 PM [GMT+1=CET],
Lauko Stefan <laukosw(zv)naex.sk> wrote:

> Ahojte,
> vedel by mi niekto pomoct upravit tuto procedurku do delphi?
> Assembler neovladam.
>
> Je to z TP.
> {$S-}
> procedure Code(var A; L: word); assembler;
> asm cld; mov cx,L;jcxz (zv)2; les di,A; mov al,0aaH;
> (zv)1: xor es:[di],al; inc di; loop (zv)1;(zv)2:
> end;
> {$S+}

za nic nerusim :-)

procedure Code(var A; L: word); assembler;
asm
CLD;
MOVZX ECX,L
JCXZ (zv)2
MOV EDI,DWORD PTR A
MOV AL,0AAH
(zv)1:
XOR [EDI],AL
INC EDI
LOOP (zv)1
(zv)2:
end;

nebo primo v Pascalu (asi o chlup pomalejsi)

Procedure CodePascal(VAR A; L : Word);
TYPE
TArray = Array [1..1] of Byte;
VAR
AA : TArray absolute A;
I : Integer;
begin
For I := 1 to L do
begin
AA[I] := AA[I] xor $AA;
end;
end;


je to jen proste XORovani retezce o zadane delce znakem AAh

D. Toman


Socket komunikace

[*] Petr BRABEC <petr(zv)elra(tec)cz> - 23.3.2005 16:07:28

Dobry den,
prosim potreboval bych postrcit spravnym smerem.
Pisi program ktery komunikuje se serverem prostrednictvim XML socketu. Pokud je zprava delsi, prijde zpet ve vice socketech. Jak nejlepe, nejelegantneji vyresit poskladani cele zpravy do jednoho XML tagu?
Pouzivam komponentu ClientSocket
Ted to mam takto:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
Var Docasny : String;
begin
Try
Docasny := '';
Docasny := '<START>';
Docasny := Docasny + Socket.ReceiveText;
Docasny := Docasny + '</START>';
XMLTag := LoadDocFromString(Docasny);
ZpracujZpravu;
Except
Docasny := '';
End;
end;

Nejlepsi by byl i nejaky priklad.
Dekuji Petr BRABEC


komponenty pro Firebird

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 23.3.2005 15:47:26

> > Proc ne, ale TIBDataSet se mi libi malinko vic - mam tam
> vsechny akce lepe pod kontrolou (SelectSQL, InserSQL, ModifySQL,
> DeleteSQL).

A jeste bych dodal:
Predstavme si slozity select z vice tabulek.
To se pak normalne neda editovat.

Jenze protoze mam insert, update, delete pod kontrolou, napisu si tam co chci, takze budu modifikovat proste jenom jednu z tech tabulek.
Pravda, nezkousel jsem to, ale to MUSI fungovat.

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)
====================================

komponenty pro Firebird

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 23.3.2005 15:43:25

> > Proc ne, ale TIBDataSet se mi libi malinko vic

> hmm, a funguje tam Edit, Post, Apppend nad jednoduchou tabulkou ?

Jasne :-)

> SelectSQL, InserSQL, ModifySQL, DeleteSQL

Jeste jsem zapomnel na RefreshSQL.
Refresuje jenom jeden radek - a to je prima treba pred zacatkem editace.

> > Pozor, v puvodni instalaci D7 je chyba

> ja mam D5 Prof.

Takze neni ceho se obavat ... :-)
ProviderSupport se pouziva pouze v souvislosti s DataSetProvider + TClientDataSet a to bylo az v D6Pro.
Drive pouze v D5Ent a tam uz nevim, jak se to resilo.

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)
====================================

TP ASM -> Delphi

[*] Lauko Stefan <laukosw(zv)naex.sk> - 23.3.2005 15:17:23

Ahojte,
vedel by mi niekto pomoct upravit tuto procedurku do delphi? Assembler
neovladam.

Je to z TP.
{$S-}
procedure Code(var A; L: word); assembler;
asm cld; mov cx,L;jcxz (zv)2; les di,A; mov al,0aaH;
(zv)1: xor es:[di],al; inc di; loop (zv)1;(zv)2:
end;
{$S+}

Dakujem. Lauko.

PACK na mdb souboru

[*] Zapletal Martin <zapletal(zv)inoma(tec)cz> - 23.3.2005 15:17:23

Uz jsem na to prisel. Stacilo jen
Database.CompactAccessDatabase('soubor.mdb', 'heslo');> Pracuji s mdb databazi a zda se mi ze po mazani zaznamu se velikost
> nezmensuje. Pro praci pouzivam KaDao komponenty a u nich jsem zadne funkce
> typu PACK pro odstraneni smazanych zaznamu nenasel. Jde to nejak?

komponenty pro Firebird

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 23.3.2005 15:13:22

Jan Sebelik wrote:> Proc ne, ale TIBDataSet se mi libi malinko vic - mam tam vsechny akce lepe pod kontrolou (SelectSQL, InserSQL, ModifySQL, DeleteSQL).

hmm, a funguje tam Edit, Post, Apppend nad jednoduchou tabulkou ?

> Pozor, v puvodni instalaci D7 je chyba u TIBCustomDataSet v IProviderSupport - metoda PSExecuteStatement, tusim.
> Kupodivu, v D6Upd2 je to uz opravene, ale do D7 se to nejak nedostalo :-)
> Je treba instalovat opravenou verzi IBX (odkaz z hlavy neznam).

ja mam D5 Prof.

R.

Ochrana pameti proti zapisu

[*] Petr Vones <konference(zv)petrvones(tec)net> - 23.3.2005 15:11:22

From: "Petr Langer" <langer(zv)xdom(tec)cz>
> existuje nejaka moznost ochrany alokovane pameti proti zapisu s tim, ze by
> pokus o zapis do takoveho mista skoncil vyjimkou?
> *Neco* nam obcas prepise kus pameti a potrebovali bychom lokalizovat odkud
> se to deje...

Viz API funkce VirtualProtect, ale pro zacatek bych pouzil napriklad MemProof

Petr Vones

Ochrana pameti proti zapisu

[*] Petr Langer <langer(zv)xdom(tec)cz> - 23.3.2005 15:03:21

Ahojte,
existuje nejaka moznost ochrany alokovane pameti proti zapisu s tim, ze by
pokus o zapis do takoveho mista skoncil vyjimkou?
*Neco* nam obcas prepise kus pameti a potrebovali bychom lokalizovat odkud
se to deje...

Diky,
Petr Langer

komponenty pro Firebird

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 23.3.2005 14:57:20

> Pouzivam TIBDatabase, TIBQuery, ... v zalozce Interbase, bez jakychkoli
> problemu

Proc ne, ale TIBDataSet se mi libi malinko vic - mam tam vsechny akce lepe pod kontrolou (SelectSQL, InserSQL, ModifySQL, DeleteSQL).

Pozor, v puvodni instalaci D7 je chyba u TIBCustomDataSet v IProviderSupport - metoda PSExecuteStatement, tusim.
Kupodivu, v D6Upd2 je to uz opravene, ale do D7 se to nejak nedostalo :-)
Je treba instalovat opravenou verzi IBX (odkaz z hlavy neznam).

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)
====================================

komponenty pro Firebird

[*] TomA?L? Krejzek <tomas.krejzek(zv)kpsys(tec)cz> - 23.3.2005 14:37:19

Radek Cervinka napsal(a):

>Ahoj,
>muzu se zeptat, ktere komponenty pouzivate pro Firebird (1.5)?
>Je jich docela dost ruznych.
>
>
>
Pouzivam TIBDatabase, TIBQuery, ... v zalozce Interbase, bez jakychkoli
problemu

>A posledni vec, nekde jsem cetl ze Firebird ma problemy s VIEW pres vice
>tabulek, bohuzel nijak to tam nebylo rozvedeno. Nejake poznatky?
>
>
>
Pouzivam view pres vicero tabulek a nikdy jsem zadne problemy
nezaznamenal, stejne tak nenam nejmensi problem
se spojovanim vice tabulek do selectu, coz je obdobny pripad

Tomas

sql - posloupnost zaznamu

[*] Kalhous <kalhous(zv)eu(tec)cz> - 23.3.2005 14:17:17

> mam v tabulce nekolik tis. zaznamu, nemaji jednozn. idetifikator, ktery
> vsak
> potrebuji udelat dodatecne, lze ho vytvorit jedinym dotazem?
Pokud je to SQL databaze, tak sama existence tabulky bez jednoznacnych klicu
(PK,PFK) je vaznym hrichem i kdyz server (konkretne IB,FB) se proti tomu
nebouri. Jinak existence PK patri k dobremu mravu.
Nejaky dumyslne zkonstruovany update by asi vymyslet sel, je ovsem riziko ze
kdyz se to nepovede tak se SQL server
zblazni. Takze bych si spis vytvoril generator, do tabulky pridal sloupec ID
a pak ulozenou procedurou nacpal do vsech zaznamu ID=GEN_ID(generator, 1).
Nebo zkusit UPDATE tabulka SET ID=GEN_ID(generator, 1) ?

komponenty pro Firebird

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 23.3.2005 14:03:16

Ahoj,
muzu se zeptat, ktere komponenty pouzivate pro Firebird (1.5)?
Je jich docela dost ruznych.

Me pozadavky: staci mi v podstate tyto tri veci
- neco jako TDatabase (nebo TConnection)
- neco jako TSQLDataSet, ktery ale umi
Edit, Append, Post (vzdy bez join tabulek)
a ma SQL jako TStrings
- neco jako TStoredProc (nejlepe s params)

Mam svuj "framework", ktery pouziva vlastni komponenty, ktere
se dedi (podle projektu a z ruznych duvodu) bud z Adonise nebo
borlandich ADO komponent (chybejici veci se doimplementovavaji v tech
komponentach) oboji proti MSSQL.

No a chtel bych aby mel (resp. uvazuji ze bych mel) dalsi takovou sadu
komponent pro Firebird - jen musim zvolit vhodne vychozi kandidaty.

Resp. jeste tak: pripojuje te se do Firebirdu (Interbase) nativne nebo
pres ADO nebo ODBC? Predpokladam ze nativne. I kdyz uz jsem videl 2 ADO
ovladace.

A posledni vec, nekde jsem cetl ze Firebird ma problemy s VIEW pres vice
tabulek, bohuzel nijak to tam nebylo rozvedeno. Nejake poznatky?

s pranim hezkeho dne
Radek

TTreeView - ulozeni stavu Expanded uzlu do registr

[*] Ing. Igor Vodicka <vodicka(zv)sagit(tec)cz> - 23.3.2005 13:59:13

Ahoj!

Ja na takove pripady pouzivan starsi komponentu TreeNT od Mike Lischkeho. Ta
umi ulozit obsah tree do specialniho souboru typu TNT, kde se ulozi aktualni
rozbaleni stromu i pozice aktualniho node.
Najdes to tady http://www.lischke-online.de/TreeNT.php

Ing. Igor Vodicka
informacni systemy
Nakladatelstvi Sagit
Tel.: 59 6786 001
HTTP://www.sagit(tec)cz/> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Karel Kral
> Sent: Wednesday, March 23, 2005 8:37 AM
>
> Ahoj,
> mam TTreeView pouzite jako menu a rad bych ulozil do registru stav uzlu
> stromu (to, zda je expandovany nebo ne). A pri dalsim startu programu
> zase nacetl. Proste aby uzivatel nasel program v takovem stavu, v kterem
> ho ukoncil.
>
> Nedelal jste to nekdo nekdy? Pripadne prosim o kousek kodu.
> --


shadow databaze

[*] votavaSW <mail(zv)votavasw(tec)com> - 23.3.2005 13:19:11

dobry den,
je mozne vytvorit shadow db na jinem PC v siti bez zapnuteho sdileni
souboru? Lze cestu uvest ve formatu server:c:\shadow\shadow.fdb?
s pozdravem Votava
w2k D5Pro FB1.5


DBGrid - OnDrawCell - jak zjistim, ze se ma vykres

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 23.3.2005 13:15:10

> Jak muzu v metode OnDrawCell zjistit, ze momentalne vykresluju radek, na
> kterem je kurzor?

Melo by to byt podle
State: TGridDrawState
TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

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)
====================================

Firebird 1.0 a errno 104

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 23.3.2005 13:01:09

Ahoj,

mame system postaveny na Firebirdu 1.0 a nekolikrat behem dne
nastane nejaky problem na serveru. V logu je INET/inet_error: read
errno = 104.

Nepodarilo se nam najit souvislost, objevuje se to zrejme
nahodne a projevi se to tak, ze cast pripojenych klientu uplne
prestane komunikovat se serverem, resp. server s nimi. Zajimave
je, ze je rada klientu, ktera normalne funguje dal. Zkousel jsem
na netu najit k tomu nejake postrehy, ale marne. Nevite nekdo,
co znamena ta chyba a pripadne co s tim?

Diky

David Lebeda


Dlouhotrvajici SQL dotaz v threadu

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 23.3.2005 12:37:07

> casti z celkoveho poctu zaznamu v zavislosti na rozmezi Unique klice, coz
> bylo
> samozrejme velice rychle, i s ukazovanim prubehu, ale neuze to opet
pouzit,
> protoze v dotazu je i klauzule ORDER BY.
> Nevim jakym jinym zpusobem uz bychmohl SELECT rozdelit do vice rychlych
> casti....

Mozna pouzit ulozenou proceduru - nekde jsem cetl cosi o technice, kdy do
nejake pomocne tabulky zapises nejaky flag, ktery v prubehu zpracovani
procedury periodicky testujes, a podle jeho stavu proceduru prerusis, treba
vyvolanim vyjimky.

MB


Synapse - odeslani mailu

[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 23.3.2005 12:27:06

> DD,
> mel bych dotaz ohledne Synapse a odesilani mailu.
> Posilam si mail s prilohou (vse v poradku) funkci
>
> var FSynMessage: TMimeMess;
>
> SendToRaw(FSynMessage.Header.From, FSynMessage.Header.ToList.Text,
> FSmtpMailCfg.SmtpServer, FSynMessage.Lines, '', '');
>
> Obcas mail neprojde a me by zajimalo, kde je chyba.
> Jde nekde zjistit, kde chyba nastala (cislo, popis... cokoli)?
> Soket ze TSMTPSend po ukonceni funkce zanikne.

Tak se podivej jak je ta fukce SendToRaw napsana. Je to doslova jen
par radku kodu! Podle teto funkce si snadno napises svuj vlastni kus
kodu, ve kterem si konkretni chyby v SMTP komunikaci osetris jak se
ti zlibi.

SendTo* funkcke slouzi jednak na jednoduche odesilani, druhak jako
priklad pouziti TSMTPsend objektu. Pokud chces vyuzit veskerou silu
Synapsi SMTP implementace, musis pouzit primo TSMTPsend tridu.
--
Lukas Gebauer.

E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.

PACK na mdb souboru

[*] Zapletal Martin <zapletal(zv)inoma(tec)cz> - 23.3.2005 11:57:04

Pracuji s mdb databazi a zda se mi ze po mazani zaznamu se velikost
nezmensuje. Pro praci pouzivam KaDao komponenty a u nich jsem zadne funkce
typu PACK pro odstraneni smazanych zaznamu nenasel. Jde to nejak?

Zapletal Martin

Dlouhotrvajici SQL dotaz v threadu

[*] Pavel Poles <delphi(zv)noni(tec)cz> - 23.3.2005 11:57:04

> Presne tak, resp. to neumoznuje server. Pokud je to "opravdu potreba", da
> se
> operace (dotaz, update) rozdelit do vice fazi, mezi kterymi to muzes
> pripadne prerusit (nebo take zobrazit uzivateli prubeh) a provedene updaty
> rollbacknout.

Zde se bohuzel nejedna o Update neboinsert ale o dlouhotrvajici SELECT.
Ten by se dal rozdelit na nekolik casti pouze pouzitim klauzule FIRST x SKIP
y
ale kazdy z takovychto poddotazu trva skoro stejne dlouho jako celkovy dotaz
vzhledem ke slozitosti WHERE klauzule a k velikosi celkoveho poctu radku z
ktereho vybiram (asi 2mil). Rozdelit jsem to zkousel i podle vybirani vzdy
urcite
casti z celkoveho poctu zaznamu v zavislosti na rozmezi Unique klice, coz
bylo
samozrejme velice rychle, i s ukazovanim prubehu, ale neuze to opet pouzit,
protoze v dotazu je i klauzule ORDER BY.
Nevim jakym jinym zpusobem uz bychmohl SELECT rozdelit do vice rychlych
casti....

Pavel Poles

Synapse - odeslani mailu

[*] Karel Kral <kralkonf(zv)purusmeda(tec)cz> - 23.3.2005 12:05:05


DD,
mel bych dotaz ohledne Synapse a odesilani mailu.
Posilam si mail s prilohou (vse v poradku) funkci

var FSynMessage: TMimeMess;

SendToRaw(FSynMessage.Header.From, FSynMessage.Header.ToList.Text,
FSmtpMailCfg.SmtpServer, FSynMessage.Lines, '', '');

Obcas mail neprojde a me by zajimalo, kde je chyba.
Jde nekde zjistit, kde chyba nastala (cislo, popis... cokoli)?
Soket ze TSMTPSend po ukonceni funkce zanikne.

Dekuji
Otakar Tofel


Odkaz na neznamou ADOConnection

[*] Ladislav Stary <stary(zv)ekodat(tec)cz> - 23.3.2005 11:43:03

Ahoj,

narazil jsem na problem. Ve framu mam krome jineho take komponenty
ADODataSet. Uvazoval jsem, ze bych ten frame udelal univerzalne a tak
jsem v nem vytvoril property JmenoDB typu TADOConnection s tim, ze pri
vytvareni formulare, jehoz soucasti je ten frame, bych nastavil
vlastnost JmenoDB na existujici connection.

Tahle cesta se ale ukazala jako naprosto spatna, protoze vlastnost
Connection na neexistujici object nedovoli Delphi nastavit.
Mate nejake navrhy, jak se toho da dosahnout.

Diky
Ladislav Stary

Pozice v Gridu

[*] PP <pp1(zv)volny(tec)cz> - 23.3.2005 11:39:02

Ahoj,
mam nasledujici problem:
Potrebuji nastavit DBGrid, resp. LookupList tak, aby byly zobrazeny vzdy jen
aktualni a nasledujici polozky. Tedy aby byla v gridu aktualni pozice vzdy
na prvnim radku.
Jde o to, ze kdyz v LookupList pouzivam SearchKeyByKey tak jiz nepotrebuji
videt polozky, ktere nevyhovuji.


Predem dekuji za tip.

Petr Potocek
(D6, FB, IBObjects)

sql - posloupnost zaznamu

[*] votavaSW <mail(zv)votavasw(tec)com> - 23.3.2005 11:19:01

dobry den,
mam v tabulce nekolik tis. zaznamu, nemaji jednozn. idetifikator, ktery vsak
potrebuji udelat dodatecne, lze ho vytvorit jedinym dotazem?
s pozdravem Votava


DBGrid - OnDrawCell - jak zjistim, ze se ma vykres

[*] Karel Pecinka <k.pecinka(zv)seznam(tec)cz> - 23.3.2005 09:56:54

Pouzij TRXDBGrid, tam je udalost onGetCellParams a tam jednoduse udelas
vse co potrebujes. Navic umi pak dalsich peknych veci, napr. zobrazeni
sipecky smeru setrizeni v zahlavi, temer automaticke rovnani podle
libovolneho sloupce - ve spolupraci s memtabulkou, atd.

Priklad:

procedure TBindF.GridGetCellParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; Highlight: Boolean);
var
DS: TDataSet;
begin
if not Highlight then // pokud neni bunka zvyraznena
begin
DS := (Sender as TRxDBGrid).DataSource.DataSet;
if DS.FieldByName('Umisteni').AsString <> '' then
begin
if Background = clWhite then
begin
if Typ = 2 then BackGround := $00FFF2E6 else Background :=
$00DFFFFF;
end;
end;
end;
end;

> radku, tak se ten cely radek zvyrazni modre a pisou se bila
> pismena. Jak muzu v metode OnDrawCell zjistit, ze momentalne
> vykresluju radek, na
> kterem je kurzor?
> Nejak to furt nemuzu najit.

DBGrid - OnDrawCell - jak zjistim, ze se ma vykres

[*] Ales <konference(zv)vasicek.biz> - 23.3.2005 09:54:54

if (gdsSelected in State) ...

Ales

> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Sokol
>
> Jak muzu v metode OnDrawCell zjistit, ze momentalne
> vykresluju radek, na
> kterem je kurzor?

Dlouhotrvajici SQL dotaz v threadu

[*] Martin Schayna <mschayna(zv)aktis(tec)cz> - 23.3.2005 09:46:53

Martin Burle wrote:
>>>Pomoci TIBSQL spoustim dlouhotrvajici dotaz nad serverem Firebird 1.5
>>>Dotaz se spousti v samostatnem threadu. Pokud ukoncim aplikaci pred
>>>dokoncenim threadu, aplikace se neukonci, ceka na dobehnuti threadu.
>>
> Presne tak, resp. to neumoznuje server. Pokud je to "opravdu potreba", da se
> operace (dotaz, update) rozdelit do vice fazi, mezi kterymi to muzes
> pripadne prerusit (nebo take zobrazit uzivateli prubeh) a provedene updaty
> rollbacknout.

Kdyz to zobecnime na celou rodinku IB/FB, tak situace je takovato:

IB 6 a nize, FB 1.0 - nelze prerusit dotaz

IB 7 a vyse - lze prerusit bezici dotaz tak, ze se pripojis podruhe
a vykonas SQL prikaz nad systemovymi tabulkami, podrobnosti zde:
http://www.dbginc.com/tech_pprs/ib7/IB7.htm

FB 1.5 - *melo by jit* prerusit bezici dotaz pomoci volani API
funkce do klientske knihovny, bohuzel dokumentace veskera zadna a
zatim se nam to nepodarilo

FB 2.0 - ???

Mozna by se mohl vyjadrit Pavel Cisar, tedy jestli nas stale jeste
cte :->

Martin Schayna

TTreeView - ulozeni stavu Expanded uzlu do registr

[*] Jan Fiala <jan.fiala(zv)wo(tec)cz> - 23.3.2005 09:40:52

23.3.2005 Karel Kral:
> Ahoj,
> mam TTreeView pouzite jako menu a rad bych ulozil do registru stav uzlu
> stromu (to, zda je expandovany nebo ne). A pri dalsim startu programu
> zase nacetl. Proste aby uzivatel nasel program v takovem stavu, v kterem
> ho ukoncil.

> Nedelal jste to nekdo nekdy? Pripadne prosim o kousek kodu.

Zalezi na tom, jak moc se meni obsah TreeView.
Pokud je staticky, staci ulozit seznam AbsoluteIndex, pokud se meni
obsah a Level 0 zustava staly, tak treba ulozit seznam jmen


--
Jan Fiala
mailto:jan.fiala(zv)wo(tec)cz


Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 23.3.2005 09:36:52

Staci priklad ??? :)))

function TTypeEdit.Validate(var Value: Variant; Silent: boolean;
CheckRequired: boolean): boolean;
begin
Result := false;
try
DoValidate(Value, CheckRequired);
if Assigned(FOnValidate) then
FOnValidate(self);
Result := true;
except
on E: EValidateError do
begin
if (not Silent) and (Length(E.Message) <> 0) then
begin
Self.SetFocus;
Application.MessageBox(PChar(E.Message), 'Chyba', MB_OK +
MB_ICONERROR);
if E.ErrorCode <> 0 then
raise;
end;
end;
end;
end;

procedure TTypeEdit.DoValidate(var Value: Variant; CheckRequired: boolean);
var
i: integer;
e: extended;
c: currency;
SL: TStringList;
y, m, d: word;
h, s, ms: word;
StrVal: string;
StrVal1: string;
begin
if VarIsNull(Value) or VarIsEmpty(Value) then
StrVal := ''
else
StrVal := Value;
StrVal1 := StrVal;
if CheckRequired then
if (Length(StrVal) = 0) and Required then
DoValidateError(ERequiredMsg);
//Text validation
if Length(StrVal) <> 0 then
begin
case FEditType of
etInteger:
try
StrToInt(StrVal);
except
on E: EConvertError do
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[IntToStr(Low(Integer)), IntToStr(High(Integer))]));
end;
etNumericChar:
try
StrToInt64(StrVal);
if FFillLeadZeroes and (Length(Text) < FDigits) then
Text := StrFillChar('0', FDigits - Length(Text)) + Text;
except
on E: EConvertError do
DoValidateError(EValidateErrorMsg);
end;
etSmallInt:
try
i := StrToInt(StrVal);
if (i < Low(SmallInt)) or (i > High(Smallint)) then
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[IntToStr(Low(SmallInt)), IntToStr(High(SmallInt))]));
except
on E: EConvertError do
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[IntToStr(Low(SmallInt)), IntToStr(High(SmallInt))]));
end;
etFloat:
try
e := StrToFloat(StrVal);
if (e < MinSingle) or (e > MaxSingle) then
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinSingle), FloatToStr(MaxSingle)]));
except
on E: EConvertError do
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinSingle), FloatToStr(MaxSingle)]));
end;
etDoublePrecision:
try
e := StrToFloat(StrVal);
if (e < MinDouble) or (e > MaxDouble) then
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinDouble), FloatToStr(MaxDouble)]));
except
on E: EConvertError do
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinDouble), FloatToStr(MaxDouble)]));
end;
etNumeric:
try
c := StrToCurr(StrVal);
if (c < MinCurrency) or (c > MaxCurrency) then
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinCurrency), FloatToStr(MaxCurrency)]));
except
on E: EConvertError do
DoValidateError(Format(EValidateErrorRangeFromToMsg,
[FloatToStr(MinCurrency), FloatToStr(MaxCurrency)]));
end;
etDate:
begin
SL := TStringList.Create;
try
DecodeDate(Date, y, m, d);
breakApart(StrVal, DateSeparator, SL);
case SL.Count of
1: StrVal := StrVal + iff(StrVal[Length(StrVal)] =
DateSeparator, '', DateSeparator) + IntToStr(m) + DateSeparator +
IntToStr(y);
2: StrVal := StrVal + iff(StrVal[Length(StrVal)] =
DateSeparator, '', DateSeparator) + IntToStr(y);
3:
begin
y := StrToInt(SL.Strings[2]);
if y < 1899 then
DoValidateError(Format(EValidateErrorRangeFromMsg,
[DateToStr(0)]));
end;
end;
finally
freeAndNil(SL);
end;
try
StrToDate(StrVal);
except
on E: EConvertError do
DoValidateError(EValidateErrorMsg);
end;
end;
etTime:
begin
SL := TStringList.Create;
try
BreakApart(Text, TimeSeparator, SL);
DecodeTime(now, h, m, s, ms);
case SL.Count of
1: StrVal := Text + iff(StrVal[length(StrVal)] =
TimeSeparator, '', TimeSeparator) + IntToStr(M) + iff(fTimeWithSeconds,
TimeSeparator + IntToStr(S), '');
2: StrVal := iff((StrVal[length(StrVal)] = TimeSeparator),
iff(fTimeWithSeconds, StrVal + IntToStr(S), Copy(StrVal, 1, (Length(Text) -
1))), iff(fTimeWithSeconds, StrVal + TimeSeparator + IntToStr(S), StrVal));
end;
finally
freeAndNil(SL)
end;
try
StrToTime(StrVal);
except
on E: EConvertError do
DoValidateError(EValidateErrorMsg);
end;
end;
etCharacter: ;
end;
end;
if StrVal <> StrVal1 then
Value := StrVal;
end;

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Karel Kral
> Sent: Wednesday, March 23, 2005 8:43 AM
>
> Ja bych se jen pridal k Petrovi Vonesovi - ted vubec
> nediskutuju a poloze except a finally. Spis mam dalsi otazku.
>
> Tohle osetrovani vyjimek je podle mne dost na nic. Aby sis
> zajistil rozumne chovani programu, je nutne vyjimku znovu
> vyvolat a vyslednou vyjimku pak osetrit az nekde na hodne
> hodne vysoke urovni programu.
> Pokud mozno pridam k textu vyjimky upresnujici informace a
> zase ji vyvolam.
>
> x := TStringList.Create;
> try
> x.LoadFromFile(...);
> except
> on E: Exception do
> raise Exception.CreateFmt('Chyba pri nacitani souboru %s:
> %s', [FileName, E.Message]); end; x.Free;
>
> Mimochodem - vec na dalsi diskusi: Toto osetreni chyb je
> pekne, jenomze se pri nem ztraci informace o TYPU puvodni
> vyjimky. Co s tim delate?

DBGrid - OnDrawCell - jak zjistim, ze se ma vykres

[*] Jiri Sokol <js-delphi(zv)hotmail(tec)com> - 23.3.2005 09:26:51

Ahoj.
Mam takovy maly problem. V aplikaci jsem chtel urcite radky, bunky atd.
zvyraznovat podle jejich obashu. K otmu jsem pouzil vlastni vykreslovani
komponenty DBGrid.
Bohuzel jsem timto zpusobem prisel o to, ze kdyz je uzivatel na nejakem
radku, tak se ten cely radek zvyrazni modre a pisou se bila pismena.
Jak muzu v metode OnDrawCell zjistit, ze momentalne vykresluju radek, na
kterem je kurzor?
Nejak to furt nemuzu najit.
Diky za nakopnuti.
Jirka
-----------------------------------------------------------
Ing. Jiri Sokol; jiri.sokol(zv)seznam(tec)cz; 972 231 187
D6ProfSP3; WinXPSP2; FB 1.5.2
programator amater

_________________________________________________________________
Emotikony a pozadi programu MSN Messenger ozivi vasi konverzaci.
http://messenger.msn(tec)cz/

OLE v delphi

[*] dam <arthur(zv)argh(tec)cz> - 23.3.2005 09:16:50

Ahoj,
ikdyz je to trochu zvrhlost, tak je po mne pozadovano, aby byl muj ActiveX
(ten uz je vicemene hotovy) vlozitelny jako objekt treba do Wordu atp. A
priznam se, ze absolutne nevim, jak na to. Taknejak jsem zil v tom, ze pro
to nejakou podporu delphi maj, ja ji treba jen nevidim. Nejspis staci jen
upravit registraci nebo doplnit nejaky dalsi interface.
Dik za tipy
David


Except a finally v jednom - jak je to spravne?

[*] Karel Kral <kralkonf(zv)purusmeda(tec)cz> - 23.3.2005 08:42:47

Ja bych se jen pridal k Petrovi Vonesovi - ted vubec nediskutuju a
poloze except a finally. Spis mam dalsi otazku.

Tohle osetrovani vyjimek je podle mne dost na nic. Aby sis zajistil
rozumne chovani programu, je nutne vyjimku znovu vyvolat a vyslednou
vyjimku pak osetrit az nekde na hodne hodne vysoke urovni programu.
Pokud mozno pridam k textu vyjimky upresnujici informace a zase ji vyvolam.

x := TStringList.Create;
try
x.LoadFromFile(...);
except
on E: Exception do
raise Exception.CreateFmt('Chyba pri nacitani souboru %s: %s',
[FileName, E.Message]);
end;
x.Free;

Mimochodem - vec na dalsi diskusi: Toto osetreni chyb je pekne, jenomze
se pri nem ztraci informace o TYPU puvodni vyjimky. Co s tim delate?

> x := TStringList.Create;
> try
> x.LoadFromFile(...);
> except
> on E: Exception do
> ShowMessage('Chyba pri nacitani souboru:'#10 + E.Message);
> end;
> x.Free;
>
--
______________________________________________________
Karel Kral, reditel IT / IT manager
PURUS-MEDA, s.r.o., Palackeho 174, 621 00 Brno, CZ
E-Mail: kral(zv)purusmeda(tec)cz
______________________________________________________


TTreeView - ulozeni stavu Expanded uzlu do registr

[*] Karel Kral <kralkonf(zv)purusmeda(tec)cz> - 23.3.2005 08:36:47

Ahoj,
mam TTreeView pouzite jako menu a rad bych ulozil do registru stav uzlu
stromu (to, zda je expandovany nebo ne). A pri dalsim startu programu
zase nacetl. Proste aby uzivatel nasel program v takovem stavu, v kterem
ho ukoncil.

Nedelal jste to nekdo nekdy? Pripadne prosim o kousek kodu.
--
______________________________________________________
Karel Kral, reditel IT / IT manager
PURUS-MEDA, s.r.o., Palackeho 174, 621 00 Brno, CZ
E-Mail: kral(zv)purusmeda(tec)cz
______________________________________________________


MSSQL - oriznuti nul

[*] Dalibor <dalibor(zv)torola(tec)cz> - 23.3.2005 07:52:44

Ahoj,
to neni ono. Takhle mi to orizne vse za desetinou carkou.
Pr. z 1,500m mi udela 1m a ja potrebuji 1,5m


> CAST(CAST(V.DELKA AS INTEGER) AS VARCHAR(10))+V.JEDNOTKA ....
>
>
> Jirka Virt


MSSQL - oriznuti nul

[*] Svoboda Jiri <jsvoboda(zv)lekis(tec)cz> - 23.3.2005 07:50:43

Na MSSQL je to velmi jednoduche.Pro upravu (zaokrouhleni) pouziji fci ROUND
a pak staci vysledek pretypovat na to co chci.
Napr.

ROUND(15.2487,2) = 15.2500

CAST(ROUND(15.2487,2) as Numeric(15,2)) = 15.25
CAST(CAST(ROUND(15.2487,2) as Numeric(15,2)) as varchar) = "15.25"

Dokonce nemusim pouzit ani fci ROUND,nebot implicitne je pri konverzi na
jiny NUMERIC pouzita:

Select CAST(15.2487 as Numeric(15,2)) = "15.25"

JS

Od: "Dalibor" <dalibor(zv)torola(tec)cz>
> Ahoj, kdyz v MSSQL udelam
> Cast(V.DELKA as varchar )+V.JEDN_DELKA as DELKA,
> Zobrazi se mi Delka se vsemi nulami: 40,000m.
> Jak docilim toho aby mi to udelalo bez tech nul? Tedy 40m,
> pripadne 40,4m, atd.

Except a finally v jednom - jak je to spravne?

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 23.3.2005 07:32:42

> Tato diskuse evidentne sklouzava z puvodniho tematu buhvikam...
> Znovu - nejde mi o elegantni reseni, nejde mi o prakticke pouziti, nejde mi
> zazite zvyky. Jde mi jen a jen o vysvetleni proc je pouziti finally po sekci
> except z principu tak neuveritelne vyhodne. Zatim mi to nikdo neobjasnil -
> krome vysvetleni, ze pri pouziti exit dojde k vyvolani I finally sekce a
> take ze mam jakymsi velmi podivnym a pro me nepochopitelnym zpusobem
> odchycenou pripadnou chybu pri zpracovani vyjimky...

Ahoj,

IMHO je to lepsi z hlediska snazsiho zavleceni chyby v budoucnu.
Uvedu priklad. Programator napise

x := TStringList.Create;
try
x.LoadFromFile(...);
except
on E: Exception do
ShowMessage('Chyba pri nacitani souboru:'#10 + E.Message);
end;
x.Free;

Je to dobre, dela to to, co ma a x.Free se zavola vzdy, kdyz nebudeme
uvazovat vznik chyby uvnitr except casti.

Jenze programator da vypoved, aplikaci prevezme kolega zvykly na jiny
styl programovani a dejme tomu zjisti, ze je treba krome LoadFromFile
jeste zavolat proceduru Zpracovani. Podiva se na except blok a usoudi,
ze jeho cilem je chytat chyby pri LoadFromFile, takze upravu provede
takto:

x := TStringList.Create;
try
x.LoadFromFile(...);
except
on E: Exception do
ShowMessage('Chyba pri nacitani souboru:'#10 + E.Message);
end;
Zpracovani(x);
x.Free;

A uz mame problem vznikly z nepozornosti nebo neprilis dukladneho
odhadu dosahu pouzite konstrukce.

Jinak bohuzel vim, ze napr. spousta mych kolegu finally sekce moc
nepouziva. Pak vznikaji aplikace s takovymto obsahem
...
DisablujTlacitka;
NejakaCinnost;
EnablujTlacitka;

Kdyz pri te cinnosti vznikne vyjimka, zustanou v aplikaci uz trvale
disablovana tlacitka a nezbyde, nez ji ukoncit a znovu spustit. Proto
jsem zastancem dusledneho pouzivani finally sekci u vsech cinnosti
typu "obal", tj. kdyz na zacatku neco vytvorim, disabluju apod. a na
konci to mam zase zrusit nebo enablovat, tak to udelat vzdy ve finally
bloku, a to i v pripade, ze v tom finally bloku bude (zatim) jen except
blok. Aby se na to pak v budoucnu nezapomnelo.

David Lebeda

OT: Data s extenzi DTA

[*] Fait <develop(zv)lmss(tec)cz> - 22.3.2005 23:58:08

Ahoj,
dostal se mi pod klavesy soubor s extenzi neco.DTA. Nevite nahodou nekdo o
jaky format dat by se mohlo jednat?

Jirka

Komponenta, cara, kostecky..

[*] Radomir Ludva <radomir.ludva(zv)seznam(tec)cz> - 22.3.2005 21:35:57

Je mozne napsat komponentu, ktera by se ve formulari pri navrhu aplikace
netvarila jako ctverect? Kazdy objekt vkladany na formular je
okosteckovany (6 - "kostek") pro zmenu sirky/vysky.. Chtel bych misto
toho jen dve kostecky pro komponentu podobnou obycejne care.. Napada
nekoho jak to udelat, pokud chci pouzit jen dva "zachytne" body
(kostecky) v dobe navrhu aplikace?
RL

Dlouhotrvajici SQL dotaz v threadu

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 22.3.2005 19:45:50

> > Pomoci TIBSQL spoustim dlouhotrvajici dotaz nad serverem Firebird 1.5
> > Dotaz se spousti v samostatnem threadu. Pokud ukoncim aplikaci pred
> > dokoncenim threadu, aplikace se neukonci, ceka na dobehnuti threadu.
>
> Drtiva vetsina databazovych komponent neumoznuje prerusit operaci.

Presne tak, resp. to neumoznuje server. Pokud je to "opravdu potreba", da se
operace (dotaz, update) rozdelit do vice fazi, mezi kterymi to muzes
pripadne prerusit (nebo take zobrazit uzivateli prubeh) a provedene updaty
rollbacknout.

MB


Konstrukce framu

[*] Jakub Cermak <cermiforum(zv)centrum(tec)cz> - 22.3.2005 19:41:49

Diky, pomohlo to. A zase jsem o neco moudrejsi :)

Petr Vones napsal(a):

> Opet, nelze predavat Delphi objekty z DLL. Musis pouzit balicky, aby byla
> definice jedne tridy pouze na jednom miste (tedy v BPL) a ne dvakrat, v EXE
> a DLL. Potom je "EXE.TFrame" neco zcela jineho nez "DLL.TFrame".

--
S pozdravem

Jakub Cermak
ICQ 159971304
http://cermi.wz(tec)cz

Dlouhotrvajici SQL dotaz v threadu

[*] delphin(zv)post(tec)cz - 22.3.2005 19:17:47

> Pomoci TIBSQL spoustim dlouhotrvajici dotaz nad serverem Firebird 1.5
> Dotaz se spousti v samostatnem threadu. Pokud ukoncim aplikaci pred
> dokoncenim threadu, aplikace se neukonci, ceka na dobehnuti threadu.

Drtiva vetsina databazovych komponent neumoznuje prerusit operaci.

> 1) Lze nejak komponente TIBSQL rici aby prerusila prave probihajici dotaz?
> 2) Jakym zpusobem lze informovat thread ze se ukoncuje aplikace?
> Predstavoval bych si to prepsanim nejake virtualky TThread, ale nevim
> ktere...

Thread o tom lze informovat napriklad zavolanim Terminate, specializovana
metoda na to neni.
Lepsi reseni je pres Event nebo Message.

Protoze databazovou operaci prakticky nelze prerusit, je vhodne v te dobe
nedat uzivateli sanci ukoncit aplikaci.

Dlouhotrvajici SQL dotaz v threadu

[*] Pavel Poles <delphi(zv)noni(tec)cz> - 22.3.2005 18:51:40

Zdravim konferenci,

Pomoci TIBSQL spoustim dlouhotrvajici dotaz nad serverem Firebird 1.5
Dotaz se spousti v samostatnem threadu. Pokud ukoncim aplikaci pred
dokoncenim threadu, aplikace se neukonci, ceka na dobehnuti threadu.

1) Lze nejak komponente TIBSQL rici aby prerusila prave probihajici dotaz?
2) Jakym zpusobem lze informovat thread ze se ukoncuje aplikace?
Predstavoval bych si to prepsanim nejake virtualky TThread, ale nevim ktere...

Predem dekuji za rady

Pavel Poles

MSSQL - oriznuti nul

[*] Jiri Virt <virt(zv)volny(tec)cz> - 22.3.2005 18:23:38

CAST(CAST(V.DELKA AS INTEGER) AS VARCHAR(10))+V.JEDNOTKA ....


Jirka Virt

Konstrukce framu

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 18:01:37

From: "Jakub Cermak" <cermiforum(zv)centrum(tec)cz>
> Mam DLL s exportovanou funkci KonstruujFrame, ktera vytvori ramec:
> function KonstruujFrame(owner:TComponent):TBaseFrame;
> begin
> ShowMessage(owner.Name); //jen pro testovani
> result:=TMyFrame.Create(owner);
> end;
>
> Kdyz ale tu funkci zavolam normalne z programu, jako parametr mu dam
> hlavni form, tak mi to hodi nekde v konstruktoru framu

Opet, nelze predavat Delphi objekty z DLL. Musis pouzit balicky, aby byla
definice jedne tridy pouze na jednom miste (tedy v BPL) a ne dvakrat, v EXE
a DLL. Potom je "EXE.TFrame" neco zcela jineho nez "DLL.TFrame".

Petr Vones

Konstrukce framu

[*] Jakub Cermak <cermiforum(zv)centrum(tec)cz> - 22.3.2005 17:55:36

Mam DLL s exportovanou funkci KonstruujFrame, ktera vytvori ramec:
function KonstruujFrame(owner:TComponent):TBaseFrame;
begin
ShowMessage(owner.Name); //jen pro testovani
result:=TMyFrame.Create(owner);
end;

Kdyz ale tu funkci zavolam normalne z programu, jako parametr mu dam
hlavni form, tak mi to hodi nekde v konstruktoru framu
EInvalidOperation: Control 'BaseFrame' has no parent window. Call stack
v JEDI Exception Dialogu konci na
[005B2C9B] Controls.TWinControl.CreateWnd (Line 5893, "Controls.pas"
+ 9) + $3E
Zajimavy je ze to ShowMessage ve funkci konstruujFrame normalne zobrazi
nazev hlavniho formu.
Co s tim??

--
S pozdravem

Jakub Cermak
ICQ 159971304
http://cermi.wz(tec)cz


Obraceny tisk sloupcu ve FastReports

[*] Karel Pecinka <k.pecinka(zv)seznam(tec)cz> - 22.3.2005 17:53:35

Je to brnkacka - staci dat prvnimu sloupci posun zleva napr. 9,50 a
druhemu -9,50. :)

Karel

> potreboval bych tisknout ve FastReports 3 do vice sloupcu
> tak, aby byl prvni sloupec vpravo a druhy vlevo na strance.
> Je to kvuli tisku stitku na obe strany. Jak na to?
>
> Diky za radu. Karel


Obraceny tisk sloupcu ve FastReports

[*] Karel Pecinka <k.pecinka(zv)seznam(tec)cz> - 22.3.2005 17:43:35

Prosim o radu:

potreboval bych tisknout ve FastReports 3 do vice sloupcu tak, aby byl
prvni sloupec vpravo a druhy vlevo na strance. Je to kvuli tisku stitku
na obe strany. Jak na to?

Diky za radu. Karel


Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 17:41:34

Tato diskuse evidentne sklouzava z puvodniho tematu buhvikam...
Znovu - nejde mi o elegantni reseni, nejde mi o prakticke pouziti, nejde mi
zazite zvyky. Jde mi jen a jen o vysvetleni proc je pouziti finally po sekci
except z principu tak neuveritelne vyhodne. Zatim mi to nikdo neobjasnil -
krome vysvetleni, ze pri pouziti exit dojde k vyvolani I finally sekce a
take ze mam jakymsi velmi podivnym a pro me nepochopitelnym zpusobem
odchycenou pripadnou chybu pri zpracovani vyjimky...

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Igor Kapoun
> Sent: Tuesday, March 22, 2005 4:11 PM
>
> > Ja mam rad zdrojove kody, ktere maji rad a pouzivat try finally na
> > neco jineho nez je korektni obslouzeni stavu po vyjimce (tj.
> > dealokace nebo neco podobneho) povazuji za zverstvo. Pokud to ale
> > nekomu vyhovuje - jak jsem psal - proti gustu...
>
> A jake je tedy elegantnejsi reseni, kdyz mam treba proceduru,
> ze ktere muzu vypadnout na deseti mistech a na konci chci v
> kazdem pripade provest nejake akce?
>
> Igor

MSSQL - oriznuti nul

[*] lelicek(zv)volny(tec)cz - 22.3.2005 17:31:33

Tezko,
pokud je V.Delka numeric( neco, 3), tak bude prevod vzdy s nulami.
Pokud pouzijes cast( V.Delka AS float) nabehnouti desetina mista
diky rozvoji 2 -> 10.
Asi ti nezbude nez si na to napsat vlastni fukci.

Pavel

PS: tohle neni best practise, server muze byt provozovan pod jinou
jazykovou verzi OS nez klient a potom '.', ',' a formaty datumu
jsou trochu podivne.

Od: "Dalibor" <dalibor(zv)torola(tec)cz>
> Ahoj, kdyz v MSSQL udelam
> Cast(V.DELKA as varchar )+V.JEDN_DELKA as DELKA,
> Zobrazi se mi Delka se vsemi nulami: 40,000m.
> Jak docilim toho aby mi to udelalo bez tech nul? Tedy 40m,
> pripadne 40,4m, atd.

Except a finally v jednom - jak je to spravne?

[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 22.3.2005 17:13:32


----- Original Message -----
From: "Igor Kapoun" <igor.kapoun(zv)volny(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, March 22, 2005 4:11 PM
Subject: Re: Except a finally v jednom - jak je to spravne?>> Ja mam rad zdrojove kody, ktere maji rad a pouzivat try
>> finally na neco jineho nez je korektni obslouzeni stavu po vyjimce
>> (tj.
>> dealokace nebo neco podobneho) povazuji za zverstvo. Pokud to ale
>> nekomu
>> vyhovuje - jak jsem psal - proti gustu...
>
> A jake je tedy elegantnejsi reseni, kdyz mam treba proceduru, ze
> ktere muzu
> vypadnout na deseti mistech a na konci chci v kazdem pripade provest
> nejake
> akce?


---

repeat

if X then
break;

...

if Y then
break;
...

until true;

...


---

D. Toman

Except a finally v jednom - jak je to spravne?

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 16:19:28

From: "Igor Kapoun" <igor.kapoun(zv)volny(tec)cz>
> A jake je tedy elegantnejsi reseni, kdyz mam treba proceduru, ze ktere muzu
> vypadnout na deseti mistech a na konci chci v kazdem pripade provest nejake
> akce?

Napriklad ten kod umistit do jine metody/lokalni procedury.

Petr Vones

Except a finally v jednom - jak je to spravne?

[*] Igor Kapoun <igor.kapoun(zv)volny(tec)cz> - 22.3.2005 16:11:27

> Ja mam rad zdrojove kody, ktere maji rad a pouzivat try
> finally na neco jineho nez je korektni obslouzeni stavu po vyjimce (tj.
> dealokace nebo neco podobneho) povazuji za zverstvo. Pokud to ale nekomu
> vyhovuje - jak jsem psal - proti gustu...

A jake je tedy elegantnejsi reseni, kdyz mam treba proceduru, ze ktere muzu
vypadnout na deseti mistech a na konci chci v kazdem pripade provest nejake
akce?

Igor



--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.8.0 - Release Date: 21.3.2005


konverze v synapsi

[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 22.3.2005 15:59:26

> Pochopil jem to tak, ze v AnsiStringu mam vlastne ulozene unicode hodnoty
> "rozdelene po bytech", nebo jak bych to rekl. Proste, kdyz se budu posouvat
> nejakym indexem po tom AnsiStringu, tak pro nejake idx dostanu napr. spodni
> hodnotu unicode znaku a pro idx+1 tu horni.
[...]
> Chapu to dobre ??

Chapes to naprosto spravne! ;-)
--
Lukas Gebauer.

E-mail: gebauerl(zv)mlp(tec)cz
http://www.ararat(tec)cz/synapse/ - Ararat Synapse - TCP/IP Lib.

Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 15:21:23

Proc ne ? Pro prehlednost (abych nemusel pouzivat GoTo :-)), kvuli
predchazeni chybam z opomenuti atd., kvuli zvyrazneni toho, ze se jedna o
finalizacni sekci procedury...

Zdravim

Jiri Foldyna

> Tak jinak - me nejde o to, ze by sekvence except - finally zpusobovala
> nejake problemy. Jde mi o princip proc vnejsi sekci finally vubec v
> nekterych prikladech (ktere tady byly uvadeny) psat.
>
> S pozdravem
>
> Milan Tomes
>
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> > Sent: Tuesday, March 22, 2005 2:27 PM
> >
> > Se mi zda, ze nejak jeden o koze, druhy o voze :-))
> >
> > Nechapu, jaky problem muze zpusobit konstrukce napr.
> >
> > Screen.Cursor := crHourGlass;
> > try
> > try
> > except
> > exit;
> > end;
> >
> > try
> > except
> > ShowMessage();
> > end;
> >
> > try
> > except
> > end;
> > finally
> > Screen.Cursor := crDefault;
> > end;
>
>
>
>

konverze v synapsi

[*] l. vlcek <l.vlcek(zv)noel-plus(tec)cz> - 22.3.2005 15:13:22

zdravim,

jen se chci ujistitm ze jsem pochopil veci tak jak byly (asi) myslene....

V synapsi jsem nasel funkci :

function StringToWide(const Value: AnsiString): WideString;

s vysvetlenim:

Convert binary string with unicode content to WideString.

Pochopil jem to tak, ze v AnsiStringu mam vlastne ulozene unicode hodnoty
"rozdelene po bytech", nebo jak bych to rekl. Proste, kdyz se budu posouvat
nejakym indexem po tom AnsiStringu, tak pro nejake idx dostanu napr. spodni
hodnotu unicode znaku a pro idx+1 tu horni.

Analogicky funkce:

function WideToString(const Value: WideString): AnsiString;

funguje inverzne...

Chapu to dobre ??

diky za pomoc

--
L.V.
jezevec

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 15:13:22

Tak jinak - me nejde o to, ze by sekvence except - finally zpusobovala
nejake problemy. Jde mi o princip proc vnejsi sekci finally vubec v
nekterych prikladech (ktere tady byly uvadeny) psat.

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 2:27 PM
>
> Se mi zda, ze nejak jeden o koze, druhy o voze :-))
>
> Nechapu, jaky problem muze zpusobit konstrukce napr.
>
> Screen.Cursor := crHourGlass;
> try
> try
> except
> exit;
> end;
>
> try
> except
> ShowMessage();
> end;
>
> try
> except
> end;
> finally
> Screen.Cursor := crDefault;
> end;

MSSQL - oriznuti nul

[*] Zalesak Tomas <tomas.zalesak(zv)lcs(tec)cz> - 22.3.2005 15:35:24

> kdyz v MSSQL udelam
> Cast(V.DELKA as varchar )+V.JEDN_DELKA as DELKA
>
> Zobrazi se mi Delka se vsemi nulami: 40,000m
>
> Jak docilim toho aby mi to udelalo bez tech nul? Tedy 40m
> pripadne 40,4m, atd

CAST(V.DELKA AS VARCHAR)+CAST(CAST(V.JEDN_DELKA AS FLOAT) AS VARCHAR(30)) AS DELKA

Tomas Zalesak

Except a finally v jednom - jak je to spravne?

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 22.3.2005 15:31:24


> Aha - takze pokud si tento vyrok trosku rozsirim, tak zcela bezne pouzivas
> goto a spol. OK - proti gustu... :))))) Goto jsem naposledy pouzil v basicu

ne to z toho neplyne, goto nepouzivam
ale zato nekdy pouzivam Exit, ktery projde vedome finally a tam
uvolni object, pamet.... Velmi to zlepsuje prehlednost programu
(vetsinou v situacich kdy uprostred metody musim reagovat na neco...
a zeptam se uzivatele a ten rekne ne, tak dam exit
a ve finally se treba zavrou streamy, uvolni kdovi co apod.
)
Ma to tu vyhodu, ze pokud pak musim neco menit v metode tak uvolnovani
je jen na jednom miste (a ne na nekolika), takze na nic nezapomenu.


Pritom vetsinou pouzivam
if assigned(oObject) then
FreeAndNil(oObject)

> na IQ151 :)))) Ja mam rad zdrojove kody, ktere maji rad a pouzivat try
> finally na neco jineho nez je korektni obslouzeni stavu po vyjimce (tj.
> dealokace nebo neco podobneho) povazuji za zverstvo. Pokud to ale nekomu

ono vyse uvedene je v principu vyjimka :), ja mam radsi kdyz program
"tece" rovnou a tak casto pouzivam treba predplneni promenne a IF nez IF
THEN ELSE, vyskakuji z metod pomoci Exit, pouzivam Continue a Break v
cyklech a podobne

> vyhovuje - jak jsem psal - proti gustu...
Spravne. Ale podle uvedenych reakci asi nejsem sam.

Radek


MSSQL - oriznuti nul

[*] Dalibor <dalibor(zv)torola(tec)cz> - 22.3.2005 15:17:23

Ahoj, kdyz v MSSQL udelam
Cast(V.DELKA as varchar )+V.JEDN_DELKA as DELKA,
Zobrazi se mi Delka se vsemi nulami: 40,000m.

Jak docilim toho aby mi to udelalo bez tech nul? Tedy 40m, pripadne 40,4m, atd.

Poradite?
Dik

Dalibor

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 15:05:21



> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Petr Vones
> Sent: Tuesday, March 22, 2005 2:53 PM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: Re: Except a finally v jednom - jak je to spravne?
>
> From: "Milan Tomes" <delphi(zv)haida(tec)cz>
> > Konstrukci, kterou jsi zde uvedl nemohu pouzit bez slovicka
> raise a to
> > z duvodu, ze osetruji uplne vsechny vyjimky a I takove, ktere napr.
> > vubec nesouvisi s blokem, ktery osetruji, ale souvisi napr.
> s funkci,
> > kterou dany blok vnitrne vola. A na druhou stranu -
> nehodlam vypisovat
> > vsechny typy vyjimek abych na ne nejak reagoval... :)))
>
> Coz je dalsi chyba. Typicky, pokud vubec osetruji nejakou
> vyjimku, tak bych se mel zamyslet nad tim proc to delam.
> Osetrovat vsechny vyjimky (jinak nez nekde na nejvyssi urovni
> zalogovat neosetrenou vyjimku) je znamkou spatneho navrhu.
> Nemuzes prece vedet jak spravne reagovat na vsechny mozne vyjimky.
>
> Petr Vones
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 14:59:21

OK - souhlasim... To je to same, jako pouzivat freeAndNil I na lokalnich
promennych (coz delam). Me slo jen o princip...

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Winsoft
> Sent: Tuesday, March 22, 2005 2:25 PM
>
> > A jsme u toho zase :))) Proc je v procedure Run1 vubec finally ???
> > Vzdyt
> tam
> > vubec nemusi byt (alespon v tomto pripade)...
> > Ve vysledku je ten program vlastne vykonan takto:
> >
> > procedure Run1;
> > begin
> > try
> > <blok, ve kterem nemuze dojit k vyjimce>
> > finally
> > WriteLn('Finally');
> > end;
> > end;
>
> try..finally sluzi na uvolnenie alokovanych zdrojov, napr.
>
> with TMyForm.Create do
> try
> ShowModal;
> finally
> Free;
> end;
>
> Je dobrym zvykom tento prikaz v takom pripade pouzivat VZDY,
> a to i vtedy, ked v try..finally bloku nemoze dojst k ziadnej
> vynimke a v danom konkretnom pripade by bol povedzme
> zbytocny. Ale su urcite konvencie, ktore sa oplati zachovavat
> a mat tak garanciu, ze ten zdroj sa uvolni povedzme i v
> pripade ze by v buducnosti doslo k zmene zdrojovho textu a z
> toho dovodu nejaka vynimka by sa v tom bloku uz mohla objavit.

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 14:57:20

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Radek Cervinka
> Sent: Tuesday, March 22, 2005 1:55 PM
>
> > Ano je pravda, ze se do finally dostanu I pri pouziti
> prikazu exit a
> > spol., nicmene ja osobne treba blok try finally rozhodne nepouzivam
> > pro rizeni toku programu :)))
>
> A to je velka chyba a uplne souhlasim s Jirim Foldynou.

Aha - takze pokud si tento vyrok trosku rozsirim, tak zcela bezne pouzivas
goto a spol. OK - proti gustu... :))))) Goto jsem naposledy pouzil v basicu
na IQ151 :)))) Ja mam rad zdrojove kody, ktere maji rad a pouzivat try
finally na neco jineho nez je korektni obslouzeni stavu po vyjimce (tj.
dealokace nebo neco podobneho) povazuji za zverstvo. Pokud to ale nekomu
vyhovuje - jak jsem psal - proti gustu...

S pozdravem

Milan Tomes

P.S.: Program-flow prikazy (konkretne exit, break a continue) samozrejme
pouzivam a vyuzivam I skok na finally (to jsem uz psal), ale nepouzivam a
ani nikdy pouzivat nebudu blok finally jen na prime rizeni toku programu
(tzn. proto abych nekde zavolal exit a tim vlastne suploval nejake goto)...

Except a finally v jednom - jak je to spravne?

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 14:53:20

From: "Milan Tomes" <delphi(zv)haida(tec)cz>
> Konstrukci, kterou jsi zde uvedl nemohu pouzit bez slovicka raise a to z
> duvodu, ze osetruji uplne vsechny vyjimky a I takove, ktere napr. vubec
> nesouvisi s blokem, ktery osetruji, ale souvisi napr. s funkci, kterou dany
> blok vnitrne vola. A na druhou stranu - nehodlam vypisovat vsechny typy
> vyjimek abych na ne nejak reagoval... :)))

Coz je dalsi chyba. Typicky, pokud vubec osetruji nejakou vyjimku, tak bych se
mel zamyslet nad tim proc to delam. Osetrovat vsechny vyjimky (jinak nez nekde
na nejvyssi urovni zalogovat neosetrenou vyjimku) je znamkou spatneho navrhu.
Nemuzes prece vedet jak spravne reagovat na vsechny mozne vyjimky.

Petr Vones


Except a finally v jednom - jak je to spravne?

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 14:47:19

From: "Milan Tomes" <delphi(zv)haida(tec)cz>
> A jsme u toho zase :))) Proc je v procedure Run1 vubec finally ??? Vzdyt tam
> vubec nemusi byt (alespon v tomto pripade)...
> Ve vysledku je ten program vlastne vykonan takto:
>
> procedure Run1;
> begin
> try
> <blok, ve kterem nemuze dojit k vyjimce>

Chybny predpoklad, k vyjimce muze dojit vzdy (treba ve WriteLn), podstatne je
ze chces zajistit aby se kod ve finally sekci vykonal (uvolnuje nejake zdroje
apod).

Petr Vones


Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 14:27:17

Se mi zda, ze nejak jeden o koze, druhy o voze :-))

Nechapu, jaky problem muze zpusobit konstrukce napr.

Screen.Cursor := crHourGlass;
try
try
except
exit;
end;

try
except
ShowMessage();
end;

try
except
end;
finally
Screen.Cursor := crDefault;
end;

za predpokladu, ze je pouzita adekvatne potrebam resene ulohy.

No a protoze jsem jsem liny jako ves, tak mam pripravenou sablonu, ktera
generuje telo

function/procedure () : ;
begin
try
try
except
end;
finally
end;
end;

ve kterem mazu/kopiruji podle potreby. Jsem si vedom toho, ze sekce finally
nebo except jsou obcas zbytecne, ale pokud budu potrebovat usetrit par usec,
vzdycky ji muzu vyhodit. Toto je nejcastejsi zpusob, jak pouzivam
try/except/finally.

Zdravim

Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] Winsoft <winsoft(zv)netkosice.sk> - 22.3.2005 14:25:17

> A jsme u toho zase :))) Proc je v procedure Run1 vubec finally ??? Vzdyt
tam
> vubec nemusi byt (alespon v tomto pripade)...
> Ve vysledku je ten program vlastne vykonan takto:
>
> procedure Run1;
> begin
> try
> <blok, ve kterem nemuze dojit k vyjimce>
> finally
> WriteLn('Finally');
> end;
> end;

try..finally sluzi na uvolnenie alokovanych zdrojov, napr.

with TMyForm.Create do
try
ShowModal;
finally
Free;
end;

Je dobrym zvykom tento prikaz v takom pripade pouzivat
VZDY, a to i vtedy, ked v try..finally bloku nemoze dojst
k ziadnej vynimke a v danom konkretnom pripade by
bol povedzme zbytocny. Ale su urcite konvencie, ktore
sa oplati zachovavat a mat tak garanciu, ze ten zdroj
sa uvolni povedzme i v pripade ze by v buducnosti doslo
k zmene zdrojovho textu a z toho dovodu nejaka
vynimka by sa v tom bloku uz mohla objavit.

Erik


Data z konference

[*] Jan Fiala <jan.fiala(zv)wo(tec)cz> - 22.3.2005 14:09:16

22.3.2005 Lenka Donatova:
> Vim ze se to tady uz mockrat probiralo ale me nefunguje ani jeden z nalezenych
> odkazu. Nevite nekdo kde najdu starsi data z konference ?

Popr. se podivej na http://www.pspad.com/cz/
Pod KonfView najdes i hotove databaze z jednotlivymi roky, vcetne
odkazu na data na FTP + odkaz na data z Delphi konference na builderu



--
Jan Fiala
mailto:jan.fiala(zv)wo(tec)cz


Except a finally v jednom - jak je to spravne?

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 22.3.2005 13:55:14

>>>Pisu to tak, ale v D2005 je to obracene (upozornil me na to kamarad)
>>>tak me to zmatlo.
>>
>>Co je obracene ?

> Poradi except a finally (except je pred finally).

Mohl by jsi to upresnit?
Podle mne je to naprosta blbost.

> Ano je pravda, ze se do finally dostanu I pri pouziti prikazu exit a spol.,
> nicmene ja osobne treba blok try finally rozhodne nepouzivam pro rizeni toku
> programu :)))

A to je velka chyba a uplne souhlasim s Jirim Foldynou.

Prosim Vas nemuzete si nastavit vase email klienty tak aby
drzela vlakna? Kdo to ma pak cist (plati v tomto threadu pro vsechny
krome P.Vonese).

Radek

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:55:15

A jsme u toho zase :))) Proc je v procedure Run1 vubec finally ??? Vzdyt tam
vubec nemusi byt (alespon v tomto pripade)...
Ve vysledku je ten program vlastne vykonan takto:

procedure Run1;
begin
try
<blok, ve kterem nemuze dojit k vyjimce>
finally
WriteLn('Finally');
end;
end;

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Petr Vones
> Sent: Tuesday, March 22, 2005 12:27 PM
>
> From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > narazil jsem na zajimavy problem. Jak ma spravne byt pouziti obou
> > bloku -
>
> Nelze rict co je "spravne", to prece zalezi na situaci. Dva priklady:
>
> program Project1;
>
> {$APPTYPE CONSOLE}
>
> uses
> SysUtils;
>
> procedure Run1;
> begin
> try
> try
> WriteLn('Before raise');
> raise Exception.Create('Error');
> except
> on E: Exception do
> WriteLn('Exception: ', E.Message);
> end;
> finally
> WriteLn('Finally');
> end;
> end;
>
> procedure Run2;
> begin
> try
> try
> WriteLn('Before raise');
> raise Exception.Create('Error');
> finally
> WriteLn('Finally');
> end;
> except
> on E: Exception do
> WriteLn('Exception: ', E.Message);
> end;
> end;
>
> begin
> WriteLn('1');
> Run1;
> WriteLn('2');
> Run2;
> ReadLn;
> end.
>
> Typictejsi situace je asi v procedure Run1, koneckoncu treba

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:47:14

A proc tedy v Tebou uvedem priklade pouzivas vubec sekci finally ??? Dle Tve
odpovedi na jiny mail v teto diskusi je to uplne zbytecne a ja s tim
souhlasim... To je to o cem tady polemizuji...

Otazka je tedy takovato: Proc pouzivat blok finally za blokem except ???

Na prikladu, ktery jsi rozkouskoval, jsem ilustroval prakticke pouziti
sekvence except - finally tak, aby pouziti sekce finally melo vubec nejaky
smysl...

Tvuj priklad je hezky a z praxe, ale ja osobne mam rad poradek - kdyz neco
vytvarim a pouzivam v nejakem poradi, tak to v opacnem poradi rusim a to
pokud mozno ve stejnem bloku... :)
Jde asi o navyky, ktere si clovek praxi osvoji...

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 12:31 PM
>
> ??? viz nize
>
> Jiri Foldyna
>
> > Sekce finally se preci vzdy provadi, takze v prikladu vubec
> nemusi byt
> > a bude to fungovat uplne stejne. Pokud by priklad byl takovyto:
>
> Sekce finally se neprovede, pokud vyjimka (nebo prikaz exit, break,
> continue) vznikne mimo statementList1 (viz help k Delphi).

No to je preci samozrejme...

> > Screen.Cursor := crHourGlass;
> > try
> > try
> > ... kod, ktery muze zpusobit vyjimku
> > except
> > ... osetreni vyjimky
> > raise; //<<<<<<<<<<<<<<<<<<
>
> proc raise ? Vyjimku jsem osetril, ted potrebuju vratit
> kurzor a to se v tomto pripade udela vzdy.

Protoze ted doslo k chybe, ktera ma ovlivnit I dalsi zpracovani kodu, ktery
nasleduje...

>
> > end;
> > ...dalsi kod
>
> ??? jaky dalsi kod ?

To je prave ten kod, ktery se uz nema provest, protoze doslo k vyjimce. Ber
to prosim jako ilustrativni priklad a ne jako priklad z praxe.

>
> > finally
> > Screen.Cursor := crDefault;
> > end;
> >
> > tak bych tu konstrukci (mozna) pochopil, ale jinak rozhodne ne...
>
> Jeste jednou:
> mam funkci, ve ktere potrebuji neco VZDY udelat a SOUCASNE
> mam zajisteno osetreni vyjimky (treba dialogem nebo zapisem
> kodu chyby apod.). Bez problemu pouzivam napr. tuto konstrukci:
>
> function TEKBaseList.CommonLoadList(sqlstr : string; AddObjToList :
> TLoadObjToList) : boolean;
> var
> saveCursor : TCursor;
> qr : TAdoQuery;
> DB : TAdoDatabase;
> begin
> Result := true;
> qr := TAdoQuery.Create(nil);
> DB := TAdoDatabase.Create(nil);
> saveCursor := Screen.Cursor;
> Screen.Cursor := crHourGlass;
> try
> try
> DB.DatabaseConnect := Format(connstr, [dbPassword,
> dbUser, usedDatabase, usedServer]);
> DB.Open;
> qr.Database := DB;
> qr.SQL.Add(sqlstr);
> qr.Open;
> qr.First;
> while not (qr.EOF) do
> begin
> if Assigned(AddObjToList) then
> begin
> AddObjToList(qr);
> end;
> qr.Next;
> end;
> FLoaded := true;
> except
> on E : Exception do
> begin
> DB_ExceptMsg := E.Message;
> Result := false;
> FLoaded := false;
> end;
> end;
> finally
> DB.Close;
> qr.Close;
> qr.Free;
> DB.Free;
> Screen.Cursor := saveCursor;
> end;
> end;
>
> Lehnout na neosetrenou vyjimku (myslim neosetrenou programem)
> to muze pouze v pripade, ze dojde k chybe v nekterem create
> pred prvnim try. To se mi zatim nestalo, proto nepouzivam
> create az za try, a test na nil pri close a free.

Tohle je priklad moji metody, kterou pouzivame k plne spokojenosti (je to
soucasti naseho frameworku):

function TDBRecord.DoSaveRecord: boolean;
var
TransactionRunning: boolean;
i: integer;
Cols, Vals: string;
ChangedColumns: TObjectList;
begin
Result := false;
FRecordState := FRecordState + [rsSaving];
try
DBConnection.BeginSQLStatement;
try
TransactionRunning := IBSQL.Transaction.InTransaction;
if not TransactionRunning then
IBSQL.Transaction.StartTransaction;
try
DoSaveMaster;
case SaveOperation of
soUpdate:
begin
IBSQL.SQL.Text := 'Update ' + TableName + #13 +
'set' + #13;
ChangedColumns := TObjectList.Create(false);
try
if UpdateOption in [uoSaveOnlyChangedColumns,
uoSaveAllColumnsIfAnyChanged] then
CompareColumnValues(ChangedColumns);
for i := 0 to Pred(FColumns.Count) do
if Assigned(FColumns[i]) then
case UpdateOption of
uoSaveAllColumns:
if FColumns[i].isBlob then //u blobu neber ohled na
priznak empty...
if FColumns[i].isEmpty then
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = null'
else
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = :' + FColumns[i].ColumnName
else
Cols := Cols + iff(Length(Cols) = 0, '', ','#13) +
FColumns[i].ColumnName + ' = ' + FColumns[i].asSQLString;
uoSaveOnlyChangedColumns:
if ChangedColumns.IndexOf(FColumns[i]) <> -1 then
if FColumns[i].isBlob then
if FColumns[i].isEmpty then
Cols := Cols + iff(Length(Cols) = 0, '',
','#13) + FColumns[i].ColumnName + ' = null'
else
Cols := Cols + iff(Length(Cols) = 0, '',
','#13) + FColumns[i].ColumnName + ' = :' + FColumns[i].ColumnName
else
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = ' + FColumns[i].asSQLString;
uoSaveAllColumnsIfAnyChanged:
if ChangedColumns.Count <> 0 then
if FColumns[i].isBlob then
if FColumns[i].isEmpty then
Cols := Cols + iff(Length(Cols) = 0, '',
','#13) + FColumns[i].ColumnName + ' = null'
else
Cols := Cols + iff(Length(Cols) = 0, '',
','#13) + FColumns[i].ColumnName + ' = :' + FColumns[i].ColumnName
else
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = ' + FColumns[i].asSQLString;
uoSaveAllColumnsButEmpty:
if FColumns[i].isBlob then
//u blobu neber ohled na empty
if FColumns[i].isEmpty then
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = null'
else
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = :' + FColumns[i].ColumnName
else
if not FColumns[i].isEmpty then
Cols := Cols + iff(Length(Cols) = 0, '', ','#13)
+ FColumns[i].ColumnName + ' = ' + FColumns[i].asSQLString;
end;
finally
freeAndNil(ChangedColumns);
end;
if Length(Cols) = 0 then
IBSQL.SQL.Clear
else
begin
IBSQL.SQL.Add(Cols);
if Length(ColListToWhereStr(FKey)) <> 0 then
begin
IBSQL.SQL.Add('where');
IBSQL.SQL.Add(ColListToWhereStr(FKey));
end;
end;
end;
soInsert:
begin
for i := 0 to Pred(FColumns.Count) do
if Assigned(FColumns[i]) then
begin
if FColumns[i].isBlob then
//Pokud to je Blob tak neber v uvahu priznak SaveEmptyColumns
begin
Cols := Cols + iff(Length(Cols) = 0, '', ', ') +
FColumns[i].ColumnName;
if FColumns[i].isEmpty then
Vals := Vals + iff(Length(Vals) = 0, '', ', ') +
'null'
else
Vals := Vals + iff(Length(Vals) = 0, '', ', ') + ':' +
FColumns[i].ColumnName;
end
else
if (InsertOption = ioSaveAllColumns) or
((InsertOption = ioSaveAllColumnsButEmpty) and (not
FColumns[i].isEmpty)) then //Ukladat vsechny -> Uloz; Neukladat prazdne and
Neni prazdny -> Uloz
begin
Cols := Cols + iff(Length(Cols) = 0, '', ', ') +
FColumns[i].ColumnName;
Vals := Vals + iff(Length(Vals) = 0, '', ', ') +
FColumns[i].asSQLString;
end;
end;
IBSQL.SQL.Text := 'Insert into ' + TableName + ' (' + Cols +
')' + #13 +
'Values (' + Vals + ')';
end;
end;
//case
if Length(IBSQL.SQL.Text) = 0 then
Result := true
else
begin
IBSQL.Prepare;
if IsAnyColumnBlob then
begin
for i := 0 to Pred(IBSQL.Params.Count) do

IBSQL.Params[i].LoadFromStream(ColumnByName(IBSQL.Params[i].Name).asBlob);
end;
IBSQL.ExecQuery;
Result := (IBSQL.RowsAffected = 1);
end;
DoSaveDetail;
if not TransactionRunning then
IBSQL.Transaction.Commit;
except
if not TransactionRunning then
IBSQL.Transaction.Rollback;
raise;
end;
if Result and (SaveOperation = soInsert) then
SaveOperation := soUpdate;
for i := 0 to Pred(FKey.Count) do
if Assigned(FColumns.ColumnByName(FKey[i].ColumnName)) then
FKey[i].asVariant :=
FColumns.ColumnByName(FKey[i].ColumnName).asVariant;
finally
DBConnection.EndSQLStatement;
end;
finally
FRecordState := FRecordState - [rsSaving];
end;
end;

Vsimni si na konci konstrukce, ktera je shodna s prikladem, ktery jsem psal.
Ano - to je presne situace, v ktere jsem schopen pochopit zanoreni exceptu
do sekce finally :)))) - V pripade vyskytu jakekoliv chyby proved rollback,
ale take je nutne zajistit aby se o vznikle chybe dozvedela volajici strana.
Ano - mohl bych to co se nachazi za except umistit pred nej, ale ja nechci
aby mi except odchytil pripadnou chybu v tomto bloku...

S pozdravem

Milan Tomes

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:31:12

Diky za to jak jsi mi ten priklad upravil - ale nejak jsi to nepochopil. Ten
priklad byl takhle napsal UMYSLNE abych demonstroval absurdni situaci, ktera
by nastala v pripade, ze by exit a spol. neskocil do sekce finally...

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 1:21 PM
>
> > je vyvolana vyjimka. Dost dobre si nedovedu predstavit, ze bych v
> > pripade pouziti exitu ci jinych program-flow procedur musel resit I
> > dealokace (viz. priklad) :)))
> >
> > Xxx := TXxx.create;
> > Try
> > xxx.neco;
> > if xxx.neco1 then
> > begin
> > xxx.free;
> > exit;
> > end;
> > xxx.neco2;
> > for I := 0 to x do
> > if not fnfn.blabla(xxx) then
> > begin
> > xxx.free;
> > exit;
> > end;
> > Finally
> > xxx.free;
> > End;
>
> No, to prave nemusis. Staci to takto:
>
> Xxx := TXxx.create;
> Try
> xxx.neco;
> if xxx.neco1 then
> begin
> // xxx.free;
> exit;
> end;
> xxx.neco2;
> for I := 0 to x do
> if not fnfn.blabla(xxx) then
> begin
> // xxx.free;
> exit;
> end;
> Finally
> xxx.free;
> End;

Except a finally v jednom - jak je to spravne?

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 12:27:05

From: "Jiri Cincura" <diskuze(zv)cincura.net>
> narazil jsem na zajimavy problem. Jak ma spravne byt pouziti obou bloku -

Nelze rict co je "spravne", to prece zalezi na situaci. Dva priklady:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

procedure Run1;
begin
try
try
WriteLn('Before raise');
raise Exception.Create('Error');
except
on E: Exception do
WriteLn('Exception: ', E.Message);
end;
finally
WriteLn('Finally');
end;
end;

procedure Run2;
begin
try
try
WriteLn('Before raise');
raise Exception.Create('Error');
finally
WriteLn('Finally');
end;
except
on E: Exception do
WriteLn('Exception: ', E.Message);
end;
end;

begin
WriteLn('1');
Run1;
WriteLn('2');
Run2;
ReadLn;
end.

Typictejsi situace je asi v procedure Run1, koneckoncu treba v C# se slozeny
blok catch..finally chova stejne:

using System;

namespace ConsoleApplication1
{
class Class1
{
private static void Run()
{
try
{
Console.WriteLine("Before throw");
throw new Exception("Error");
}
catch (Exception e)
{
Console.WriteLine("Exception: {0}", e.Message);
}
finally
{
Console.WriteLine("Finally");
}
}

[STAThread]
static void Main(string[] args)
{
Run();
Console.ReadLine();
}
}
}

Petr Vones


Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 13:21:11

> Ano je pravda, ze se do finally dostanu I pri pouziti prikazu
> exit a spol.,
> nicmene ja osobne treba blok try finally rozhodne nepouzivam
> pro rizeni toku
> programu :)))
> Finally pouzivam jednoznacne v pripade, kdy potrebuji neco dynamicky
> alokovaneho vzdy spravne dealokovat popr. provest nejakou
> reverzni reakci k
> predchazejici akci I v pripade, kdy je vyvolana vyjimka. Dost dobre si
> nedovedu predstavit, ze bych v pripade pouziti exitu ci
> jinych program-flow
> procedur musel resit I dealokace (viz. priklad) :)))
>
> Xxx := TXxx.create;
> Try
> xxx.neco;
> if xxx.neco1 then
> begin
> xxx.free;
> exit;
> end;
> xxx.neco2;
> for I := 0 to x do
> if not fnfn.blabla(xxx) then
> begin
> xxx.free;
> exit;
> end;
> Finally
> xxx.free;
> End;
>
> S pozdravem
>
> Milan Tomes

No, to prave nemusis. Staci to takto:

Xxx := TXxx.create;
Try
xxx.neco;
if xxx.neco1 then
begin
// xxx.free;
exit;
end;
xxx.neco2;
for I := 0 to x do
if not fnfn.blabla(xxx) then
begin
// xxx.free;
exit;
end;
Finally
xxx.free;
End;

Zdravim

Jiri Foldyna


Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:19:11

No ja se priznam, ze pokud prohledam zdrojaky, ktere jsem doposud napsal,
tak najdu max. 100 vyskytu sekce except, ale minimalne nekolik tisicu sekci
finally. Finally pouzivam vsude tam, kde neco alokuji v programu a chci
zajistit korektni zruseni bez ohledu na zpracovani vsech typu vyjimek.

Konstrukci, kterou jsi zde uvedl nemohu pouzit bez slovicka raise a to z
duvodu, ze osetruji uplne vsechny vyjimky a I takove, ktere napr. vubec
nesouvisi s blokem, ktery osetruji, ale souvisi napr. s funkci, kterou dany
blok vnitrne vola. A na druhou stranu - nehodlam vypisovat vsechny typy
vyjimek abych na ne nejak reagoval... :)))

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 12:55 PM
>
> > No dobre, nahodme nejaky neutralni priklad (a event. obracene):
> >
> > with TStringList.Create do
> > try try
> > LoadFormFile('spatny soubor');
> > finally
> > Free;
> > end;
> > except
> > ShowMessage('Chyba pri otevirani souboru.');
> > end;
> >
> > K jakemu reseni byste se priklonili Vy?
>
> Tady IMHO finally nepotrebujes, staci
>
> with TStringList.Create do
> try
> LoadFormFile('spatny soubor');
> except
> ShowMessage('Chyba pri otevirani souboru.');
> end;
> Free;
> end;
> protoze po obsluze vyjimky bude kod pokracovat za except blokem
> ****
> The exception object is then automatically destroyed through
> a call to its
> Destroy destructor and control is passed to the statement
> following the
> try...except statement.
> ****
>
> Bohuzel se domnivam, ze zde nelze stanovit nejake jednoduche vseobecne
> platne pravidlo, vzdycky zalezi na konkretnich okolnostech.
> Pokud mas treba
> dva except bloky, a po vykonani kterehokoli z nich potrebujes okamzite
> ukoncit funkci/proceduru s nejakou finalizaci, tak je obaleni
> do try finally
> end vhodny nastroj (muzes samozrejme pouzit i GoTo, protoze
> kdo se neboji
> GoTo, neboji se niceho :-))), protoze zprehledni zapis. Ja
> osobne sekci
> finally pouzivam prakticky pouze pro tyto ucely, a vyjimky
> osetruji v try
> except end. Ale jak psal Milan, muze se pouzit i jiny
> pristup, zalezi na
> okolostojicnostech, vkusu, navykum, postaveni Mesice a ja
> nevim cem jeste.
> Proste univerzalni pravidlo jestli nejprve except a pak finally nebo
> obracene asi neexistuje.
>
> Zdravim
>
> Jiri Foldyna
>
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:09:10

OK... :)))
V tomto pripade muze napr. dojit k padu celeho programu, takze me osobne ani
nevadi, ze se X nedealokuje :)))
Kdybych predpokladal vyskyt chyby na radku v except, tak bych pravdepodobne
vzapeti uvedl dalsi except, ktery by resil mozne vyjimky, ktere nastanou v
exceptu predchozim atd... :))))))))

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Karel Rys
> Sent: Tuesday, March 22, 2005 12:53 PM
>
> Milan Tomes dne 22 Mar 2005 v 12:31:
>
> > IMHO opet nemas pravdu, ale dam Ti sanci :))))
> > Vysvetli mi v cem je rozdil mezi Tvym prikladem a
> nasledujici upravou
> > toho prikladu. Kdy se co provede a neprovede ??? Dojde snad nekdy k
> > neprovedeni volani X.Free ???
> >
> > X := TObject.Create;
> > try
> > X.Funkce; // volani nejake funkce objektu
> > except;
> > ShowMessage('Chyba: '+X.TextChyby);
> > end;
> > X.Free;
>
> IMHO pokud v radku ShowMessage('Chyba: '+X.TextChyby); dojde
> k dalsi vyjimce, X.Free se neprovede.
>
> Karel Rys

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 12:31:06

IMHO opet nemas pravdu, ale dam Ti sanci :))))
Vysvetli mi v cem je rozdil mezi Tvym prikladem a nasledujici upravou toho
prikladu. Kdy se co provede a neprovede ??? Dojde snad nekdy k neprovedeni
volani X.Free ???

X := TObject.Create;
try
X.Funkce; // volani nejake funkce objektu
except;
ShowMessage('Chyba: '+X.TextChyby);
end;
X.Free;

S druhou casti pravdu mas, ale o tomto jsem debatu nevedl...

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphak(zv)centrum(tec)cz
> Sent: Tuesday, March 22, 2005 12:23 PM
>
> Priklad kdy je poradi except finally lepsi:
>
> X := TObject.Create;
> try
> try
> X.Funkce; // volani nejake funkce objektu
> except;
> ShowMessage('Chyba: '+X.TextChyby);
> end;
> finally
> X.Free;
> end;
>
> Pokud by to bylo obracene tak v sekci except by instance
> objektu jiz neexistovala!
>
> V.
>
>
>
> ----- Original Message -----
> From: "Milan Tomes" <delphi(zv)haida(tec)cz>
> To: <delphi-l(zv)clexpert(tec)cz>
> Sent: Tuesday, March 22, 2005 12:15 PM
> Subject: Re: Except a finally v jednom - jak je to spravne?
>
>
> > ??????????
> >
> > Viz. nize.
> >
> > > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> > > Sent: Tuesday, March 22, 2005 11:59 AM
> > >
> > > Spatne spatne spatne
> > > Jedina spravna odpoved na otazku jak vzdy provest sekci
> > > finally je obalit s ni try except :-)
> >
> > Sekce finally se preci vzdy provadi, takze v prikladu vubec
> nemusi byt a
> > bude to fungovat uplne stejne. Pokud by priklad byl takovyto:
> >
> > Screen.Cursor := crHourGlass;
> > try
> > try
> > ... kod, ktery muze zpusobit vyjimku
> > except
> > ... osetreni vyjimky
> > raise; //<<<<<<<<<<<<<<<<<<
> > end;
> > ...dalsi kod
> > finally
> > Screen.Cursor := crDefault;
> > end;
> >
> > tak bych tu konstrukci (mozna) pochopil, ale jinak rozhodne ne...
> >
> > >
> > > Pokud si vyjimky osetrujete v modulu a potrebujete vzdy
> > > udelat finalizaci, musite jii obalit try except. Podle me
> > > jsou obe konstrukce spravne, zalezi na tom, co od toho chces.
> >
> > No ja bych od konstrukce finally ocekaval zpracovani bloku
> I v pripade
> > vyvolani vyjimky s tim, ze tuto vyjimku neosetri tzn.
> vyjimka se siri dale a
> > od bloku except bych naopak osetreni vyjimky ocekaval. Rad
> bych se dozvedel
> > o alespon jedinem pripadu, kdy je zapis v poradi except a
> nasledne finally
> > vyhodnejsi resp. co do funkcnosti spravnejsi.
> >
> > S pozdravem
> >
> > Milan Tomes
> >
> >
> > > Priklad:
> > >
> > > Screen.Cursor := crHourGlass;
> > > try
> > > try
> > > ... kod, ktery muze zpusobit vyjimku
> > > except
> > > ... osetreni vyjimky
> > > end;
> > > Screen.Cursor := crDefault;
> > > end;
> > >
> > > > -----Original Message-----
> > > > From: delphi-l-owner(zv)clexpert(tec)cz
> > > > [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Milan Tomes
> > > > Sent: Tuesday, March 22, 2005 11:27 AM
> > > > To: delphi-l(zv)clexpert(tec)cz
> > > > Subject: Re: Except a finally v jednom - jak je to spravne?
> > > >
> > > >
> > > > Spatne spatne spatne... Jedina spravna odpoved na
> otazku presne tak
> > > > jak byla polozena je nejdrive finally a teprve pote except.
> > > Pokud ma
> > > > konstrukce fungovat bez dodatecnehoi reraisovani
> vyjimky, tak je to
> > > >
> > > > > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of
> > > delphak(zv)centrum(tec)cz
> > > > > Sent: Tuesday, March 22, 2005 11:21 AM
> > > > >
> > > > > Zalezi na tom, ceho chcete dosahnout.
> > > > >
> > > > > Varianta A - nejprve se provede except blok a pak finally.
> > > > > Neni osetrena chyba ve finally bloku.
> > > > > Varianta B - nejprve se provede finally blok a pak
> teprve except
> > > > > blok. Zde je osetrena chyba i v finally bloku.
> > > > >
> > > > > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > > > > To: <delphi-l(zv)clexpert(tec)cz>
> > > > >
> > > > > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > > > > pouziti obou bloku - jak except tak finally?
> > > > > >
> > > > > > A)
> > > > > > try try
> > > > > > except
> > > > > > end;
> > > > > > finally
> > > > > > end;
> > > > > >
> > > > > > B)
> > > > > > try try
> > > > > > finally
> > > > > > end;
> > > > > > except
> > > > > > end;
> >
> >
> >
> >
> >
> >
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 13:03:09

Ano je pravda, ze se do finally dostanu I pri pouziti prikazu exit a spol.,
nicmene ja osobne treba blok try finally rozhodne nepouzivam pro rizeni toku
programu :)))
Finally pouzivam jednoznacne v pripade, kdy potrebuji neco dynamicky
alokovaneho vzdy spravne dealokovat popr. provest nejakou reverzni reakci k
predchazejici akci I v pripade, kdy je vyvolana vyjimka. Dost dobre si
nedovedu predstavit, ze bych v pripade pouziti exitu ci jinych program-flow
procedur musel resit I dealokace (viz. priklad) :)))

Xxx := TXxx.create;
Try
xxx.neco;
if xxx.neco1 then
begin
xxx.free;
exit;
end;
xxx.neco2;
for I := 0 to x do
if not fnfn.blabla(xxx) then
begin
xxx.free;
exit;
end;
Finally
xxx.free;
End;

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 12:35 PM
>
> > Je to jednoduche mily Watsone :)
> >
> > Blok finally je proveden vzdy, ale ne vzdy ma vubec smysl
> ho pouzit.
> > Ve variante A pouziti finally nema absolutne smysl, protoze I bez
> > bloku finally jsou prikazy mezi finally a end provedeny. Pokud bys
> > ovsem v sekci except provedl reraisovani vyjimky popr.
> raisovani jine
> > vyjimky, tak uz zde blok finally misto ma, protoze pokud by
> zde nebyl,
> > tak nejsou prikazy mezi finally a end provedeny.
> >
> > S pozdravem
> >
> > Milan Tomes
>
> Aha, zde je zdroj nedorozumeni. Do sekce finally se dostanu i
> pri pouziti Exit, Break nebo Continue, nejen po vyjimce. Jak
> jednoduche, mily Watsone
> :-)
>
> Zdravim
>
> Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 12:31:06

??? viz nize

Jiri Foldyna

> Sekce finally se preci vzdy provadi, takze v prikladu vubec
> nemusi byt a
> bude to fungovat uplne stejne. Pokud by priklad byl takovyto:

Sekce finally se neprovede, pokud vyjimka (nebo prikaz exit, break,
continue) vznikne mimo statementList1 (viz help k Delphi).

> Screen.Cursor := crHourGlass;
> try
> try
> ... kod, ktery muze zpusobit vyjimku
> except
> ... osetreni vyjimky
> raise; //<<<<<<<<<<<<<<<<<<

proc raise ? Vyjimku jsem osetril, ted potrebuju vratit kurzor a to se v
tomto pripade udela vzdy.

> end;
> ...dalsi kod

??? jaky dalsi kod ?

> finally
> Screen.Cursor := crDefault;
> end;
>
> tak bych tu konstrukci (mozna) pochopil, ale jinak rozhodne ne...

Jeste jednou:
mam funkci, ve ktere potrebuji neco VZDY udelat a SOUCASNE mam zajisteno
osetreni vyjimky (treba dialogem nebo zapisem kodu chyby apod.). Bez
problemu pouzivam napr. tuto konstrukci:

function TEKBaseList.CommonLoadList(sqlstr : string; AddObjToList :
TLoadObjToList) : boolean;
var
saveCursor : TCursor;
qr : TAdoQuery;
DB : TAdoDatabase;
begin
Result := true;
qr := TAdoQuery.Create(nil);
DB := TAdoDatabase.Create(nil);
saveCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
try
DB.DatabaseConnect := Format(connstr, [dbPassword, dbUser,
usedDatabase, usedServer]);
DB.Open;
qr.Database := DB;
qr.SQL.Add(sqlstr);
qr.Open;
qr.First;
while not (qr.EOF) do
begin
if Assigned(AddObjToList) then
begin
AddObjToList(qr);
end;
qr.Next;
end;
FLoaded := true;
except
on E : Exception do
begin
DB_ExceptMsg := E.Message;
Result := false;
FLoaded := false;
end;
end;
finally
DB.Close;
qr.Close;
qr.Free;
DB.Free;
Screen.Cursor := saveCursor;
end;
end;

Lehnout na neosetrenou vyjimku (myslim neosetrenou programem) to muze pouze
v pripade, ze dojde k chybe v nekterem create pred prvnim try. To se mi
zatim nestalo, proto nepouzivam create az za try, a test na nil pri close a
free.

Zdravim

Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 12:55:08

> No dobre, nahodme nejaky neutralni priklad (a event. obracene):
>
> with TStringList.Create do
> try try
> LoadFormFile('spatny soubor');
> finally
> Free;
> end;
> except
> ShowMessage('Chyba pri otevirani souboru.');
> end;
>
> K jakemu reseni byste se priklonili Vy?

Tady IMHO finally nepotrebujes, staci

with TStringList.Create do
try
LoadFormFile('spatny soubor');
except
ShowMessage('Chyba pri otevirani souboru.');
end;
Free;
end;
protoze po obsluze vyjimky bude kod pokracovat za except blokem
****
The exception object is then automatically destroyed through a call to its
Destroy destructor and control is passed to the statement following the
try...except statement.
****

Bohuzel se domnivam, ze zde nelze stanovit nejake jednoduche vseobecne
platne pravidlo, vzdycky zalezi na konkretnich okolnostech. Pokud mas treba
dva except bloky, a po vykonani kterehokoli z nich potrebujes okamzite
ukoncit funkci/proceduru s nejakou finalizaci, tak je obaleni do try finally
end vhodny nastroj (muzes samozrejme pouzit i GoTo, protoze kdo se neboji
GoTo, neboji se niceho :-))), protoze zprehledni zapis. Ja osobne sekci
finally pouzivam prakticky pouze pro tyto ucely, a vyjimky osetruji v try
except end. Ale jak psal Milan, muze se pouzit i jiny pristup, zalezi na
okolostojicnostech, vkusu, navykum, postaveni Mesice a ja nevim cem jeste.
Proste univerzalni pravidlo jestli nejprve except a pak finally nebo
obracene asi neexistuje.

Zdravim

Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 22.3.2005 12:53:08

Milan Tomes dne 22 Mar 2005 v 12:31:

> IMHO opet nemas pravdu, ale dam Ti sanci :))))
> Vysvetli mi v cem je rozdil mezi Tvym prikladem a nasledujici upravou
> toho prikladu. Kdy se co provede a neprovede ??? Dojde snad nekdy k
> neprovedeni volani X.Free ???
>
> X := TObject.Create;
> try
> X.Funkce; // volani nejake funkce objektu
> except;
> ShowMessage('Chyba: '+X.TextChyby);
> end;
> X.Free;

IMHO pokud v radku ShowMessage('Chyba: '+X.TextChyby); dojde k dalsi vyjimce, X.Free se neprovede.

Karel Rys


Except a finally v jednom - jak je to spravne?

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 22.3.2005 12:35:06

Petr Vones wrote (on Tuesday, March 22, 2005 12:01 PM):
> From: "Jiri Cincura" <diskuze(zv)cincura.net>
>> Pisu to tak, ale v D2005 je to obracene (upozornil me na to kamarad)
>> tak me to zmatlo.
>
> Co je obracene ?

Poradi except a finally (except je pred finally).

--
Jiri Cincura
http://www.cincura.net/
http://ID3renamer.cincura.net/
ICQ#: 314711544
http://photo.cincura.net/
http://phorum.cincura.net/
http://x2develop.com/

Except a finally v jednom - jak je to spravne?

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 22.3.2005 12:41:07

No dobre, nahodme nejaky neutralni priklad (a event. obracene):

with TStringList.Create do
try try
LoadFormFile('spatny soubor');
finally
Free;
end;
except
ShowMessage('Chyba pri otevirani souboru.');
end;

K jakemu reseni byste se priklonili Vy?

--
Jiri Cincura
http://www.cincura.net/
http://ID3renamer.cincura.net/
ICQ#: 314711544
http://photo.cincura.net/
http://phorum.cincura.net/
http://x2develop.com/

Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 12:35:06

> Je to jednoduche mily Watsone :)
>
> Blok finally je proveden vzdy, ale ne vzdy ma vubec smysl ho
> pouzit. Ve
> variante A pouziti finally nema absolutne smysl, protoze I
> bez bloku finally
> jsou prikazy mezi finally a end provedeny. Pokud bys ovsem v
> sekci except
> provedl reraisovani vyjimky popr. raisovani jine vyjimky, tak
> uz zde blok
> finally misto ma, protoze pokud by zde nebyl, tak nejsou prikazy mezi
> finally a end provedeny.
>
> S pozdravem
>
> Milan Tomes

Aha, zde je zdroj nedorozumeni. Do sekce finally se dostanu i pri pouziti
Exit, Break nebo Continue, nejen po vyjimce. Jak jednoduche, mily Watsone
:-)

Zdravim

Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 12:27:05

Je to jednoduche mily Watsone :)

Blok finally je proveden vzdy, ale ne vzdy ma vubec smysl ho pouzit. Ve
variante A pouziti finally nema absolutne smysl, protoze I bez bloku finally
jsou prikazy mezi finally a end provedeny. Pokud bys ovsem v sekci except
provedl reraisovani vyjimky popr. raisovani jine vyjimky, tak uz zde blok
finally misto ma, protoze pokud by zde nebyl, tak nejsou prikazy mezi
finally a end provedeny.

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphak(zv)centrum(tec)cz
> Sent: Tuesday, March 22, 2005 12:19 PM
>
> To mi tedy neni jasne. Co ma finally spolecneho s
> reraisovanim vyjimky?
> Blok finally se provede v kazdem pripade. I kdyz napr. uvnitr
> bloku dam prikaz exit, tak se nejprve provede finally blok
> (bloky) a teprve potom se procedura opusti ...
>
> ----- Original Message -----
> From: "Milan Tomes" <delphi(zv)haida(tec)cz>
> To: <delphi-l(zv)clexpert(tec)cz>
> Sent: Tuesday, March 22, 2005 11:26 AM
> Subject: Re: Except a finally v jednom - jak je to spravne?
>
>
> > Spatne spatne spatne... Jedina spravna odpoved na otazku
> presne tak jak byla
> > polozena je nejdrive finally a teprve pote except. Pokud ma
> konstrukce
> > fungovat bez dodatecnehoi reraisovani vyjimky, tak je to
> opravdu jedine
> > reseni. Samozrejme, ze lze zapsat I posloupnost except a teprve pote
> > finally, ale bez reraisovani vyjimky a bloku kodu mezi end
> (za exceptem) a
> > finally je sekce finally naprosto k nicemu.
> >
> > S pozdravem
> >
> > Milan Tomes
> >
> > > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of
> delphak(zv)centrum(tec)cz
> > > Sent: Tuesday, March 22, 2005 11:21 AM
> > >
> > > Zalezi na tom, ceho chcete dosahnout.
> > >
> > > Varianta A - nejprve se provede except blok a pak finally.
> > > Neni osetrena chyba ve finally bloku.
> > > Varianta B - nejprve se provede finally blok a pak teprve
> > > except blok. Zde je osetrena chyba i v finally bloku.
> > >
> > > Toto plati samozrejme v pripade, ze k chybe dojde az po
> druhem TRY.
> > >
> > > VP
> > >
> > > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > > To: <delphi-l(zv)clexpert(tec)cz>
> > >
> > > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > > pouziti obou bloku - jak except tak finally?
> > > >
> > > > A)
> > > > try try
> > > > except
> > > > end;
> > > > finally
> > > > end;
> > > >
> > > > B)
> > > > try try
> > > > finally
> > > > end;
> > > > except
> > > > end;
> >
> >
> >
> >
> >
> >
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] delphak(zv)centrum(tec)cz - 22.3.2005 12:23:04

Priklad kdy je poradi except finally lepsi:


X := TObject.Create;
try
try
X.Funkce; // volani nejake funkce objektu
except;
ShowMessage('Chyba: '+X.TextChyby);
end;
finally
X.Free;
end;

Pokud by to bylo obracene tak v sekci except by instance objektu jiz neexistovala!

V.



----- Original Message -----
From: "Milan Tomes" <delphi(zv)haida(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, March 22, 2005 12:15 PM
Subject: Re: Except a finally v jednom - jak je to spravne?> ??????????
>
> Viz. nize.
>
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> > Sent: Tuesday, March 22, 2005 11:59 AM
> >
> > Spatne spatne spatne
> > Jedina spravna odpoved na otazku jak vzdy provest sekci
> > finally je obalit s ni try except :-)
>
> Sekce finally se preci vzdy provadi, takze v prikladu vubec nemusi byt a
> bude to fungovat uplne stejne. Pokud by priklad byl takovyto:
>
> Screen.Cursor := crHourGlass;
> try
> try
> ... kod, ktery muze zpusobit vyjimku
> except
> ... osetreni vyjimky
> raise; //<<<<<<<<<<<<<<<<<<
> end;
> ...dalsi kod
> finally
> Screen.Cursor := crDefault;
> end;
>
> tak bych tu konstrukci (mozna) pochopil, ale jinak rozhodne ne...
>
> >
> > Pokud si vyjimky osetrujete v modulu a potrebujete vzdy
> > udelat finalizaci, musite jii obalit try except. Podle me
> > jsou obe konstrukce spravne, zalezi na tom, co od toho chces.
>
> No ja bych od konstrukce finally ocekaval zpracovani bloku I v pripade
> vyvolani vyjimky s tim, ze tuto vyjimku neosetri tzn. vyjimka se siri dale a
> od bloku except bych naopak osetreni vyjimky ocekaval. Rad bych se dozvedel
> o alespon jedinem pripadu, kdy je zapis v poradi except a nasledne finally
> vyhodnejsi resp. co do funkcnosti spravnejsi.
>
> S pozdravem
>
> Milan Tomes
>
>
> > Priklad:
> >
> > Screen.Cursor := crHourGlass;
> > try
> > try
> > ... kod, ktery muze zpusobit vyjimku
> > except
> > ... osetreni vyjimky
> > end;
> > Screen.Cursor := crDefault;
> > end;
> >
> > > -----Original Message-----
> > > From: delphi-l-owner(zv)clexpert(tec)cz
> > > [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Milan Tomes
> > > Sent: Tuesday, March 22, 2005 11:27 AM
> > > To: delphi-l(zv)clexpert(tec)cz
> > > Subject: Re: Except a finally v jednom - jak je to spravne?
> > >
> > >
> > > Spatne spatne spatne... Jedina spravna odpoved na otazku presne tak
> > > jak byla polozena je nejdrive finally a teprve pote except.
> > Pokud ma
> > > konstrukce fungovat bez dodatecnehoi reraisovani vyjimky, tak je to
> > >
> > > > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of
> > delphak(zv)centrum(tec)cz
> > > > Sent: Tuesday, March 22, 2005 11:21 AM
> > > >
> > > > Zalezi na tom, ceho chcete dosahnout.
> > > >
> > > > Varianta A - nejprve se provede except blok a pak finally.
> > > > Neni osetrena chyba ve finally bloku.
> > > > Varianta B - nejprve se provede finally blok a pak teprve except
> > > > blok. Zde je osetrena chyba i v finally bloku.
> > > >
> > > > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > > > To: <delphi-l(zv)clexpert(tec)cz>
> > > >
> > > > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > > > pouziti obou bloku - jak except tak finally?
> > > > >
> > > > > A)
> > > > > try try
> > > > > except
> > > > > end;
> > > > > finally
> > > > > end;
> > > > >
> > > > > B)
> > > > > try try
> > > > > finally
> > > > > end;
> > > > > except
> > > > > end;
>
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 12:17:03

> A nejni to tak, ze se nejprve skoci do finally, finally
> propusti vyjimku a ta spadne do except? Tim provedu finally i
> except, ne?
> (bez reraisovani)
>
> --
> Jiri Cincura

To plati pouze pokud je vyjimka vyvolana v sekvenci statementList1. Pokud
vyjimka vznikne mimo konstrukci try finally end, statementList2 se
neprovede.

try statementList1 finally statementList2 end

Zdravim

Jiri Foldyna

Except a finally v jednom - jak je to spravne?

[*] delphak(zv)centrum(tec)cz - 22.3.2005 12:19:04

To mi tedy neni jasne. Co ma finally spolecneho s reraisovanim vyjimky?
Blok finally se provede v kazdem pripade. I kdyz napr. uvnitr bloku dam prikaz exit, tak se nejprve provede finally blok (bloky) a teprve potom se procedura opusti ...

V.

----- Original Message -----
From: "Milan Tomes" <delphi(zv)haida(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, March 22, 2005 11:26 AM
Subject: Re: Except a finally v jednom - jak je to spravne?> Spatne spatne spatne... Jedina spravna odpoved na otazku presne tak jak byla
> polozena je nejdrive finally a teprve pote except. Pokud ma konstrukce
> fungovat bez dodatecnehoi reraisovani vyjimky, tak je to opravdu jedine
> reseni. Samozrejme, ze lze zapsat I posloupnost except a teprve pote
> finally, ale bez reraisovani vyjimky a bloku kodu mezi end (za exceptem) a
> finally je sekce finally naprosto k nicemu.
>
> S pozdravem
>
> Milan Tomes
>
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphak(zv)centrum(tec)cz
> > Sent: Tuesday, March 22, 2005 11:21 AM
> >
> > Zalezi na tom, ceho chcete dosahnout.
> >
> > Varianta A - nejprve se provede except blok a pak finally.
> > Neni osetrena chyba ve finally bloku.
> > Varianta B - nejprve se provede finally blok a pak teprve
> > except blok. Zde je osetrena chyba i v finally bloku.
> >
> > Toto plati samozrejme v pripade, ze k chybe dojde az po druhem TRY.
> >
> > VP
> >
> > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > To: <delphi-l(zv)clexpert(tec)cz>
> >
> > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > pouziti obou bloku - jak except tak finally?
> > >
> > > A)
> > > try try
> > > except
> > > end;
> > > finally
> > > end;
> > >
> > > B)
> > > try try
> > > finally
> > > end;
> > > except
> > > end;
>
>
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 12:15:03

??????????

Viz. nize.

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Jiri Foldyna
> Sent: Tuesday, March 22, 2005 11:59 AM
>
> Spatne spatne spatne
> Jedina spravna odpoved na otazku jak vzdy provest sekci
> finally je obalit s ni try except :-)

Sekce finally se preci vzdy provadi, takze v prikladu vubec nemusi byt a
bude to fungovat uplne stejne. Pokud by priklad byl takovyto:

Screen.Cursor := crHourGlass;
try
try
... kod, ktery muze zpusobit vyjimku
except
... osetreni vyjimky
raise; //<<<<<<<<<<<<<<<<<<
end;
...dalsi kod
finally
Screen.Cursor := crDefault;
end;

tak bych tu konstrukci (mozna) pochopil, ale jinak rozhodne ne...

>
> Pokud si vyjimky osetrujete v modulu a potrebujete vzdy
> udelat finalizaci, musite jii obalit try except. Podle me
> jsou obe konstrukce spravne, zalezi na tom, co od toho chces.

No ja bych od konstrukce finally ocekaval zpracovani bloku I v pripade
vyvolani vyjimky s tim, ze tuto vyjimku neosetri tzn. vyjimka se siri dale a
od bloku except bych naopak osetreni vyjimky ocekaval. Rad bych se dozvedel
o alespon jedinem pripadu, kdy je zapis v poradi except a nasledne finally
vyhodnejsi resp. co do funkcnosti spravnejsi.

S pozdravem

Milan Tomes


> Priklad:
>
> Screen.Cursor := crHourGlass;
> try
> try
> ... kod, ktery muze zpusobit vyjimku
> except
> ... osetreni vyjimky
> end;
> Screen.Cursor := crDefault;
> end;
>
> > -----Original Message-----
> > From: delphi-l-owner(zv)clexpert(tec)cz
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Milan Tomes
> > Sent: Tuesday, March 22, 2005 11:27 AM
> > To: delphi-l(zv)clexpert(tec)cz
> > Subject: Re: Except a finally v jednom - jak je to spravne?
> >
> >
> > Spatne spatne spatne... Jedina spravna odpoved na otazku presne tak
> > jak byla polozena je nejdrive finally a teprve pote except.
> Pokud ma
> > konstrukce fungovat bez dodatecnehoi reraisovani vyjimky, tak je to
> >
> > > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of
> delphak(zv)centrum(tec)cz
> > > Sent: Tuesday, March 22, 2005 11:21 AM
> > >
> > > Zalezi na tom, ceho chcete dosahnout.
> > >
> > > Varianta A - nejprve se provede except blok a pak finally.
> > > Neni osetrena chyba ve finally bloku.
> > > Varianta B - nejprve se provede finally blok a pak teprve except
> > > blok. Zde je osetrena chyba i v finally bloku.
> > >
> > > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > > To: <delphi-l(zv)clexpert(tec)cz>
> > >
> > > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > > pouziti obou bloku - jak except tak finally?
> > > >
> > > > A)
> > > > try try
> > > > except
> > > > end;
> > > > finally
> > > > end;
> > > >
> > > > B)
> > > > try try
> > > > finally
> > > > end;
> > > > except
> > > > end;

OT: Tisk do souboru (obrazku)

[*] Karel Mlady <cherokeex(zv)seznam(tec)cz> - 22.3.2005 12:11:02

Dobry den,
nekdy v historii jsem narazil na unitu, ktera dokazala tisknout jako klasicka tiskarna TPrinter, ale vysledek ukladala do obrazkoveho souboru (*.bmp? + nebyla soucasti Delphi). Ted si ale nemuzu vzpomenout. Nepamatujete si, pls nekdo jeji jmeno?

Diky

Aless

Except a finally v jednom - jak je to spravne?

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 22.3.2005 12:09:02

Jiri Foldyna wrote (on Tuesday, March 22, 2005 11:59 AM):
> Spatne spatne spatne
> Jedina spravna odpoved na otazku jak vzdy provest sekci finally je obalit
> s ni try except :-)
>
> Pokud si vyjimky osetrujete v modulu a potrebujete vzdy udelat
> finalizaci, musite jii obalit try except. Podle me jsou obe konstrukce
> spravne, zalezi na tom, co od toho chces.

A nejni to tak, ze se nejprve skoci do finally, finally propusti vyjimku a ta spadne do except? Tim provedu finally i except, ne?
(bez reraisovani)

--
Jiri Cincura
http://www.cincura.net/
http://ID3renamer.cincura.net/
ICQ#: 314711544
http://photo.cincura.net/
http://phorum.cincura.net/
http://x2develop.com/

Except a finally v jednom - jak je to spravne?

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 12:01:02

From: "Jiri Cincura" <diskuze(zv)cincura.net>
> Pisu to tak, ale v D2005 je to obracene (upozornil me na to kamarad) tak me
> to zmatlo.

Co je obracene ?

Petr Vones


Except a finally v jednom - jak je to spravne?

[*] Jiri Foldyna <jiri.f(zv)avizo(tec)cz> - 22.3.2005 11:59:01

Spatne spatne spatne
Jedina spravna odpoved na otazku jak vzdy provest sekci finally je obalit s
ni try except :-)

Pokud si vyjimky osetrujete v modulu a potrebujete vzdy udelat finalizaci,
musite jii obalit try except. Podle me jsou obe konstrukce spravne, zalezi
na tom, co od toho chces.

Priklad:

Screen.Cursor := crHourGlass;
try
try
... kod, ktery muze zpusobit vyjimku
except
... osetreni vyjimky
end;
Screen.Cursor := crDefault;
end;

Zdravim

Jiri Foldyna

> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz]On Behalf Of Milan Tomes
> Sent: Tuesday, March 22, 2005 11:27 AM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: Re: Except a finally v jednom - jak je to spravne?
>
> Spatne spatne spatne... Jedina spravna odpoved na otazku
> presne tak jak byla
> polozena je nejdrive finally a teprve pote except. Pokud ma konstrukce
> fungovat bez dodatecnehoi reraisovani vyjimky, tak je to
> opravdu jedine
> reseni. Samozrejme, ze lze zapsat I posloupnost except a teprve pote
> finally, ale bez reraisovani vyjimky a bloku kodu mezi end
> (za exceptem) a
> finally je sekce finally naprosto k nicemu.
>
> S pozdravem
>
> Milan Tomes
>
> > [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphak(zv)centrum(tec)cz
> > Sent: Tuesday, March 22, 2005 11:21 AM
> >
> > Zalezi na tom, ceho chcete dosahnout.
> >
> > Varianta A - nejprve se provede except blok a pak finally.
> > Neni osetrena chyba ve finally bloku.
> > Varianta B - nejprve se provede finally blok a pak teprve
> > except blok. Zde je osetrena chyba i v finally bloku.
> >
> > Toto plati samozrejme v pripade, ze k chybe dojde az po druhem TRY.
> >
> > VP
> >
> > From: "Jiri Cincura" <diskuze(zv)cincura.net>
> > To: <delphi-l(zv)clexpert(tec)cz>
> >
> > > narazil jsem na zajimavy problem. Jak ma spravne byt
> > pouziti obou bloku - jak except tak finally?
> > >
> > > A)
> > > try try
> > > except
> > > end;
> > > finally
> > > end;
> > >
> > > B)
> > > try try
> > > finally
> > > end;
> > > except
> > > end;
>
>
>
>

Except a finally v jednom - jak je to spravne?

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 22.3.2005 11:49:00

Milan Tomes wrote (on Tuesday, March 22, 2005 11:27 AM):
> Spatne spatne spatne... Jedina spravna odpoved na otazku presne tak jak
> byla polozena je nejdrive finally a teprve pote except. Pokud ma

Diky, to jsem chtel slyset.

Pisu to tak, ale v D2005 je to obracene (upozornil me na to kamarad) tak me to zmatlo.

--
Jiri Cincura
http://www.cincura.net/
http://ID3renamer.cincura.net/
ICQ#: 314711544
http://photo.cincura.net/
http://phorum.cincura.net/
http://x2develop.com/

Data z konference

[*] Jan Plisek <plisek(zv)spse(tec)cz> - 22.3.2005 11:38:59

Lenka Donatova napsal(a):

>Vim ze se to tady uz mockrat probiralo ale me nefunguje ani jeden z nalezenych
>odkazu. Nevite nekdo kde najdu starsi data z konference ?
>
>dekuji za odpoved
>Lenka Donatova
>
>
>
>
Jsou k dispozici na adrese ftp://delphi:archivar(zv)delphi(tec)cz/

J.Plisek

Except a finally v jednom - jak je to spravne?

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 22.3.2005 11:26:58

Spatne spatne spatne... Jedina spravna odpoved na otazku presne tak jak byla
polozena je nejdrive finally a teprve pote except. Pokud ma konstrukce
fungovat bez dodatecnehoi reraisovani vyjimky, tak je to opravdu jedine
reseni. Samozrejme, ze lze zapsat I posloupnost except a teprve pote
finally, ale bez reraisovani vyjimky a bloku kodu mezi end (za exceptem) a
finally je sekce finally naprosto k nicemu.

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphak(zv)centrum(tec)cz
> Sent: Tuesday, March 22, 2005 11:21 AM
>
> Zalezi na tom, ceho chcete dosahnout.
>
> Varianta A - nejprve se provede except blok a pak finally.
> Neni osetrena chyba ve finally bloku.
> Varianta B - nejprve se provede finally blok a pak teprve
> except blok. Zde je osetrena chyba i v finally bloku.
>
> Toto plati samozrejme v pripade, ze k chybe dojde az po druhem TRY.
>
> VP
>
> From: "Jiri Cincura" <diskuze(zv)cincura.net>
> To: <delphi-l(zv)clexpert(tec)cz>
>
> > narazil jsem na zajimavy problem. Jak ma spravne byt
> pouziti obou bloku - jak except tak finally?
> >
> > A)
> > try try
> > except
> > end;
> > finally
> > end;
> >
> > B)
> > try try
> > finally
> > end;
> > except
> > end;

Except a finally v jednom - jak je to spravne?

[*] delphak(zv)centrum(tec)cz - 22.3.2005 11:20:58

Zalezi na tom, ceho chcete dosahnout.

Varianta A - nejprve se provede except blok a pak finally. Neni osetrena chyba ve finally bloku.
Varianta B - nejprve se provede finally blok a pak teprve except blok. Zde je osetrena chyba i v finally bloku.

Toto plati samozrejme v pripade, ze k chybe dojde az po druhem TRY.

VP

----- Original Message -----
From: "Jiri Cincura" <diskuze(zv)cincura.net>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, March 22, 2005 11:08 AM
Subject: Except a finally v jednom - jak je to spravne?> Ahoj,
>
> narazil jsem na zajimavy problem. Jak ma spravne byt pouziti obou bloku - jak except tak finally?
>
> A)
> try try
> except
> end;
> finally
> end;
>
> B)
> try try
> finally
> end;
> except
> end;
>
> ???
>
> --
> Jiri Cincura
> http://www.cincura.net/
> http://ID3renamer.cincura.net/
> ICQ#: 314711544
> http://photo.cincura.net/
> http://phorum.cincura.net/
> http://x2develop.com/
>
>
>
>
>
>

Data z konference

[*] Lenka Donatova <lenkad(zv)nemocnice-vs(tec)cz> - 22.3.2005 11:10:52

Vim ze se to tady uz mockrat probiralo ale me nefunguje ani jeden z nalezenych
odkazu. Nevite nekdo kde najdu starsi data z konference ?

dekuji za odpoved
Lenka Donatova

Except a finally v jednom - jak je to spravne?

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 22.3.2005 11:08:51

Ahoj,

narazil jsem na zajimavy problem. Jak ma spravne byt pouziti obou bloku - jak except tak finally?

A)
try try
except
end;
finally
end;

B)
try try
finally
end;
except
end;

???

--
Jiri Cincura
http://www.cincura.net/
http://ID3renamer.cincura.net/
ICQ#: 314711544
http://photo.cincura.net/
http://phorum.cincura.net/
http://x2develop.com/

ADO Connection v DLL

[*] Petr Vones <konference(zv)petrvones(tec)net> - 22.3.2005 10:34:49

From: "Lebeda David" <david.lebeda(zv)comarr(tec)cz>
> se na neco sahne, je treba vzdy znovu dodat i vsechny VCL balicky,
> aby se nekde nenarazilo na nekompatibilitu. Ne ze by slo o neresitelny
> problem, ale zda se mi to trochu rekneme neprakticke.

Bohuzel jine reseni to na platforme ktera neni primo objektova nema.

Petr Vones

ADO Connection v DLL

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 22.3.2005 07:48:35

> Jeden z duvodu muze byt treba i to, ze dodas zakaznikovi aplikaci s
> balicky, ...
> Ne ze by slo o neresitelny
> problem, ale zda se mi to trochu rekneme neprakticke.
> David Lebeda

Jasne, jasne, ja taky z techto duvodu nemam balicky v oblibe.

Ale Petr ma pravdu v tom, ze pokud je v EXE a v DLL uses na spolecnou VCL unit, pak NENI JINE RESENI NEZ BALICKY POUZIT. Jde o globalni promenne a pouziti operatoru "is" a "as", kterymi se to ve VCL jenom hemzi.

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)
====================================

ADO Connection v DLL

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 22.3.2005 07:06:32

> Pokud chces predavat Delphi objekty tak neni jine reseni nez pouziti balicku.
> Docela by me zajimal duvod proc je toto porad povazovano za problem (velikost
> potrebnych BPL souboru je dnes irelevantni diky velikosti disku).

Jeden z duvodu muze byt treba i to, ze dodas zakaznikovi aplikaci s
balicky, ta aplikace nejakou dobu jede a po par mesicich/letech si
zakaznik vzpomene, ze chce nejakou upravu. Tak projekt otevres v
Delphi, jenze ouha, mezitim byl nejaky update na Delphi, IBX apod.,
takze je treba myslet na to, ze u zakaznika budou ruzne moduly
prekladane v ruzne verzi servispacku Delphi, pripadne i v ruzne verzi
Delphi, kdyz se bude po letech pridavat zcela novy modul, takze kdykoli
se na neco sahne, je treba vzdy znovu dodat i vsechny VCL balicky,
aby se nekde nenarazilo na nekompatibilitu. Ne ze by slo o neresitelny
problem, ale zda se mi to trochu rekneme neprakticke.

David Lebeda

ADO Connection v DLL

[*] Fait <develop(zv)lmss(tec)cz> - 22.3.2005 00:30:02

> Pokud chces predavat Delphi objekty tak neni jine reseni nez
> pouziti balicku. Docela by me zajimal duvod proc je toto
> porad povazovano za problem (velikost potrebnych BPL souboru
> je dnes irelevantni diky velikosti disku).
>
No my jsme jednu velkou aplikaci predelali na balicky z duvodu zprehledneni
vyvoje, ale konecnou kompilaci delame nakonec jako exe bez balicku.
Duvodem bylo za
1. "BPL HELL" jak bych tak rekl
2. Nacitani vsech balicku dost podstane prodluzovalo start aplikace

Ale jinak souhlasim, ze pouziti balicku je v nekterych pripadech
pomoci......zvlaste u rozsahlych projektu.

Jirka

ADO Connection v DLL

[*] Petr Vones <konference(zv)petrvones(tec)net> - 21.3.2005 20:21:45

From: <lelicek(zv)volny(tec)cz>
> potrebuji prepsat cast aplikace do DLL a protoze,
> i tato cast musi komunikovat s DB, potrebuji ji nejak
> predat TADOConnection. Zatim to resim tak, ze si do DLL
> predam ConnectionString, ale nezda se mi to dost elegantni.
> Nechci pouzivat balicky nevite jak to udelat.

Pokud chces predavat Delphi objekty tak neni jine reseni nez pouziti balicku.
Docela by me zajimal duvod proc je toto porad povazovano za problem (velikost
potrebnych BPL souboru je dnes irelevantni diky velikosti disku).

Petr Vones


ADO Connection v DLL

[*] lelicek(zv)volny(tec)cz - 21.3.2005 20:15:44

Ahoj,
potrebuji prepsat cast aplikace do DLL a protoze,
i tato cast musi komunikovat s DB, potrebuji ji nejak
predat TADOConnection. Zatim to resim tak, ze si do DLL
predam ConnectionString, ale nezda se mi to dost elegantni.
Nechci pouzivat balicky nevite jak to udelat.

Pavel


GSM modem

[*] John Bricklayer <bricklayer(zv)seznam(tec)cz> - 21.3.2005 20:07:44

No ja jsem si udelal vlastni odesilac pres ucet SMS.CZ neni to slozite(trivialni), akorat pokud chces kontrolovat stav,
tak uz si musis naprogramovat takovy vlastni prohlizec na dekodovani stavu po prihlaseni. Nebo pro overeni staci udelat
mail na ktery ti chodi dorucenky :-)

Staci vytvorit si ucet. Odesilas za 1,14Kc a pokud odesilis moc, tak se da odesilat za 0,94

a takhle se odesila

* Nacteni klice pro overeni
http://www.sms(tec)cz/brana/?jmeno=tvoje_jmeno

* Zaslani zpravy
http://www.sms(tec)cz/brana/?jmeno=tvoje_jmeno&auth=X&mobil=Y&zprava=Z&cas=T&dorucenka=E

X - overeni - vypocte se jako:
MD5("externibrana" + KLiC + VASE HESLO + "overeniMD5")

Y - prijemci zprav oddeleni strednikem - napr. 00420608123456;00420603123456

Z - text zpravy

T - cas odeslani zpravy (format YYYY-MM-DD hh:mm:ss) nepovinny parametr

E - emailova adresa pro zaslani dorucenky nepovinny parametr
Cau JB


>> Ahoj, ja to resil pres DreamCom Server www.dreamcom(tec)cz kde odeslani resis
>> pres jednoduche zapsani do databaze nebo textovyho souboru. Stoji sice
>> okolo 1000 korun, ale zase tam mas vyreno odesilani i pres webove brany a
>> mnoho dalsich funkci, ktere si sam za 1000 nenaprogramujes. Nevyhoda je v
>> tom, ze nemas uplne vsechno pod vlastni kontrolou.
>
>Diky, ja myslim ze toto bude asi ta spravna cesta, casu malo...
>
>MB
>
>
>

GSM modem

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 21.3.2005 16:09:27

> Ahoj, ja to resil pres DreamCom Server www.dreamcom(tec)cz kde odeslani resis
> pres jednoduche zapsani do databaze nebo textovyho souboru. Stoji sice
> okolo 1000 korun, ale zase tam mas vyreno odesilani i pres webove brany a
> mnoho dalsich funkci, ktere si sam za 1000 nenaprogramujes. Nevyhoda je v
> tom, ze nemas uplne vsechno pod vlastni kontrolou.

Diky, ja myslim ze toto bude asi ta spravna cesta, casu malo...

MB

Toolbar v designeru FR3

[*] Roman <sw.maurice(zv)seznam(tec)cz> - 21.3.2005 15:51:26

Ahoj,
mam problem s tlacitky toolbaru designeru FastReport3 na Win XP. Navrhar
volam v DLL zkompilovane v D4 z neDelphi aplikace. Tlacitka toolbaru pro
nastaveni napr. tucne/kurziva/zarovnani apod. nijak nereaguji na kliknuti
mysi. Pokud hodnotu zmenim v object inspectoru, tlacitko se spravne
"zatlaci". Pokud navrhar pustim na XP primo z aplikace (EXE), tlacitka
funguji normalne.
Mel jsem podezreni na ToolButton vs. temata XP, ale je divne, ze bez temat
na XP stejne nefunguje a naopak, ze to funguje na XP s tematy, kdyz neni z
DLL.

Nevi nekdo co s tim?

Roman


GSM modem

[*] Liska David <david.liska(zv)aac-czech(tec)cz> - 21.3.2005 14:47:21

Ahoj, ja to resil pres DreamCom Server www.dreamcom(tec)cz kde odeslani resis pres jednoduche zapsani do databaze nebo textovyho souboru. Stoji sice okolo 1000 korun, ale zase tam mas vyreno odesilani i pres webove brany a mnoho dalsich funkci, ktere si sam za 1000 nenaprogramujes. Nevyhoda je v tom, ze nemas uplne vsechno pod vlastni kontrolou.

David Liska


> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Martin Burle
> Sent: Monday, March 21, 2005 12:43 PM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: GSM modem
>
> Ahoj,
> stojim pred ukolem zajistit odeslani sms prostrednictvim
> nejakeho mobilu, nebo GSM modemu pripojeneho k pocitaci.
> Pravdepodobne by slo o modem Siemes pripojeny k seriovemu
> portu. O teto problematice nevim skoro nic :(, muze me nekdo
> nasmerovat ? (komponenty, knihovny, zdroje informaci) Rad
> bych to pojal univerzalne, abych nebyl vazan na konkretni typ
> zarizeni.
>
> predem diky,
>
> Martin
>
>
>
>

GSM modem

[*] Milan Bartonek <mbartonek(zv)synthesia(tec)cz> - 21.3.2005 13:47:05



Ahoj,

zkus se podivat na www.2p(tec)cz - knihovny bumerang

Bartonek Milan


GSM modem

[*] s.cerny(zv)volny(tec)cz - 21.3.2005 12:57:01

Ahoj,
pro sveho zamestnavatele jsem vytvoril soft, ktery umoznuje
hromadne rozesilani SMS, prijem a zpracovani SMS atd. Vsechno se
uklada do SQL a udelal jsem i webove rozhrani. Pro komunikaci s
modemem pouzivam komponentu ComPort, vse ostatni resim vlastnima
procedurama. Zalezi na tom v jakem formatu GSM modem vraci odpovedi
na AT prikazy. Ten nas modem je starsi a vraci to mirne kodovane,
jmenuje se Maestro 20.

Standa

----- PUVODNI ZPRAVA -----
Od: "Martin Burle" <mburle2(zv)volny(tec)cz>
Komu: delphi-l(zv)clexpert(tec)cz
Predmet: GSM modem
Datum: 21.3.2005 - 12:43:05

> Ahoj,
> stojim pred ukolem zajistit odeslani sms prostrednictvim
> nejakeho mobilu,
> nebo GSM modemu pripojeneho k pocitaci. Pravdepodobne by slo o
> modem Siemes
> pripojeny k seriovemu portu. O teto problematice nevim skoro
> nic :(, muze
> me nekdo nasmerovat ? (komponenty, knihovny, zdroje informaci)
> Rad bych to
> pojal univerzalne, abych nebyl vazan na konkretni typ zarizeni.
>
> predem diky,
>
> Martin
>
>
>
>


--
Levnejsi internet v pracovni dny jiz od 18:00 hod.
Surfujte s VOLNY!
http://mimospicku.volny(tec)cz


GSM modem

[*] likeapear <likeapear(zv)centrum(tec)cz> - 21.3.2005 12:51:00

Jsou na to nejake komponenty, napr. AsyncPro ma neco v sobe. Ale moc to nefunguje. Ja jsem si to cele udelal rucne, pres AT prikazy. Z AsyncPro jsem jenom okoukal prevod SMS zpravy do 7-bit kodovani (PDU) a zpet (resil jsem i prijem SMS zpravy). Mam to obecne a pouziva se to na ruznych GSM modemech. Napr. Siemens M20, MC35, MC39, Wavecom WMOD, atd...

{likeapear}


----- Original Message -----
From: "Martin Burle" <mburle2(zv)volny(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Monday, March 21, 2005 12:42 PM
Subject: GSM modem


| Ahoj,
| stojim pred ukolem zajistit odeslani sms prostrednictvim nejakeho mobilu,
| nebo GSM modemu pripojeneho k pocitaci. Pravdepodobne by slo o modem Siemes
| pripojeny k seriovemu portu. O teto problematice nevim skoro nic :(, muze
| me nekdo nasmerovat ? (komponenty, knihovny, zdroje informaci) Rad bych to
| pojal univerzalne, abych nebyl vazan na konkretni typ zarizeni.
|
| predem diky,
|
| Martin
|
|
|
|

GSM modem

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 21.3.2005 12:42:59

Ahoj,
stojim pred ukolem zajistit odeslani sms prostrednictvim nejakeho mobilu,
nebo GSM modemu pripojeneho k pocitaci. Pravdepodobne by slo o modem Siemes
pripojeny k seriovemu portu. O teto problematice nevim skoro nic :(, muze
me nekdo nasmerovat ? (komponenty, knihovny, zdroje informaci) Rad bych to
pojal univerzalne, abych nebyl vazan na konkretni typ zarizeni.

predem diky,

Martin

© Delphi.cz, program netcode.cz, 2008-9.