Archív konference Delphi
Zpět na výběr roku archívu nebo přejít na fulltextové vyhledávání v konferenci.
Verze bpl, D7
[*] Libor Valka <konference(zv)livasys(tec)com> - 22.2.2008 14:06:22
Resenim by mohlo byt napr. vytvoreni msi balicku, tedy zabalit
vse potrebne do msi a distribuovat tento balik.
Libor
>
> Problem: aplikace se distribuuje s bpl knihovnou. Nejen uzivatele ale i
> odbornici z firmy odmitaji vzit na vedomi, ze exe a bpl tvori jeden balik
a
> musi si spolu rozumet. Takze pri upgrade vymeni jen exe (helpy ani readme
> samozrejme nikdo necte) a nasleduje reklamace "ono to nechodi". Verzi
souboru
> pomoci GetFileVersionInfo zjistit umim, jenze k tomu se nedostanu -
bouchne
> to jeste driv nez se provede prvni prikaz aplikace -
Application.Initialize
> :-(
>
> Zdenek Kalhous
>
>
Verze bpl, D7
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 22.2.2008 13:08:10
> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Zdenek Kalhous
> Problem: aplikace se distribuuje s bpl knihovnou. Nejen
> uzivatele ale i odbornici z firmy odmitaji vzit na vedomi, ze
> exe a bpl tvori jeden balik a musi si spolu rozumet. Takze
No a to jim to davas soubor po souboru ?!
Natoc instalak treba InnoSetupem a zaridis vse jednou ranou.
PMal
Spravce configurace delphi
[*] Mgr. Martin Radvansky <delphiconf(zv)radvansky(tec)net> - 22.2.2008 14:44:33
Zdravim,
mel bych dotazek. Potrebuji predelavat nejake interni kompomponenty
momentalne v D2006 a narazil jsem na problem s designtime balicky.
Nevite jestli existuje nejaky nastroj pro takovou
elementarni vec jakou je ulozeni celeho prostredi Delphi vcetne
nainstalovanych balicku
Pouzivam CnPack pro zalohovani "prostredi", ale zjistil jsem ze si
neporadi s nainstalovanymi komponentami.
Idea je jednoducha delam na projektu tak si "obnovim" ulozene
prostredi vcetne cest a hlavne nainstalovanych balicku.
Zkousel jsem exportovat si registry, ale to ma problem,
pokud si doinstaluji nejake dalsi komponenty.
Nevite o necem co by se dalo pouzit?
Diky za rady
Martin
OpenDialog
[*] Jan Stefec <stefec(zv)algo-hk(tec)cz> - 22.2.2008 15:08:42
Ahoj,
jde nejak nastavit OpenDialog nebo SaveDialog tak, abych si v nem mohl
vybrat jenom adresar?
Diky Honza
Verze bpl, D7
[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 22.2.2008 15:16:42
Zdenek Kalhous napsal(a):
> Nojo, vsak vim a proto se ty aplikace dodavaji jako "sebeinstalujici" programy (zmineny instalacni program) ktere vsechno vymeni jak je potreba. Jenze potrebuju resit to, ze takovej kutil si pusti instalaci jednou (na svem pocitaci) a dalsi praci si "zjednodusi" tim, ze uzivatelum uz jen nakopiruje exe programy.
>
no a co sekce initialize, ta se taky nevyvola?
nebo druhy exe ktery zkusi otestuje verze vsech casti programu a pak spusti hlavni program (ktery samozrejme nemusi byt .exe ale
nejaka jina koncovka)
R.
OpenDialog
[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 22.2.2008 15:24:43
> jde nejak nastavit OpenDialog nebo SaveDialog tak, abych si v nem mohl
> vybrat jenom adresar? Diky Honza
Viz funkce SelectDirectory v helpu - otevre samostatny dialog na vyber
adresare.
David Lebeda
Verze bpl, D7
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 22.2.2008 15:40:50
----- Original Message -----
From: Radek Cervinka
Zdenek Kalhous napsal(a):
>> Nojo, vsak vim a proto se ty aplikace dodavaji jako "sebeinstalujici" programy (zmineny instalacni program) ktere vsechno vymeni jak je potreba. Jenze potrebuju resit to, ze takovej kutil si pusti instalaci jednou (na svem pocitaci) a dalsi praci si "zjednodusi" tim, ze uzivatelum uz jen nakopiruje exe programy.
> no a co sekce initialize, ta se taky nevyvola?
Prave ze ne. To je ta smula.
>nebo druhy exe ktery zkusi otestuje verze vsech casti programu a pak spusti hlavni program (ktery samozrejme nemusi byt .exe ale
nejaka jina koncovka)
To me taky (zatim jako jedine reseni) napadlo ale moc se mi to nelibilo. Proto jsem zkusil dotaz jestli neexistuje neco elegantnejsiho, nejaky "zabudovany preprocesor", ale jak se zda tak asi ne. Totiz uz vidim jak ten kutil opet vtipne vymeni jen exe a zase bude ramcat ze to nefunguje.
ZK
Verze bpl, D7
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 22.2.2008 15:34:49
Puvodni zprava ze dne 22.2.2008 od Zdenek Kalhous:
> Nojo, vsak vim a proto se ty aplikace dodavaji jako
> "sebeinstalujici" programy (zmineny instalacni program) ktere
> vsechno vymeni jak je potreba. Jenze potrebuju resit to, ze takovej
> kutil si pusti instalaci jednou (na svem pocitaci) a dalsi praci si
> "zjednodusi" tim, ze uzivatelum uz jen nakopiruje exe programy.
Pak nema co reklamovat. Vubec bych to neresil, protoze to bys pak
take mohl zacit resit to, ze nekdo takhle zkopiruje cele Windows.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
Verze bpl, D7
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 22.2.2008 15:50:52
Ahoj,
> To me taky (zatim jako jedine reseni) napadlo ale moc se mi
> to nelibilo. Proto jsem zkusil dotaz jestli neexistuje neco
> elegantnejsiho, nejaky "zabudovany preprocesor", ale jak se
> zda tak asi ne. Totiz uz vidim jak ten kutil opet vtipne
> vymeni jen exe a zase bude ramcat ze to nefunguje.
No tak zacni pouzivat neco jako Eurekalog(za par kacek) ci podobny
nastroj, ktery v pripade chyby vyrobi bugreport s mnoha
informacema, vcetne verzi zavedenych modulu, knihoven... a spousta
dalsiho...
Do nej pak mrknes a vetsinou ti to hooodne pomuze.
PMal
Verze bpl, D7
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 22.2.2008 15:44:51
To je obecne vzato velice spravny nazor. Jenze tim kutilem je v 99% pripadu muj sef a zivitel :-(
Takze to resit musim, i kdyz nerad.
Zdenek Kalhous
> Nojo, vsak vim a proto se ty aplikace dodavaji jako
> "sebeinstalujici" programy (zmineny instalacni program) ktere
> vsechno vymeni jak je potreba. Jenze potrebuju resit to, ze takovej
> kutil si pusti instalaci jednou (na svem pocitaci) a dalsi praci si
> "zjednodusi" tim, ze uzivatelum uz jen nakopiruje exe programy.
Pak nema co reklamovat. Vubec bych to neresil, protoze to bys pak
take mohl zacit resit to, ze nekdo takhle zkopiruje cele Windows.
Petr Zahradnik, pocitacovy expert
Verze bpl, D7
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 22.2.2008 15:56:54
Puvodni zprava ze dne 22.2.2008 od Zdenek Kalhous:
> To je obecne vzato velice spravny nazor. Jenze tim kutilem je v 99%
> pripadu muj sef a zivitel :-( Takze to resit musim, i kdyz nerad.
Ach jo. No jo, tak si udelej jeste jednu aplikaci, ktera nacte cisla
verzi vsech EXE, DLL, BPL a napise ti je. Reknes spustit to a to,
precte verze, jsou blbe, tak nazdar, nainstalovat znova.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
Verze bpl, D7
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 22.2.2008 16:06:55
----- Original Message -----
From: Pavel Malinsky
>> To me taky (zatim jako jedine reseni) napadlo ale moc se mi
>> to nelibilo. Proto jsem zkusil dotaz jestli neexistuje neco
>> elegantnejsiho, nejaky "zabudovany preprocesor", ale jak se
>> zda tak asi ne. Totiz uz vidim jak ten kutil opet vtipne
>> vymeni jen exe a zase bude ramcat ze to nefunguje.
>No tak zacni pouzivat neco jako Eurekalog(za par kacek) ci podobny
>nastroj, ktery v pripade chyby vyrobi bugreport s mnoha
>informacema, vcetne verzi zavedenych modulu, knihoven... a spousta
>dalsiho...
>Do nej pak mrknes a vetsinou ti to hooodne pomuze.
Ale mne jde prave o to zachyceni driv nez zhavaruje program. Kdyz uz dojde k chybe tak je jednak pozde a druhak je celkem jasne o co jde protoze kdyz nesouhlasi verze exe/bpl tak to hlasi neco jako "Nenalezen vstupni bod procedury ... blablabla a ted je spousta cinskejch znaku" z cehoz je uzivatel hin. Takze kdybych to zachytil programem, napsal bych mu neco lidstejsiho, treba "Chyba instalace, po precteni navodu spustte instalacni program, klikejte na OK a nevymyslejte voloviny".
ZK
Verze bpl, D7
[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 22.2.2008 15:56:54
>> nebo druhy exe ktery zkusi otestuje verze vsech casti programu a pak spusti hlavni program (ktery samozrejme nemusi byt .exe ale
> nejaka jina koncovka)
>
> To me taky (zatim jako jedine reseni) napadlo ale moc se mi to nelibilo. Proto jsem zkusil dotaz jestli neexistuje neco elegantnejsiho, nejaky "zabudovany preprocesor", ale jak se zda tak asi ne. Totiz uz vidim jak ten kutil opet vtipne vymeni jen exe a zase bude ramcat ze to nefunguje.
ale tady mas aspon sanci zobrazit hlasku ze neco neni v poradku
ostatni moznosti co mne napadaji jsou uz moc pracne a prasacke:
- jako odchyceni zavadeni BPL (je to DLL), popr. presmerovani zavadeci rutiny na svoji rutinu
- nebo mit vsechno v jednom exe, ktery se pred spustenim nekam rozbali i se vsemi BPL a provede spusteni rozbalene kopie)
>"zabudovany preprocesor"
co tim myslis?
Verze bpl, D7
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 22.2.2008 16:23:02
> >No tak zacni pouzivat neco jako Eurekalog(za par kacek) ci podobny
[...]
> >Do nej pak mrknes a vetsinou ti to hooodne pomuze.
>
> Ale mne jde prave o to zachyceni driv nez zhavaruje program.
> Kdyz uz dojde k chybe tak je jednak pozde a druhak je celkem
> jasne o co jde protoze kdyz nesouhlasi verze exe/bpl tak to
> hlasi neco jako "Nenalezen vstupni bod procedury ...
> blablabla a ted je spousta cinskejch znaku" z cehoz je
> uzivatel hin. Takze kdybych to zachytil programem, napsal
> bych mu neco lidstejsiho, treba "Chyba instalace, po precteni
> navodu spustte instalacni program, klikejte na OK a
> nevymyslejte voloviny".
EL hodi "slusnou" hlasku nebo klidne zadnou, resp takovou jakou si
budes v podstate prat a slusne apl ukonci. Ted resis hlidani verze bpl, ale
EL resi mnohem vic.
Neber to jako propagandu, ale kdyby preci jen nahodou ses chtel
dozvedet vic tak www.eurekalog.com :)
PMal
Reseni tisku do sifrovanych PDF s digitalnim podpi
[*] bleak vm <bleak(zv)mvesely(tec)com> - 22.2.2008 17:15:16
Zdravim vas,
potrebuji programove tisknout sestavu, nebo nejaky obecny dokument do
PDF souboru, ktery bude zasifrovany, opatreny digitalnim podpisem a bude
zakazano kopirovani pres schranku. Cena za komponentu (nebo jakekoliv
vhodne reseni), ktera toto umoznuje v Delphi 6 by mela byt do 200 $.
Prosim o tipy na vhodne reseni.
M. Vesely
SmallInt z Integeru
[*] lelicek(zv)volny(tec)cz - 22.2.2008 16:57:07
Ahoj,
pokud je to SQL server tak napr. CAST( slopec AS smallint)
nebo pouzitim zaokrouhleni ROUND(), CELING()
Pavel
Od: "Milan Dvorak" <dvorak(zv)gymzn(tec)cz>
> Teplota[cidlo] :=
> Smallint(ADOQ_Teploty_Centrala.fieldbyname(char(cidlo+64)).AsInteger)
> > / 32;
>
> Promenna Teplota[] je typu real. Dostavam tedy hodnotu
> s desetinnymi misty.
>
> Nyni potrebuji pro graf nacist primo z tabulky SQL
> stejna data. Jak ale
> udelal "oriznuti" SmallInt v prikazu Select?
Odpojeni IBDatabase od DB serveru po padu site
[*] lelicek(zv)volny(tec)cz - 22.2.2008 16:47:06
Ahoj,
no myslim si ze takto to doporucuje delat MS v ADO.NET.
Pavel
Od: "Milan Tomes" <delphi(zv)haida(tec)cz>
> filozofie aplikace, kdy se pro kazdou
> operaci s DB musis pripojit a pak odpojit je IMHO absolutne
> nesmyslna.
SQL FB - zmena omezeni
[*] Petr Svejda <petr(zv)svejda(tec)cz> - 23.2.2008 13:20:28
Nejde mi zmenit omezeni sloupce. Pomoci prikazu:
/*============================================================================*/
CREATE TABLE DruhyPohybu
(
Id CHAR(32) NOT NULL,
Typ_pohybu SMALLINT DEFAULT 1 CHECK (Typ_pohybu IN (1, 2)),
Nazev VARCHAR(30) CHARACTER SET WIN1250 NOT NULL UNIQUE COLLATE
PXW_CSY,
Primary Key (ID)
);
jsem si vytvoril tabulku se sloupcem Typ_pohybu s omezenim hodnoty na
cisla 1 a 2.
Nyny bych ale potreboval upravit omezeni na hodnoty 1, 2 a 3, pripadne
na jine.
Prikaz:
ALTER TABLE DRUHYPOHYBU ADD CHECK (Typ_pohybu IN (1, 2, 3));
sice prida novou podminku, ale stara v tabulce zustane.
Otazka zni: Nejde nejak odtranit puvodni podminka? Resp.: Jak zmenit
omezeni na nove hodnoty? Neco jako ALTER... DROP CHECK nefunguje.
Delphi 2007 pro Win32, Firebird 2.1
Petr Svejda
Verze bpl, D7
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 23.2.2008 09:41:17
Kdo tomu nerozumi, ten tomu sefuje :)
Ja bych to neresil ani u sefa resp. reseni by spocivalo v tom, ze bych
ho instruoval o tom, jak se pouziva instalator popr. ze instalaci radsi
provedu sam.
S pozdravem
Milan Tomes
Zdenek Kalhous napsal(a):
> To je obecne vzato velice spravny nazor. Jenze tim kutilem je v 99% pripadu muj sef a zivitel :-(
>
> > Nojo, vsak vim a proto se ty aplikace dodavaji jako
> > "sebeinstalujici" programy (zmineny instalacni program) ktere
> > vsechno vymeni jak je potreba. Jenze potrebuju resit to, ze takovej
> > kutil si pusti instalaci jednou (na svem pocitaci) a dalsi praci si
> > "zjednodusi" tim, ze uzivatelum uz jen nakopiruje exe programy.
>
> Pak nema co reklamovat. Vubec bych to neresil, protoze to bys pak
> take mohl zacit resit to, ze nekdo takhle zkopiruje cele Windows.
>
> Petr Zahradnik, pocitacovy expert
>
>
>
>
Odpojeni IBDatabase od DB serveru po padu site
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 23.2.2008 09:27:05
No u MSSQL proc ne - pouziva architekturu transakcniho logu, ale u FB je
to absolutni nesmysl.
1. casova prodleva pri connectu
2. casova prodleva pri cteni veskerych dat, ktere vraci select (neni
obvykle nutne, klient taha data postupne, zaroven tim nikoho neblokuje)
S pozdravem
Milan Tomes
lelicek(zv)volny(tec)cz napsal(a):
> Ahoj,
> no myslim si ze takto to doporucuje delat MS v ADO.NET.
>
> Pavel
>
> Od: "Milan Tomes" <delphi(zv)haida(tec)cz>
>
>> filozofie aplikace, kdy se pro kazdou
>> operaci s DB musis pripojit a pak odpojit je IMHO absolutne
>> nesmyslna.
>>
>
>
>
>
Interaktivni report - FastReport
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 23.2.2008 17:55:42
Cituji Pavel Malinsky <malinsky(zv)pmcom(tec)cz>:
>> p:=frxTest.FindObject('eNazev');
>
> kdo by me zprostredkovat FindObject() ? Report.FindObject() nic nenajde.
Najde, ja to zkousel :) Davas tomu jako parametr opravdu nazev toho
tFrxMemoView?
KR
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 23.2.2008 17:51:41
Hezky den,
potykam se s problemem, ktery jsem dosud tise ignoroval: jak zjistit,
kde ma uzivatel slozku "Dokumenty" a jak zjistit slozku spolecnou pro
vsechny uzivatele "Data aplikaci"? Sice jsem googloval a prolezal
MSDN, ale jasno v tom nemam ani omylem. Problem je, ze uzivatele
pouzivaji od Windows 98 po Visty a ja bych samozrejme potreboval, aby
se na vsech systemech instalovalo a nasledne pouzivalo to, co se na
danem systemu pouzivat ma. D6 Pro.
Diky za kazde nasmerovani,
Karel Rys
SQL FB - zmena omezeni
[*] Petr Svejda <petr(zv)svejda(tec)cz> - 23.2.2008 17:05:23
Pridelilo se mi cislo INTEG_62. Nebude u jineho zakaznika za nejakych
jinych podminek jine cislo? Napr. INTEG_65. Abych potom nesmazal neco
jineho.
Jiri Cincura napsal(a):
> Ten constraint ma nejake jmeno (INTEG_xxx), staci udelat alter table
> <table> drop constraint <...>.
>
>
SQL FB - zmena omezeni
[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 23.2.2008 16:57:22
Ten constraint ma nejake jmeno (INTEG_xxx), staci udelat alter table
<table> drop constraint <...>.
--
Jiri {x2} Cincura (Microsoft Student Partner)
http://blog.vyvojar(tec)cz/jirka/ | http://www.ID3renamer.com
Interaktivni report - FastReport
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 23.2.2008 16:35:12
Cituji Pavel Malinsky <malinsky(zv)pmcom(tec)cz>:
> Dotaz zni: jde nejakym zpusobem zmenit i hodnoty jineho textoveho objektu
> na reportu v ramci vyse uvedeneho kodu? Nevim jak se na ten jiny
> objekt v OnPreviewClick() odkazat (neco jako Report.FindObject nebo tak neco
> ?).
Ahoj,
funguje neco takoveho:
var m:tFrxMemoView;
p:tFrxComponent;
p:=frxTest.FindObject('eNazev');
if p is tFrxMemoView then tFrxMemoView(p).Text:='a';
Jen jsem to nezkousel skloubit s uz vygenerovanym reportem.
Karel Rys
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Petr Berek <sojokl(zv)seznam(tec)cz> - 23.2.2008 19:35:59
>
> Jenze :) Kdyz jako parametr predam CSIDL_COMMON_APPDATA, D6 si
> stezuji, ze neznaji. Nu asi by nekde sla zjistit hodnota te konstanty,
> ale rikam si, ze kdyz to neznaji D6, budou to znat Windows 98?
>
Ahoj,
kdysi jsem to testoval na W98 a bylo tam nejake omezeni. Dokumenty pujdou
urcite, ale Data aplikaci pro vsechny uzivatele, tam byl nejaky problem. Ted
nevim jiste, ale tusim, ze to tu slozku vubec nenaslo a data se neulozila.
Nevim uz, chce to vyzkouset, ale pamatuju si, ze s tim byl problem.
Jinak hodnoty konstant zjistuju v cyklu i= od nuly do sta, kde tu konstantu
nahrazuju tim i a nechavam si vypsat i a nazev slozky. Trochu nasilne
reseni, ale kdyz nevim, tak se k vysledku dostanu :)
Petr
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 23.2.2008 18:27:46
Resp. konretni implementace:
> GetCommonAppdataFolder()
> Returns the application data folder for all users.
function GetCommonAppdataFolder: string;
begin
Result := GetSpecialFolderLocation(CSIDL_COMMON_APPDATA);
end;
> GetPersonalFolder()
> Returns the name of the directory that serves as a common repository for
documents.
function GetPersonalFolder: string;
begin
Result := GetSpecialFolderLocation(CSIDL_PERSONAL);
end;
PMal
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 23.2.2008 19:01:49
Cituji Pavel Malinsky <malinsky(zv)pmcom(tec)cz>:
> function GetCommonAppdataFolder: string;
> begin
> Result := GetSpecialFolderLocation(CSIDL_COMMON_APPDATA);
> end;
Hm, o funkci GetSpecialFolderLocation moje Delphi neslysely :) Ani na
MSDN nejak nemuzu nic najit.
Nasel a zkusil jsem na XP tohle:
uses ActiveX, ShlObj;
procedure TDebug1Form.Button3Click(Sender: TObject);
var Allocator: IMalloc;
SpecialDir: PItemIdList;
FBuf: array[0..MAX_PATH] of Char;
begin
if SHGetMalloc(Allocator) = NOERROR then begin
SHGetSpecialFolderLocation(Handle, CSIDL_PERSONAL , SpecialDir);
SHGetPathFromIDList(SpecialDir, (zv)FBuf[0]);
Allocator.Free(SpecialDir);
ShowMessage(string(FBuf));
end;
end;
Coz snad i funguje, zatim testovano jen na tech XP, ale podle MSDN by
SHGetSpecialFolderLocation mela byt podporovana uz na Windows 95.
Jenze :) Kdyz jako parametr predam CSIDL_COMMON_APPDATA, D6 si
stezuji, ze neznaji. Nu asi by nekde sla zjistit hodnota te konstanty,
ale rikam si, ze kdyz to neznaji D6, budou to znat Windows 98?
Druha vec je, ze u CSIDL_COMMON_APPDATA jsem na netu nasel tohle:
CSIDL_COMMON_APPDATA
This folder should be used for application data that is not user
specific. For example, an application may store a spell check
dictionary, a database of clip-art or a log file in the
CSIDL_COMMON_APPDATA folder. This information will not roam and is
available to anyone using the computer. By default, this location is
read-only for normal (non-admin, non-power) Users. If an application
requires normal Users to have write access to an application specific
subdirectory of CSIDL_COMMON_APPDATA, then the application must
explicitly modify the security on that sub-directory during
application setup. The modified security must be documented in the
Vendor Questionnaire.
Coz mi prijde jednak trosku na hlavu postavene (je to slozka urcena k
tomu, aby tam aplikace mela sdilena data, ale pritom system uzivatelum
odepre zapis...), druhak jsem uz nikde nenasel info o tom, jak
nastavit, abych do te sve podslozky povolil pristup pro zapis vsem :/
Karel Rys
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 23.2.2008 18:23:45
Ahoj,
> kde ma uzivatel slozku "Dokumenty" a jak zjistit slozku
> spolecnou pro
> vsechny uzivatele "Data aplikaci"? Sice jsem googloval a prolezal
> MSDN, ale jasno v tom nemam ani omylem. Problem je, ze uzivatele
> pouzivaji od Windows 98 po Visty a ja bych samozrejme
> potreboval, aby
> se na vsech systemech instalovalo a nasledne pouzivalo to, co se na
> danem systemu pouzivat ma. D6 Pro.
co pouzivat JCL, mozna ti to pomuze:
GetCommonAppdataFolder()
Returns the application data folder for all users.
GetPersonalFolder()
Returns the name of the directory that serves as a common repository for
documents.
A mnoho dalsich...
PMal
SQL FB - zmena omezeni
[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 23.2.2008 17:57:42
On 2/23/08, Petr Svejda <petr(zv)svejda(tec)cz> wrote:
> Pridelilo se mi cislo INTEG_62. Nebude u jineho zakaznika za nejakych
> jinych podminek jine cislo? Napr. INTEG_65. Abych potom nesmazal neco
> jineho.
Pri *stejnem* poradi vsech operaci bude. Nicmene lepsi je si to
omezeni pojmenovat sam.
--
Jiri {x2} Cincura (Microsoft Student Partner)
http://blog.vyvojar(tec)cz/jirka/ | http://www.ID3renamer.com
SQL FB - zmena omezeni
[*] petr palicka <palicka.petr(zv)seznam(tec)cz> - 23.2.2008 18:07:44
Petr Svejda napsal(a):
> Pridelilo se mi cislo INTEG_62. Nebude u jineho zakaznika za nejakych
> jinych podminek jine cislo?
Ano. Muze se to zmenit treba po obnoveni databaze ze zalohy.
Peca
Interaktivni report - FastReport
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 23.2.2008 17:45:34
Ahoj,
to vypada pekne, chybu mi to nikde nehodi,
ale delam neco blbe, co mas na mysli objektem frxTest ?
> p:=frxTest.FindObject('eNazev');
kdo by me zprostredkovat FindObject() ? Report.FindObject() nic nenajde.
Dekuji PMal
> funguje neco takoveho:
>
> var m:tFrxMemoView;
> p:tFrxComponent;
>
> p:=frxTest.FindObject('eNazev');
> if p is tFrxMemoView then tFrxMemoView(p).Text:='a';
>
> Jen jsem to nezkousel skloubit s uz vygenerovanym reportem.
>
> Karel Rys
>
>
>
>
>
Interaktivni navrhar FireBird
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 24.2.2008 13:08:46
asi IBExpert, je placena i neplacena verze, podle toho, co ocekavas
http://www.hk-software.net/ibexpert.com/content/
Milan
>>> konference(zv)zus(tec)cz 24.2.2008 10:20:35 >>>
Ahoj,
muzete mi prosim poradit nejaky interativni navrhar tabulek, (neco jako
Database Desktop), pripadne cele databaze pro FireBird 1.5 a vyssi.
Nejlepe free, ale ani drobny peniz neni prekazkou.
Predem dekuji
Pavel
Interaktivni navrhar FireBird
[*] Pavel Lavicka <konference(zv)zus(tec)cz> - 24.2.2008 10:20:35
Ahoj,
muzete mi prosim poradit nejaky interativni navrhar tabulek, (neco jako
Database Desktop), pripadne cele databaze pro FireBird 1.5 a vyssi.
Nejlepe free, ale ani drobny peniz neni prekazkou.
Predem dekuji
Pavel
Interaktivni report - FastReport
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 24.2.2008 10:16:34
Cituji Pavel Malinsky <malinsky(zv)pmcom(tec)cz>:
> Nenajde :( co delam blbe, grrr. Jeste me napadlo jestli si rozumime,
> ze nasledujici kod neni v kodu aplikace, ale scriptovani na strane sestavy:
Ahaaaa :) To jsem opravdu spatne rozumel. V tom pripade je to na jednu
stranu snazsi (primo v OnClick ve skriptovacim jazyce):
Modified:=true;
tFrxMemoView(Sender).Text:='x';
ePokus.Text:='y';
ePokus2.Text:='z';
Jenze se zda, ze FastReport neocekava, ze by se menilo i neco jineho,
nez ten aktualne nakliknuty prvek. Takze sice neni problem se jmenem
odkazat na cokoli jineho, ale neprojevi se tam ta nova hodnota :/ A
bohuzel nevim, jestli jde FR nejak vysvetlit, ze se zmenily i jine
texty a ze se ma podle toho zaridit.
Karel Rys
Jak zjistit slozku Dokumenty a Data aplikaci
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 24.2.2008 09:44:32
> Hm, o funkci GetSpecialFolderLocation moje Delphi neslysely
> :) Ani na
> MSDN nejak nemuzu nic najit.
No jasne, protoze sem opet vychazel z JCL, dyt si to stahni
ze SF a mrkni jak maji udelanou implementaci hledani tehlech slozek
v unite JCLShell. http://sourceforge.net/projects/jcl/
PMal
Interaktivni report - FastReport
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 24.2.2008 09:36:31
> Najde, ja to zkousel :) Davas tomu jako parametr opravdu nazev toho
> tFrxMemoView?
Nenajde :( co delam blbe, grrr. Jeste me napadlo jestli si rozumime,
ze nasledujici kod neni v kodu aplikace, ale scriptovani na strane sestavy:
procedure SLEVA_CASTKAOnPreviewClick(Sender: TfrxView; Button: TMouseButton;
Shift: Integer; var Modified: Boolean);
var
s: String;
FCmp: TfrxComponent;
begin
s:= TfrxMemoView(Sender).Text;
TfrxMemoView(Sender).Text := InputBox('Edit', 'Edit sleva castka:', s);
// ------------->>>>>
// tady bych chtel zmenit jeste text jineho TfrxMemoView, ale neumim jej
najit
// 'mJinyText' je TfrxMemoView, ktery je na sestave pritomen
FCmp:= Report.FindObject('mJinyText');
if FCmp is TfrxMemoView then
TfrxMemoView(FCmp).Text:= 'a byla zmena';
// <<<<<<------------
Modified := True;
end;
Dekuji PMal
Interaktivni navrhar FireBird
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 24.2.2008 17:41:05
> asi IBExpert, je placena i neplacena verze, podle toho, co ocekavas
Asi urcite! Za nejakech necelejch 200euro sem nevidel nic lepsiho v pomeru
cena/funkcnost!
Nebo me asi IBE uhranul :)
PMal
Interaktivni report - FastReport
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 24.2.2008 17:41:05
> Ahaaaa :) To jsem opravdu spatne rozumel. V tom pripade je to
> na jednu
> stranu snazsi (primo v OnClick ve skriptovacim jazyce):
> nez ten aktualne nakliknuty prvek. Takze sice neni problem se jmenem
> odkazat na cokoli jineho, ale neprojevi se tam ta nova hodnota :/ A
> bohuzel nevim, jestli jde FR nejak vysvetlit, ze se zmenily i jine
> texty a ze se ma podle toho zaridit.
:)) Zrada :)
JO, s tim se taky laboroval nejak se dopracovat te Modified u toho jineho
objektu,
furt sem jen myslel, ze se na nej blbe odkazuju, ale spis jde o to jej nejak
presvedcit
o tom, ze byla zmena a chci refresh (jako u toho senderu).
Nerku-li, ze by se mi libilo, pokud se to povede, udelat to v ramci reportu,
nikoliv
vsech listu reportu(kdyz se tiskne totez pro vice radku), jako to prave
dokaze
udelat PreviewClick(). :))
Asi to holt nejde. Dik za snahu !
PMal
Odpojeni IBDatabase od DB serveru po padu site
[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 24.2.2008 18:23:08
On 2/22/08, lelicek(zv)volny(tec)cz <lelicek(zv)volny(tec)cz> wrote:
> Ahoj,
> no myslim si ze takto to doporucuje delat MS v ADO.NET.
Ale ve spojeni s connection poolem.
--
Jiri {x2} Cincura (CTO x2develop)
http://blog.vyvojar(tec)cz/jirka/ | http://www.ID3renamer.com
Interaktivni navrhar FireBird
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 25.2.2008 07:08:00
Reklama je tady zakazana, ale prece - CaseStudio2.
Kalhous
----- Original Message -----
From: Pavel Lavicka
muzete mi prosim poradit nejaky interativni navrhar tabulek, (neco jako
Database Desktop), pripadne cele databaze pro FireBird 1.5 a vyssi.
Nejlepe free, ale ani drobny peniz neni prekazkou.
SQL FB - zmena omezeni
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 25.2.2008 07:04:00
Nejde mi zmenit omezeni sloupce. Pomoci prikazu:
CREATE TABLE DruhyPohybu
(
Typ_pohybu SMALLINT DEFAULT 1 CHECK (Typ_pohybu IN (1, 2)),
);
jsem si vytvoril tabulku se sloupcem Typ_pohybu s omezenim hodnoty na
cisla 1 a 2.
Nyny bych ale potreboval upravit omezeni na hodnoty 1, 2 a 3, pripadne
na jine.
Petr Svejda
V podobnych pripadech se s uspechem utikam k pouziti pomocneho sloupce:
alter table DruhyPohybu add pom smallint;
update DruhyPohybu set pom=typ_pohybu;
alter table DruhyPohybu drop typ_pohybu;
alter table DruhyPohybu add typ_pohybu smallint ... nova definice;
update DruhyPohybu set typ_pohybu=pom;
alter table DruhyPohybu drop pom;
Samozrejme kdyz se ten sloupec vyskytuje v triggerech nebo SP tak se museji nejdriv zrusit a pak zas nahrat coz muze cely skript trochu protahnout.
Kalhous
Interaktivni navrhar FireBird
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.2.2008 07:46:04
Bohuzel CaseStudio2 jiz oficialne neexistuje a Toad DataModeller je
neco, co za mnohem, mnohem vetsi penize prinasi mnohem, mnohem mene
podporovanych DB. FB mezi nimi nehledejte a ani blizka budoucnost
podporu FB neprinese :(:(:(
Jeste, ze existujici licence plati. Jen nevim, jak to provest, kdybychom
potrebovali nejake dalsi... :(
S pozdravem
Milan Tomes
Zdenek Kalhous napsal(a):
> Reklama je tady zakazana, ale prece - CaseStudio2.
> ----- Original Message -----
> From: Pavel Lavicka
> muzete mi prosim poradit nejaky interativni navrhar tabulek, (neco jako
> Database Desktop), pripadne cele databaze pro FireBird 1.5 a vyssi.
> Nejlepe free, ale ani drobny peniz neni prekazkou.
>
Prava na Win Vista
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.2.2008 15:10:01
Ydravim,
resim jeden orisek a uz mi to leze na mozek.
Potrebuji zjistit prava procesu (nikoliv uzivatele) ve Windows Vista k
danemu prostredku (souboru, adresari, klici v registru). Na Windows XP
mi fungovala nasledujici rutina:
function GetNTAccessRights(AObject: PChar; AObjectType: SE_OBJECT_TYPE):
ACCESS_MASK;
var
SD: Pointer;
DACL: PACL;
Err: Cardinal;
GetNamedSecurityInfo: TGetNamedSecurityInfoProc;
DllHnd: HModule;
HaveToken: boolean;
Token: THandle;
BufferLength: DWORD;
GroupsTokenInfo: PTokenGroups;
UserTokenInfo: PTokenUser;
Ace: PAce;
AceIndex: word;
AceSid: PSid;
RelatedAce: boolean;
i: cardinal;
begin
Result := $FFFFFFFF;
DllHnd := 0;
UserTokenInfo := nil;
GroupsTokenInfo := nil;
HaveToken := false;
if isWinNT then
begin
try
Result := 0;
//Dynamicky nalinkuj potrebne funkce
DllHnd := LoadLibrary('ADVAPI32.DLL');
if DllHnd = 0 then
raise EG3OSError.Create('Failed to load library AdvApi32.dll !!!');
(zv)GetNamedSecurityInfo := GetProcAddress(DllHnd,
'GetNamedSecurityInfoA');
//Zjisti token
HaveToken := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, Token);
//Zjisti SID vlastnika procesu
if not GetTokenInformation(Token, TokenUser, nil, 0, BufferLength)
then
begin
Err := GetLastError;
if Err <> ERROR_INSUFFICIENT_BUFFER then
raise EG3OSError.CreateCode('Failed to get user SID for ' +
AObject + ' (GetTokenInformation - user SID buffer length) !!!', Err);
end;
UserTokenInfo := PTokenUser(AllocMem(BufferLength));
if not GetTokenInformation(Token, TokenUser, UserTokenInfo,
BufferLength, BufferLength) then
raise EG3OSError.Create('Failed to get user SID for ' + AObject
+ ' (GetTokenInformation - user SID) !!!');
//Zjisti SIDy skupin, do kterych vlastnik procesu patri
if not GetTokenInformation(Token, TokenGroups, nil, 0,
BufferLength) then
begin
Err := GetLastError;
if Err <> ERROR_INSUFFICIENT_BUFFER then
raise EG3OSError.CreateCode('Failed to get groups SID ' +
AObject + ' (GetTokenInformation - groups buffer length) !!!', Err);
end;
GroupsTokenInfo := PTokenGroups(AllocMem(BufferLength));
if not GetTokenInformation(Token, TokenGroups, GroupsTokenInfo,
BufferLength, BufferLength) then
raise EG3OSError.Create('Failed to get groups SID for ' +
AObject + ' (GetTokenInformation - groups) !!!');
//Zjisti DACL pro pozadovany prostredek
Err := GetNamedSecurityInfo(AObject, AObjectType,
DACL_SECURITY_INFORMATION, nil, nil, (zv)DACL, nil, SD);
if Err <> ERROR_SUCCESS then
raise EG3OSError.CreateCode('Failed to get DACL for ' + AObject
+ ' (GetNamedSecurityInfo) !!!', Err)
else
begin
if DACL = nil
then //Null DACL -
nesmi byt
if AObjectType = SE_FILE_OBJECT
then //Pokud se pozaduje DACL souboru -
na souborovem systemu FAT se ACL nevraci
begin
result := $FFFFFFFF;
exit;
end
else
raise EG3OSError.CreateCode('Failed to get DACL for ' +
AObject + ' (GetNamedSecurityInfo - Dacl = nil) !!!', Err);
if not IsValidAcl(DACL^) then
raise EG3OSError.Create('ACL is not valid for ' + AObject + '
(IsValidAcl) !!!');
for AceIndex := 0 to Pred(DACL^.AceCount) do
begin
GetAce(DACL^, AceIndex, Pointer(Ace));
AceSid := PSid((zv)Ace.AccessAllowedAce.SidStart);
RelatedAce := false;
if EqualSid(AceSid, UserTokenInfo^.User.Sid) then
RelatedAce := true
else
begin
for i := 0 to Pred(GroupsTokenInfo^.GroupCount) do
begin
{$IFOPT R+}
{$DEFINE RANGECHECKS_ON}
{$ENDIF}
{$RANGECHECKS
OFF} //
Groups is an array [0..0] of TSIDAndAttributes, ignore ERangeError
if EqualSid(AceSid, GroupsTokenInfo^.Groups[i].Sid) then
begin
RelatedAce := true;
break;
end;
{$IFDEF RANGECHECKS_ON}
{$RANGECHECKS ON}
{$UNDEF RANGECHECKS_ON}
{$ENDIF}
end;
end;
if RelatedAce then
begin
case Ace^.AceType of
ACCESS_ALLOWED_ACE_TYPE: Result := Result or
Ace^.AccessAllowedAce.Mask;
ACCESS_DENIED_ACE_TYPE: Result := Result or
Ace^.AccessDeniedAce.Mask;
end;
end;
end;
end;
finally
if HaveToken then
CloseHandle(Token);
if SD <> nil then
LocalFree(Cardinal(SD));
if DllHnd <> 0 then
FreeLibrary(DllHnd);
if UserTokenInfo <> nil then
FreeMem(UserTokenInfo);
if GroupsTokenInfo <> nil then
FreeMem(GroupsTokenInfo);
end;
end;
end;
Bohuzel na Windows Vista sice funguje dal, ale vraci nesmysly. Ve
skutecnosti mi vrati, ze dany uzivatel ma opravneni zapisu k danemu
klici v registru, ale v pripade, ze dany proces bezi s non elevated
pravy, tak tato opravneni nema. Vlastne to funguje tak, ze zjistim SID
uzivatele, ktery spustil proces a skupin do kterych tento uzivatel patri
a k temto SID hledam prislusne polozky v DACL. Tusim, ze na Windows
Vista na to musim jinak a potrebuji testovat opravneni procesu k danemu
prostredku a to je problem, protoze opravdu netusim jak. Zkousel jsem toto:
procedure TForm1.Button1Click(Sender: TObject);
var
SD: PSECURITY_DESCRIPTOR;
Err: Cardinal;
DllHnd: HModule;
GetNamedSecurityInfo: TGetNamedSecurityInfoProc;
Token: THandle;
GM: _GENERIC_MAPPING;
PS: _PRIVILEGE_SET;
PSSize: Cardinal;
Mask: Cardinal;
AccessStatus: LongBool;
begin
Token := INVALID_HANDLE_VALUE;
DllHnd := 0;
if isWinNT then
begin
try
//Dynamicky nalinkuj potrebne funkce
DllHnd := LoadLibrary('ADVAPI32.DLL');
if DllHnd = 0 then
raise EG3OSError.Create('Faled to load library AdvApi32.dll !!!');
(zv)GetNamedSecurityInfo := GetProcAddress(DllHnd,
'GetNamedSecurityInfoA');
//Zjisti token
if not OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS,
Token) then
raise EG3OSError.Create('OpenProcessToken failed !!!');
//Zjisti Security descriptor pro pozadovany prostredek
Err := GetNamedSecurityInfo('USERS\.DEFAULT\Software',
SE_REGISTRY_KEY, 0, nil, nil, nil, nil, SD);
if Err <> ERROR_SUCCESS then
raise EG3OSError.CreateCode('Failed to get security descriptor
for USERS\.DEFAULT\Software !!!', Err)
else
begin
GM.GenericRead := KEY_READ;
GM.GenericWrite := KEY_WRITE;
GM.GenericExecute := KEY_EXECUTE;
GM.GenericAll := KEY_ALL_ACCESS;
PSSize := SizeOf(_PRIVILEGE_SET);
if not AccessCheck(PSecurityDescriptor(SD), Token,
MAXIMUM_ALLOWED, GM, PS, PSSize, Mask, AccessStatus) then
raise EG3OSError.Create('AccessCheck failed !!!');
if not AccessStatus then
raise EG3OSError.Create('Access denied !!!');
end;
finally
if Token <> INVALID_HANDLE_VALUE then
CloseHandle(Token);
if SD <> nil then
LocalFree(Cardinal(SD));
if DllHnd <> 0 then
FreeLibrary(DllHnd);
end;
end;
end;
ale to mi pro zmenu vraci po volani AccessCheck chybu 1309 - An attempt
has been made to operate on an impersonation token by a thread that is
not currently impersonating a client.
Uz jsem opravdu zoufaly a potrebuji to v nejblizsi dobe (rozumej vcera)
dodelat, protoze je to posledni vec, ktera me brzdi v tom, abych mohl
prohlasit, ze bez problemu podporujeme Windows Vista.
Diky
S pozdravem
Milan Tomes
Prava na Win Vista
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 25.2.2008 21:02:26
Zdar
>Bohuzel na Windows Vista sice funguje dal, ale vraci nesmysly. Ve
skutecnosti mi vrati, ze dany uzivatel ma opravneni zapisu k danemu klici v
registru, >ale v pripade, ze dany proces bezi s non elevated pravy, tak tato
opravneni nema. Vlastne to funguje tak, ze zjistim SID uzivatele, ktery
spustil proces a
nemam moc cas to zkoumat ale zkusim nastrelit.
Pokud resis problem ze prava ti rikaji ze user tam pristup ma pokud je
elevated ale process elevated neni tak by mohl byt problem v tom ze
porovnavas pouze prava jako takova. Tj. podle NT style. Ten tvuj kod me tak
na prvni pohled i podle toho co pises prijde.
Podle mne by jsi mel pro Vista compatabilitu doplnit jeste zpracovani
mandatory integrity control levelu.
U ciloveho objektu zjistis jeho level a zda ma povolen pristup vyssi/nizssi
level a pak na zaklade levelu tveho procesu muzes zjistit vysledek. Pokud s
levelama moc nesachujes tak by stacilo porovnat levely a spolehnout se na to
ze defaultne muze vyssi level cist nizsi nebo stejny.
Integrity level je ulozeny v prvni polozce SubAuthority u SIDu
(SubAuthority[0]) , polozky hledej v SDK (zacni s hledanim
SECURITY_MANDATORY_MEDIUM_RID) , kde jsou ulozene masky (napr.
SYSTEM_MANDATORY_LABEL_NO_WRITE_UP) jsem nezkoumal takze ti to z hlavy
nereknu.
Cau
Radek Voltr
Xacti
Prava na Win Vista
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.2.2008 22:04:31
Odpovim si sam - stacila jen malinka uprava:
function GetNTAccessRights(AObject: PChar; AObjectType: SE_OBJECT_TYPE):
ACCESS_MASK;
procedure ApplyAllowMask(Mask: ACCESS_MASK; var Result: ACCESS_MASK);
begin
Result := Result or Mask;
end;
procedure ApplyDenyMask(Ace: TAce; var Result: ACCESS_MASK);
var
Mask: ACCESS_MASK;
i: byte;
BoolArray: TBooleanArray;
begin
case Ace.AceType of
ACCESS_ALLOWED_ACE_TYPE: Mask := Ace.AccessAllowedAce.Mask;
ACCESS_DENIED_ACE_TYPE: Mask := Ace.AccessDeniedAce.Mask;
else
exit;
end;
BitsToBooleans(Mask, BoolArray, true);
for i := 0 to 31 do
if BoolArray[i] then
ClearBit(Integer(Result), i);
end;
procedure ProcessAce(Ace: TAce; var Result: ACCESS_MASK);
begin
case Ace.AceType of
ACCESS_ALLOWED_ACE_TYPE: ApplyAllowMask(Ace.AccessAllowedAce.Mask,
Result);
ACCESS_DENIED_ACE_TYPE: ApplyDenyMask(Ace, Result);
end;
end;
var
SD: Pointer;
DACL: PACL;
Err: Cardinal;
GetNamedSecurityInfo: TGetNamedSecurityInfoProc;
DllHnd: HModule;
Token: THandle;
BufferLength: DWORD;
GroupsTokenInfo: PTokenGroups;
UserTokenInfo: PTokenUser;
Ace: PAce;
AceIndex: word;
AceSid: PSid;
i: cardinal;
begin
Result := $FFFFFFFF;
if not isWinNT then
exit;
DllHnd := 0;
Token := INVALID_HANDLE_VALUE;
UserTokenInfo := nil;
GroupsTokenInfo := nil;
try
Result := 0;
DllHnd := LoadLibrary('ADVAPI32.DLL');
if DllHnd = 0 then
raise EG3OSError.Create('Failed to load library AdvApi32.dll !!!');
(zv)GetNamedSecurityInfo := GetProcAddress(DllHnd,
'GetNamedSecurityInfoA');
if not OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, Token) then
raise EG3OSError.Create('OpenProcessToken failed !!!');
if not GetTokenInformation(Token, TokenUser, nil, 0, BufferLength) then
begin
Err := GetLastError;
if Err <> ERROR_INSUFFICIENT_BUFFER then
raise EG3OSError.CreateCode('GetTokenInformation failed !!!', Err);
end;
UserTokenInfo := PTokenUser(AllocMem(BufferLength));
if not GetTokenInformation(Token, TokenUser, UserTokenInfo,
BufferLength, BufferLength) then
raise EG3OSError.Create('GetTokenInformation failed !!!');
if not GetTokenInformation(Token, TokenGroups, nil, 0, BufferLength)
then
begin
Err := GetLastError;
if Err <> ERROR_INSUFFICIENT_BUFFER then
raise EG3OSError.CreateCode('GetTokenInformation failed !!!', Err);
end;
GroupsTokenInfo := PTokenGroups(AllocMem(BufferLength));
if not GetTokenInformation(Token, TokenGroups, GroupsTokenInfo,
BufferLength, BufferLength) then
raise EG3OSError.Create('GetTokenInformation failed !!!');
Err := GetNamedSecurityInfo(AObject, AObjectType,
DACL_SECURITY_INFORMATION, nil, nil, (zv)DACL, nil, SD);
if Err <> ERROR_SUCCESS then
raise EG3OSError.CreateCode('GetNamedSecurityInfo failed !!!',
Err)
else
begin
if DACL = nil then //Null DACL - nesmi byt
if AObjectType = SE_FILE_OBJECT then //Pokud se pozaduje DACL
souboru - na souborovem systemu FAT se ACL nevraci
begin
Result := $FFFFFFFF;
exit;
end
else
raise EG3OSError.CreateCode('GetNamedSecurityInfo failed !!!',
Err);
if not IsValidAcl(DACL^) then
raise EG3OSError.Create('IsValidAcl failed !!!');
for AceIndex := 0 to Pred(DACL^.AceCount) do
begin
GetAce(DACL^, AceIndex, Pointer(Ace));
AceSid := PSid((zv)Ace.AccessAllowedAce.SidStart);
if EqualSid(AceSid, UserTokenInfo^.User.Sid) then
ProcessAce(Ace^, Result)
else
begin
for i := 0 to Pred(GroupsTokenInfo^.GroupCount) do
begin
{$IFOPT R+}
{$DEFINE RANGECHECKS_ON}
{$ENDIF}
{$RANGECHECKS OFF} // Groups is an array [0..0] of TSIDAndAttributes,
ignore ERangeError
if EqualSid(AceSid, GroupsTokenInfo^.Groups[i].Sid) then
if (GroupsTokenInfo^.Groups[i].Attributes and
SE_GROUP_USE_FOR_DENY_ONLY) = SE_GROUP_USE_FOR_DENY_ONLY then
ApplyDenyMask(Ace^, Result)
else
ProcessAce(Ace^, Result);
{$IFDEF RANGECHECKS_ON}
{$RANGECHECKS ON}
{$UNDEF RANGECHECKS_ON}
{$ENDIF}
end;
end;
end;
end;
finally
if Token <> INVALID_HANDLE_VALUE then
CloseHandle(Token);
if SD <> nil then
LocalFree(Cardinal(SD));
if DllHnd <> 0 then
FreeLibrary(DllHnd);
if UserTokenInfo <> nil then
FreeMem(UserTokenInfo);
if GroupsTokenInfo <> nil then
FreeMem(GroupsTokenInfo);
end;
end;
Pokud ale mate nekdo napad, jak to vyresit s pouzitim funkce
AccessCheck, tak se vubec nebudu branit.
S pozdravem
Milan Tomes
Milan Tomes napsal(a):
> Potrebuji zjistit prava procesu (nikoliv uzivatele) ve Windows Vista k
> danemu prostredku (souboru, adresari, klici v registru). Na Windows XP
> mi fungovala nasledujici rutina:
>
> function GetNTAccessRights(AObject: PChar; AObjectType: SE_OBJECT_TYPE):
> ACCESS_MASK;
> var
> SD: Pointer;
> DACL: PACL;
> Err: Cardinal;
> GetNamedSecurityInfo: TGetNamedSecurityInfoProc;
> DllHnd: HModule;
>
> HaveToken: boolean;
> Token: THandle;
> BufferLength: DWORD;
> GroupsTokenInfo: PTokenGroups;
> UserTokenInfo: PTokenUser;
> Ace: PAce;
> AceIndex: word;
> AceSid: PSid;
> RelatedAce: boolean;
> i: cardinal;
> begin
> Result := $FFFFFFFF;
> DllHnd := 0;
> UserTokenInfo := nil;
> GroupsTokenInfo := nil;
> HaveToken := false;
> if isWinNT then
> begin
> try
> Result := 0;
> //Dynamicky nalinkuj potrebne funkce
> DllHnd := LoadLibrary('ADVAPI32.DLL');
> if DllHnd = 0 then
> raise EG3OSError.Create('Failed to load library AdvApi32.dll !!!');
> (zv)GetNamedSecurityInfo := GetProcAddress(DllHnd,
> 'GetNamedSecurityInfoA');
> //Zjisti token
> HaveToken := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, Token);
> //Zjisti SID vlastnika procesu
> if not GetTokenInformation(Token, TokenUser, nil, 0, BufferLength)
> then
> begin
> Err := GetLastError;
> if Err <> ERROR_INSUFFICIENT_BUFFER then
> raise EG3OSError.CreateCode('Failed to get user SID for ' +
> AObject + ' (GetTokenInformation - user SID buffer length) !!!', Err);
> end;
> UserTokenInfo := PTokenUser(AllocMem(BufferLength));
> if not GetTokenInformation(Token, TokenUser, UserTokenInfo,
> BufferLength, BufferLength) then
> raise EG3OSError.Create('Failed to get user SID for ' + AObject
> + ' (GetTokenInformation - user SID) !!!');
> //Zjisti SIDy skupin, do kterych vlastnik procesu patri
> if not GetTokenInformation(Token, TokenGroups, nil, 0,
> BufferLength) then
> begin
> Err := GetLastError;
> if Err <> ERROR_INSUFFICIENT_BUFFER then
> raise EG3OSError.CreateCode('Failed to get groups SID ' +
> AObject + ' (GetTokenInformation - groups buffer length) !!!', Err);
> end;
> GroupsTokenInfo := PTokenGroups(AllocMem(BufferLength));
> if not GetTokenInformation(Token, TokenGroups, GroupsTokenInfo,
> BufferLength, BufferLength) then
> raise EG3OSError.Create('Failed to get groups SID for ' +
> AObject + ' (GetTokenInformation - groups) !!!');
> //Zjisti DACL pro pozadovany prostredek
> Err := GetNamedSecurityInfo(AObject, AObjectType,
> DACL_SECURITY_INFORMATION, nil, nil, (zv)DACL, nil, SD);
> if Err <> ERROR_SUCCESS then
> raise EG3OSError.CreateCode('Failed to get DACL for ' + AObject
> + ' (GetNamedSecurityInfo) !!!', Err)
> else
> begin
> if DACL = nil
> then //Null DACL -
> nesmi byt
> if AObjectType = SE_FILE_OBJECT
> then //Pokud se pozaduje DACL souboru -
> na souborovem systemu FAT se ACL nevraci
> begin
> result := $FFFFFFFF;
> exit;
> end
> else
> raise EG3OSError.CreateCode('Failed to get DACL for ' +
> AObject + ' (GetNamedSecurityInfo - Dacl = nil) !!!', Err);
> if not IsValidAcl(DACL^) then
> raise EG3OSError.Create('ACL is not valid for ' + AObject + '
> (IsValidAcl) !!!');
> for AceIndex := 0 to Pred(DACL^.AceCount) do
> begin
> GetAce(DACL^, AceIndex, Pointer(Ace));
> AceSid := PSid((zv)Ace.AccessAllowedAce.SidStart);
> RelatedAce := false;
> if EqualSid(AceSid, UserTokenInfo^.User.Sid) then
> RelatedAce := true
> else
> begin
> for i := 0 to Pred(GroupsTokenInfo^.GroupCount) do
> begin
> {$IFOPT R+}
> {$DEFINE RANGECHECKS_ON}
> {$ENDIF}
> {$RANGECHECKS
> OFF} //
> Groups is an array [0..0] of TSIDAndAttributes, ignore ERangeError
> if EqualSid(AceSid, GroupsTokenInfo^.Groups[i].Sid) then
> begin
> RelatedAce := true;
> break;
> end;
> {$IFDEF RANGECHECKS_ON}
> {$RANGECHECKS ON}
> {$UNDEF RANGECHECKS_ON}
> {$ENDIF}
> end;
> end;
> if RelatedAce then
> begin
> case Ace^.AceType of
> ACCESS_ALLOWED_ACE_TYPE: Result := Result or
> Ace^.AccessAllowedAce.Mask;
> ACCESS_DENIED_ACE_TYPE: Result := Result or
> Ace^.AccessDeniedAce.Mask;
> end;
> end;
> end;
> end;
> finally
> if HaveToken then
> CloseHandle(Token);
> if SD <> nil then
> LocalFree(Cardinal(SD));
> if DllHnd <> 0 then
> FreeLibrary(DllHnd);
> if UserTokenInfo <> nil then
> FreeMem(UserTokenInfo);
> if GroupsTokenInfo <> nil then
> FreeMem(GroupsTokenInfo);
> end;
> end;
> end;
>
> Bohuzel na Windows Vista sice funguje dal, ale vraci nesmysly. Ve
> skutecnosti mi vrati, ze dany uzivatel ma opravneni zapisu k danemu
> klici v registru, ale v pripade, ze dany proces bezi s non elevated
> pravy, tak tato opravneni nema. Vlastne to funguje tak, ze zjistim SID
>
>
OT: soubory typu pdf a fdf
[*] pavel zidek <delphi(zv)kopr(tec)cz> - 26.2.2008 08:03:13
zdravim,
delam formulare ve formatu pdf a data tam vkladam pomoci FDF. Bohuzel
nekteri uzivatele nechapou, ze je treba klikat na soubory s priponou FDF.
Lze nejak data s priponou FDF primo spojit do jednoho souboru PDF
diky
pavel zidek
delphi(zv)kopr(tec)cz
OT: Seminar "Belohrad 2008"
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 26.2.2008 15:05:45
Vazeni pratele,
dovolte, prosim, abych vas informoval, ze seznam prednasek na 10. rocnik tradicniho seminare pro vyvojare je vicemene kompletni. S prednasejicimi jeste doladujeme detaily.
Pro priznivce Borland / CodeGear / Delphi / RAD Studio mam dobrou zpravu: podarilo se zajistit ucast Pawla Glowackeho primo od CodeGear. Prednaska bude vedena v anglictine a tlumocena do cestiny.
Prevahu temat Microsoftu bude dale vyvazovat Pavel Cisar a jeho "Valka o platformu".
A mozna prijde jeste Java ... (tahle nabidka prisla pred minutou, jeste to neni dohodnuto)
Tesim se na vasi ucast na seminari.
Jan Sebelik
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
Nekolik dotazu k Inno Setup
[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 27.2.2008 20:11:38
Radek Voltr wrote:
> Zdar
>
>> 1. Lze nejak programove prepnout Uninstallable?
> jak to myslis ?
>
Potrebuju behem instalace zvolit jeji typ (viz bod 3). Pro prvni typ
potrebuju klasickou moznost odinstalace, pro druhy typ se setup muze
volat x-krat (zadaji se ruzne hodnoty), ale v tomhle pripade nechci
zadnou moznost odinstalovani.
>> 2. Jak se ve scriptu dostanu k hodnotam v [Setup]?
> podle mne ne. Muzes plnit hodnoty v polozkach setup na zaklade vysledku
> funkce z [Code] ale opacne to asi nejde
>
Jestli to lze tedy opacne, pak bych mozna byl schopny udelat bod 1.
Hodnotu ze [Setup] chci proto, ze na urcitem dialogu chci pouzit
defaultni text "msgSelectDirDesc" a ten bohuzel nema %1, ale [name].
>> 3. Lze zmenit vyber mezi [Components] z ComboBoxu na RadioButtony?
> zkus flag exclusive , podle zdrojaku pak pridava inno do listu radiobutton
> misto checkboxu
>
Diky, zkusim.
>> 4. Lze osetrit navratovou hodnotu z exe spusteneho v sekci [Run]? Nebo to
> musim zavolat pres Exec?
> podle zdrojaku to vypada ze ne
>
OK
>
> Radek Voltr
Diky za pomoc,
pl
Nekolik dotazu k Inno Setup
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 27.2.2008 17:41:27
Zdar
>1. Lze nejak programove prepnout Uninstallable?
jak to myslis ?
>2. Jak se ve scriptu dostanu k hodnotam v [Setup]?
podle mne ne. Muzes plnit hodnoty v polozkach setup na zaklade vysledku
funkce z [Code] ale opacne to asi nejde
>3. Lze zmenit vyber mezi [Components] z ComboBoxu na RadioButtony?
zkus flag exclusive , podle zdrojaku pak pridava inno do listu radiobutton
misto checkboxu
>4. Lze osetrit navratovou hodnotu z exe spusteneho v sekci [Run]? Nebo to
musim zavolat pres Exec?
podle zdrojaku to vypada ze ne
Cus
Radek Voltr
Xacti
Nekolik dotazu k Inno Setup
[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 27.2.2008 17:17:26
Ahoj,
1. Lze nejak programove prepnout Uninstallable?
2. Jak se ve scriptu dostanu k hodnotam v [Setup]?
3. Lze zmenit vyber mezi [Components] z ComboBoxu na RadioButtony?
4. Lze osetrit navratovou hodnotu z exe spusteneho v sekci [Run]? Nebo
to musim zavolat pres Exec?
Zatim diky,
Petr Langer
Seminar "Belohrad 2008"
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 27.2.2008 16:19:21
> drobny dotaz - bude se diskutovat i o FastReportu ?
> diky pavel zidek
Nejsem si jist, zda bych nemel odpovidat mimo konferenci. Ostatne i tento dotaz asi patril spise na muj soukromy mail.
Presto odpovim, kdyz uz byl dotaz do konference adresovan.
-
Obavam se, ze tak specialni tema asi nemuze byt primo tematem seminare. Temata jsou spise obecnejsi (www.haes(tec)cz/ws_pozv.asp) a predstavuji nejzhavejsi technologicke novinky z dilny Microsoft, CodeGear, atd.
-
Pokud je FastReport soucasti "CodeGear RAD Studio 2007" (nevim, ja jsem s Delphi skoncil na D7), pak na seminari bude pritomna osoba vyslana primo od CodeGear, aby jakykoli dotaz na toto tema nejpovolaneji zodpovedela - Pawel Glowacki.
-
Samotny seminar ma vyssi ambice, nez jenom prezentovat jednotlive prednasky. Spousta casu je predurcena na "kuloarni diskuse", ktere obvykle vrcholi v noci z prvniho na druhy den seminare (loni http://www.haes(tec)cz/ws2007.asp?r=workshop#Rozvrh).
Pri takovem poctu ucastniku si lze dozajista najit partnera, se kterym danou (a nejen tuto) problematiku proberes.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
asm ROL nahrada v Pascale
[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 27.2.2008 16:01:20
On Wednesday, February 27, 2008 9:48 AM ,
Roland Turcan <konf(zv)rotursoft.sk> wrote:
> Hello All!
>
> Mam funkciu ROL napisanu v ASM, lenze potrebujem prerobit vsetky ASM
> funkcie na pure pascal code, koli procesorovej nezavislosti.
>
pokud je vstupem Byte pak staci tohle:
Function ROL(A,Count : Byte) : Byte;
VAR
W : Word;
begin
Count := Count and $07;
W := A SHL Count;
Result := Hi(W) or Lo(W);
end;
Ma-li byt vstupem neco delsiho nez Byte pak asi vzniknou mozna
problemy . Pac je potreba sehnat platforme nezavisle cteni vyssi a
nizsi pulky. A Hi() a Lo() podle dokumentace vzdy pocita integerem na
vstupu.
D. Toman
asm ROL nahrada v Pascale
[*] Roland Turcan <konf(zv)rotursoft.sk> - 27.2.2008 09:48:53
Hello All!
Mam funkciu ROL napisanu v ASM, lenze potrebujem prerobit vsetky ASM
funkcie na pure pascal code, koli procesorovej nezavislosti.
Aky je ekvivalent asm ROL v pascale, alebo nemate uz niekto
naprogramovanu funkciu?
Dakujem.
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Seminar "Belohrad 2008"
[*] pavel zidek <delphi(zv)kopr(tec)cz> - 27.2.2008 09:30:52
zdravim,
drobny dotaz - bude se diskutovat i o FastReportu ?
diky pavel zidek
delphi(zv)kopr(tec)cz
--------------------------------------------------
From: "Jan Sebelik" <honza(zv)haes(tec)cz>
Sent: Tuesday, February 26, 2008 3:05 PM
To: <delphi-l(zv)clexpert(tec)cz>
Subject: OT: Seminar "Belohrad 2008"
> Vazeni pratele,
>
> dovolte, prosim, abych vas informoval, ze seznam prednasek na 10. rocnik
> tradicniho seminare pro vyvojare je vicemene kompletni. S prednasejicimi
> jeste doladujeme detaily.
>
> Pro priznivce Borland / CodeGear / Delphi / RAD Studio mam dobrou zpravu:
> podarilo se zajistit ucast Pawla Glowackeho primo od CodeGear. Prednaska
> bude vedena v anglictine a tlumocena do cestiny.
>
> Prevahu temat Microsoftu bude dale vyvazovat Pavel Cisar a jeho "Valka o
> platformu".
>
> A mozna prijde jeste Java ... (tahle nabidka prisla pred minutou, jeste to
> neni dohodnuto)
>
> Tesim se na vasi ucast na seminari.
>
> Jan Sebelik
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW
> = www.haes(tec)cz
> = Vojtiskova 321
> = 507 81 Lazne Belohrad
> ====================================
>
>
>
Verze bpl, D7
[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 27.2.2008 08:22:47
Ahoj,
> V aplikaci se mi vyskytuji vyjimky, ktere osetruji v
> globalnim exception handleru. Teprve, kdyz to projde mym
> handlerem (bud vyjimku uplne osetrim, nebo napr. menim jeji
> typ nebo vlastni zpravu te vyjimky), tak je pripadne vyvolan
> nejaky ten exception dialog. Jde to same udelat i v
> EurekaLogu nebo to musim nejak slozite osetrovat ?
NO jestli jsem to dobre pochopil, tak se podivej na moznosti
nastaveni Exceptions filters, Catch handled exceptions
a prislusne eventy ExceptionNotify, ExceptionActionNotify.
JInak doporucuji news.eurekalog.com kde primo autor
je velmi aktivni v odpovedich.
PMal
Verze bpl, D7
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 26.2.2008 23:08:08
Ahoj,
reaguji na tento prispevej, protoze jsem na jeho zaklade pro nasi firmu
EurekaLog zakoupil. Nicmene chci se zeptat na jednu podstatnou vec -
V aplikaci se mi vyskytuji vyjimky, ktere osetruji v globalnim exception handleru. Teprve, kdyz to projde mym handlerem (bud vyjimku uplne osetrim, nebo napr. menim jeji typ nebo vlastni zpravu te vyjimky), tak je pripadne vyvolan nejaky ten exception dialog. Jde to same udelat i v EurekaLogu nebo to musim nejak slozite osetrovat ?
Diky
S pozdravem
Milan Tomes
Pavel Malinsky napsal(a):
> Neber to jako propagandu, ale kdyby preci jen nahodou ses chtel
> dozvedet vic tak www.eurekalog.com :)
>
> PMal
>
Nekolik dotazu k Inno Setup
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 27.2.2008 21:19:44
>Dnes jsem videl Inno poprve, v instalaci moc ukazek na toto neni a na webu
jsem toho bohuzel taky moc nenasel, takze pripadne uvitam i nejake zdroje.
Stahni si zdrojaky, u spousty veci je to nejrychlejsi cesta jak zjistit zda
to co chces je vubec realne.
Co se tyka [Types] tak to je combo a je natvrdo na strance. Takze by jsi to
musel udelat tak ze by jsi to TypesCombo a ComponentsList
(je ve WizardFormu) skryl, na prislusnou stranku nacpal svoje radia a pri
kliku na ne prepnul to skryte combo tak aby se inno podle nej chytlo.
Podle mne to takto udelat jde v pohode ale sample po me nechtej :-)
Nevim zda uz jsi zjistil ale v compil32 se da trasovat. Bez toho je vyvoj
nerealny a obcas to nekdo prehlizi. Nevim jak je na tom ted ISTool, nase
slozite a provazane iss nezvlada takze ho uz nepouzivam.
Jinak ale pocitej s tim ze pokud budes mit podobne pozadavky a jsi na tom
rozumne v delphi (rozumis kodu a netahas jen komponenty) tak je
kolikrat nejlepsi si prislusnou funkci do scriptu v innu proste doplnit.
Zjistil jsem ze se tam da pomerne v pohode doplnit i vlastni komponenta
(my tam mame integrovanou placenou html label ktera se ted da pouzivat
normalne z [code]) a funkce nebo polozky do setup header (napr. to
ze welcome text neni text ale rtf ze souboru linkovaneho v setupu) se daji
taky pomerne v pohode.
Akorat to chce jednou za cas si dat cas a syncnout zdroje :-)
Cus
Radek
Xacti
Nekolik dotazu k Inno Setup
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 27.2.2008 21:09:43
>> 1. Lze nejak programove prepnout Uninstallable?
>Potrebuju behem instalace zvolit jeji typ (viz bod 3). Pro prvni typ
potrebuju klasickou moznost odinstalace, pro druhy typ se setup muze volat
x-krat >(zadaji se ruzne hodnoty), ale v tomhle pripade nechci zadnou
moznost odinstalovani.
jde to prepnout tak ze hodnotu nactes z kodu, my pouzivame napr tendle kod :
DefaultDirName={code:InstallDir}
kde InstallDir je function InstallDir(Param:string):string;
trochu problem muze byt v tom ze (podle mne) se hodnoty ze setup headeru
(rozumej hodnoty
ze sekce [setup]) nacitaj pomerne brzo a nevim zda uz v tendle okamzik budes
vedet od usera
zda se ma delat odinstalace ci nikoliv. Ale to zkusis a muzes dohledat a
pripadne upravit ve zdrojich
inna, kdyby nebylo inno open source tak jsem se uz davno zastrelil :-D
>Hodnotu ze [Setup] chci proto, ze na urcitem dialogu chci pouzit defaultni
text "msgSelectDirDesc" a ten bohuzel nema %1, ale [name].
funkce pro expanzi [name] opravdu publikovana neni ale myslim ze se to da
obejit, zkus todle :
var
Page: TWizardPage;
begin
Page := PageFromID(wpSelectDir);
text_co_chces :=Page.Description;
end;
>Diky za pomoc,
neni zac
Cus
Radek
Xacti
Nekolik dotazu k Inno Setup
[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 27.2.2008 21:05:42
Jeste doplnek - spatne jsem to totiz napsal
Radek Voltr wrote:
>> 3. Lze zmenit vyber mezi [Components] z ComboBoxu na RadioButtony?
> zkus flag exclusive , podle zdrojaku pak pridava inno do listu radiobutton
> misto checkboxu
>
Melo tam byt vyber mezi [Types] a nikolivek [Components], tam exclusive
neni.
No, abych pravdu rekl, vahal jsem, jestli to rozliseni typu instalace
dat jako jednu polozku do [Types] a rozlisit to v [Components], nebo tak
jak jsem to udelal ted - dve polozky v [Types] a pro kazdou z nich jeden
prislusny zaznam v [Components] (kvuli dalsim sekcim, kde se aplikuje
pouze Components:). Nebo to udelat jeste uplne jinak?
Dnes jsem videl Inno poprve, v instalaci moc ukazek na toto neni a na
webu jsem toho bohuzel taky moc nenasel, takze pripadne uvitam i nejake
zdroje.
Diky,
pl
Firebird a Terminal Services
[*] delphinpp(zv)atlas(tec)cz - 28.2.2008 15:27:03
Zdar,
nainstaloval som vo MS Win Server 2003 ako administrator FB ver. 1.5.5.
Pod tymto admin uctom bez problemov spustim moju Delphi app., ktora
pracuje s FB.. Potom som vytvoril noveho uzivatela, ktory je v grupe
Users.. Nasledne sa prihlasim ako tento uzivatel cez Terminal Services
na tento server.. je zaujimave, ze v tray-i vidim ikonu FB Guardian.
Chcem spustit moju Delphi app. avsak vyhlasi mi to chybu "operating
system directive Create File failed".. necham toto prihlasenie bezat a
cez Terminal Services sa prihlasim ako administrator.. zaujimave je, ze
cez Task Manager vidim spusteni 2x proces fbguard a fbserver.. raz je to
v kontexte uctu SYSTEM a raz v kontexte uctu novo vytvoreneho uzivatela
z grupy Users..
Ako spravne nainstalovat a nastavit FB tak, aby som korektne mohol FB
vyuzivat cez Terminal Services ?
dufam, ze som to popisal zrozumitelne.. dik za kazdu radu..
Miso
Firebird a Terminal Services
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 28.2.2008 22:47:34
Cituji delphinpp(zv)atlas(tec)cz:
> Ako spravne nainstalovat a nastavit FB tak, aby som korektne mohol FB
> vyuzivat cez Terminal Services ?
Ahoj, sice jsem to nezkousel, ale myslim si, ze by melo stacit
nainstalovat FB jako sluzbu. Tim padem se spusti jednou, bez ohledu na
to, zda je ci neni nekdo prihlaseny. Guardian neni pak zapotrebi
vubec, rekl bych.
Karel Rys
Firebird a Terminal Services
[*] delphinpp(zv)atlas(tec)cz - 29.2.2008 09:44:23
Karel Rys wrote / napisal(a):
> Ahoj, sice jsem to nezkousel, ale myslim si, ze by melo stacit
> nainstalovat FB jako sluzbu. Tim padem se spusti jednou, bez ohledu na
> to, zda je ci neni nekdo prihlaseny. Guardian neni pak zapotrebi
> vubec, rekl bych.
>
>
Ahoj,
ked, som sa snazil nainstalovat FB pod admin uctom pripojeniim cez
"mstsc.exe" tak mi FB service blbol.. potom som nasiel toto :
http://forum.ayanova.com/Topic1084-90-1.aspx
kde som sa docital, ze FB nemozem instalovat "via remote".. po
nainstalovani FB pripojenim na server cez mstsc s parametrom "/console"
uz FB service bezal ok.. v ramci tohto pripojenia (mstsc /console) isla
ok aj moja aplikacia... divne chovanie nastalo, ked som sa odhlasil a
opatovne prihlasil ako admin (pripadne ako novo zalozeny uzivatel z
grupy Users) len cez mstsc (cize bez parametra "/console").. vtedy v
Task Manageri vidim bezat 4 procesy, ktore maju nieco spolocne s FB, a
to : FBServer a FBGuardian pod SYSTEM uctom a FBServer a FBGuardian pod
uctom prihlaseneho uzivatela..
no a to pravdepodobne nie je spravne.. este je mozne, ze instalovat FB
server by som nemal robit ani cez "mstsc /console", ale priamo na
serveri.. idem vyskusat.. ak by ale este niekoho nieco napadlo, dik za
radu..
Miso
P.S. : vzdy instalujem FB ako service..
ClientDataSet, CloneCursor a CreateFields
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 29.2.2008 15:32:49
Do ClientDataSetu lze pridavat fieldy:
cds.FieldsDefs.Update;
cds.CreateFields;
+ pridam jeste nejake fkLookup, fkCalcualted
cds.Open;
Ja ale pracuji s "temp" verzi datasetu, aby pracovni dataset svym pretridenim, filtrovanim neovlivnil "native" tabulku v originalnim datasetu. Myslim, ze to je dobra technika prace.
cdsTemp.CloneCursor(cds,true);
Pridane fieldy v tomto cdsTemp nejsou. To je celkem logicke, cdsTemp pracuje fakticky nad cds.DSBase.
Ono vlastne ani nema moc smysl pridavat ty fieldy do cds (nativni tabulka), spise bych je chtel pridat do cdsTemp.
Jenze do cdsTemp fieldy pridat nejdou - cannot perform the operation on an open dataset
Zkousel jsem jeste cdsTemp.Close + pridat fieldy.
Jenze pri Close ztrati dataset svuj CloneSource a vsechno je v haji: nebude fungovat ApplyUpdates atd.
Co s tim?
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
ClientDataSet, CloneCursor a CreateFields
[*] Vaclav Krmela <krmela(zv)ustinadorlici(tec)cz> - 01.3.2008 00:49:30
Co to klonovani zkusit nejak takhle:
var F: TField;
i: integer;
begin
...
TmpCds := TClientDataSet.Create(Self);
for i := 0 to CDS.FieldDefs.Count-1 do
begin
case CDS.FieldDefs.Items[i].DataType of
ftString: F := TStringField.Create(TmpCds);
ftInteger: F := TIntegerField.Create(TmpCds);
ftFloat: F := TFloatField.Create(TmpCds);
ftDateTime: F := TDateTimeField.Create(TmpCds);
else Continue;
end;
F.FieldName := CDS.FieldDefs.Items[i].Name;
F.Name := TmpCds.Name + F.FieldName;
F.Size := CDS.FieldDefs.Items[i].Size;
F.Index := TmpCds.FieldCount;
F.DataSet := TmpCds;
end;
F := TStringField.Create(TmpCds);
F.FieldName := 'Calculated';
F.Name := TmpCds.Name + F.FieldName;
F.FieldKind := fkCalculated;
F.Index := TmpCds.FieldCount;
F.DataSet := TmpCds;
TmpCds.OnCalcFields := DoCalcFieldsClone;
TmpCds.CloneCursor(CDS, true);
....
Resi to dva tve pozadavky. Do klonovaneho datasetu dostanes vsechny Fieldy,
vcetne Calculated, ty se v klonu tvari jako normalni datove. Navic muzes v
klonu vytvared dalsi Calculated.
Vaclav Krmela
ctecky caroveho kodu
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 29.2.2008 22:37:20
Puvodni zprava ze dne 29.2.2008 od Milan Dvorak:
> Moje predstava byla takova, ze na formulari budu mit edit a bud se
> do neho neco zapise bud z klavesnice nebo ze ctecky. Ale to mi
> nefunguje. Jakmile mam na forme edit, tak pokud je aktivni, tak to
^^^^^
> nejak funguje (cislo zapsane v carovem kodu se v nem zobrazi - el
> bez toho prefixu a sufixu), jakmile ale neni edit aktivni, tak mi to
> OnKeyDown formy nezachytne. Tak jsem vyhodil edit a rekl jsem si, ze
^^^^^
A do skoly jsi chodil kam, prosim? Formular cesky je rodu muzskeho.
Form anglicky je rodu stredniho. Forma rodu zenskeho je tak leda u
maminky v troube... Ufff.
> aspon zkusim zpracovat ten OnKeyDown. Ten mi sice funguje, ale kdyz
> tam poslu napr. 6-ti ciferne cislo, tak mi to vrati celkem 24 hodnot
> key a ty moc neodpovidaji tem cifram tvoricim to cislo (myslim ani
> napr. pres ASCII).
Reseni je nekolik. Treba to, ze si do te ctecky das takovy prefix, aby
se ti sam vybral prislusny Edit.
Nebo ze nastavis KeyPreview formulare na True, aby se ti to tam vubec
dostalo. Klikni si na formular, pak v inspektoru na vlastnost
KeyPreview, a podivej se, jak se to dela.
A ja osobne bych si ve tvem pripade poridil ctecku na seriovy port a
obslouzil si to sam programove, kdy bych chtel a jak bych chtel. Ale
uznavam, ze ctecka na klavesnici ma take svuj puvam, snadno do Wordu
napises carovy kod z Coca Coly, ktera ti stoji na stole :-)
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
ctecky caroveho kodu
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 29.2.2008 22:21:19
Ahoj,
trochu s casovou prodlevou reaguji na tvoji odpoved na muj dotaz tykajici se ctecek caroveho kodu.
Mezitim jsem si jednu koupil a dnes mi dosla. Tak jsem se podle tve rady pustil do programovani. Dotlacil jsem do ni prefix a sufix a bojuji se zpracovanim toho co mi precte.
Moje predstava byla takova, ze na formulari budu mit edit a bud se do neho neco zapise bud z klavesnice nebo ze ctecky. Ale to mi nefunguje. Jakmile mam na forme edit, tak pokud je aktivni, tak to nejak funguje (cislo zapsane v carovem kodu se v nem zobrazi - el bez toho prefixu a sufixu), jakmile ale neni edit aktivni, tak mi to OnKeyDown formy nezachytne.
Tak jsem vyhodil edit a rekl jsem si, ze aspon zkusim zpracovat ten OnKeyDown. Ten mi sice funguje, ale kdyz tam poslu napr. 6-ti ciferne cislo, tak mi to vrati celkem 24 hodnot key a ty moc neodpovidaji tem cifram tvoricim to cislo (myslim ani napr. pres ASCII).
Ma prosba tedy zni: nemohl bys mi poslat kousek tveho kodu, ze ktereho bych poznal, jak to zpracovavas? (pripadne s drobnym komentarem).
Dekuji
Milan Dvorak, Znojmo
(mam USB ctecku
>>> trosa(zv)seznam(tec)cz 31.1.2008 13:41:07 >>>
Ahoj,
pokud si koupis ctectku s USB, nebo KBD vystupem, tak prvni emuluje
klavesnici a druha se pripoji mezi klavesnici a pocitac. Pak si proctes
manual ctectky a naprogramujes si ji (obvykle prestes par kodu z
prirucky). Nejlepsi je ji naprogramovat tak, aby pri zacatku i konci
kodu poslala nejaky prefix a suffix. Ja obvykle mam F12. A kdyz pak
nekdo precte kod, pak ti prileti F12<kod>F12. Takze v udalosti formulare
OnKeyDown mam kousek kodu co po posbira a vyvola moji udalost OnBarCode
kam jiz preda kod. Je dobre tam mit timeout (relativne kratky, ctecka je
rychla) aby kdyz uzivatel zmacke F12, tak aby jsi necekal do aleluja na
konec kodu.
TR
> Mohl by jste mi nekdo alespon zhruba nastinit, co me ceka, kdyz potrebuji napojit program na ctecku caroveho kodu. Jde mi predevsim o to, jakym zpusobem v programu se cteckou komunikuji - jestli se ke ctecce napr. dodava nejaka dll knihovna, ktera komunikaci umoznuje. Pokud by mi nekdo pripadne poradil nejaky vhodny typ ctecky pro situaci: knihovna (kazda kniha ma svuj kod), studenti (kazdy ma svuj kod), urcite by mi to pomohlo.
>
ClientDataSet, CloneCursor a CreateFields
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 29.2.2008 19:21:06
> Myslim, ze to takto nepujce. CloneCursor nedela novy dataset, ale je to
> pouze novy Cursor do existujiciho cds DataSetu. Ma tedy pouze ty Fieldy,
> ktere ma cds.
> Vaclav Krmela
No prave, Vasku, je to tak, jak pises.
Tedy novy dataset to opravdu je, ale jenom je nejak pripojen na kurzor puvodniho datasetu.
On proto dokonce nema ani ty pridane fieldy z puvodniho datasetu.
Dost jsem s tim laboroval, do konference jsem se obratil, az kdyz jsem na nic neprisel.
Vypada to tak, ze budto musim zapomenout na klonovany dataset (to nechci, protoze se mi tento styl prace libi), anebo budu muset zapomenout a fieldy fkLookup nebo fkCalculated v klonovanem datasetu na formulari.
Jeste me stve to cdsTemp.Close.
Ztrati to CloneSource (=nil), pochopitelne to nema ProviderName. Presto se data na obrazovce objevi. Problem se projevi az pri ApplyUpdates.
Jak je to bez toho CloseSource (nebo private FCloneSource) mozny, kdyz tam neni to ProviderName a odkaz na kurzor puvodniho datasetu taky ne?
Podotykam ze dedim od TCustomClientDataSet a prepisuji ApplyUpdates tak, ze vlastne volam CloneSource.ApplyUpdates - to normalne funguje. Na klonovanem datasetu by ApplyUpdates primo vubec zavolat neslo - viz tvoje uvaha vyse.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
ClientDataSet, CloneCursor a CreateFields
[*] Vaclav Krmela <krmela(zv)ustinadorlici(tec)cz> - 29.2.2008 16:40:54
From: "Jan Sebelik" <honza(zv)haes(tec)cz>
>
> cdsTemp.CloneCursor(cds,true);
>
> Jenze do cdsTemp fieldy pridat nejdou - cannot perform the operation on an
> open dataset
Myslim, ze to takto nepujce. CloneCursor nedela novy dataset, ale je to
pouze novy Cursor do existujiciho cds DataSetu. Ma tedy pouze ty Fieldy,
ktere ma cds.
Vaclav Krmela
ctecky caroveho kodu
[*] Jan Novak <delfin4(zv)volny(tec)cz> - 01.3.2008 12:02:30
> uznavam, ze ctecka na klavesnici ma take svuj puvam,
> snadno do Wordu napises carovy kod z Coca Coly,
Jinak pro ty, co by ten kod Coca-coly chteli posilat do Wordu, i kdyz
maji jen USB/serial skener jsem vylozil na
http://www.volny(tec)cz/delfin4/ projekt com2kbd.rar pro D5, ktery se po
nakonfigurovani schova do systray a predava kody nactene ze ctecky do
okna, co ma prave fokus. Potreboval jsem to pro ulozeni nacteneho kodu
do weboveho formulare. Na Rs232 pouziva AsyncFree.
Pro zajemce bych nasel i java-script, ktery podle rychlosti nacitani
znaku pozna, jestli to bylo zobane prstiky, anebo nactene najednou a
podle toho na vstup reaguje.
Ten druhy projekt je UDP forwarder - to jsem kdysi potreboval
prekladat UDP pakety z jedne site do druhe a menit v nich odesilatele,
adresata, port atd.
Jinak slusnou implementaci ctecky jsem videl u programu MRP K/S: V
konfiguraci aplikace si nastavis, jestli kbd nebo COM, prefixy, atd a
pak po nacteni kodu aktivni okno dostava udalost, ze byl naskenovany
kod, na kterou reaguje bez ohledu na to, ktery edit ma prave fokus. A
dostane ten kod hned i s tranformaci narodnich znaku atd.
statistika nastivenych www stranek
[*] Joe <waking(zv)centrum(tec)cz> - 01.3.2008 11:26:27
Zdravim, nevedel by nekdo jak zjistovat jake danne stranky nastivyl
uzivatel a kolikrat?
Nejake informace jsou v temporary internet file v souboru index.dat.
Dekuji.
Vopik
ADMIN: ctecky caroveho kodu
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 01.3.2008 10:56:24
Puvodni zprava ze dne 1.3.2008 od TurcsA?nyi BA?la:
> ja u+AX4- roky pou+AX4A7Q-vam +AQ0-iarkov+AP0- k+APM-d.
Tohle je presne ukazka, jak nema vypadat prispevek do konference
Delphi. Ucastnik si ani neracil precist pravidla. Pise s diakritikou
a jeste spatne quotuje. Fuj!
PS: Ber to jako durazne napomenuti.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
ctecky caroveho kodu
[*] Turcsanyi Bela <delphi(zv)vatsoft.sk> - 01.3.2008 10:54:24
Takze este raz! :-(
Ahoj,
ja uz roky pouzivam ciarkovy kod.
Ktory typ ciarkoveho kodu pouzivas?
Mas spravne nakonfigurovany snimac ciarkoveho kodu?
Otvor dosovske okno a skus tam ciarkove kody z roznych vyrobkov, ci ti
ich precita spravne.
S pozdravom,
Ing. Vojtech turcsanyi
Milan Dvorak wrote / napisal(a):
> Ahoj,
>
> trochu s casovou prodlevou reaguji na tvoji odpoved na muj dotaz tykajici se ctecek caroveho kodu.
> Mezitim jsem si jednu koupil a dnes mi dosla. Tak jsem se podle tve rady pustil do programovani. Dotlacil jsem do ni prefix a sufix a bojuji se zpracovanim toho co mi precte.
> Moje predstava byla takova, ze na formulari budu mit edit a bud se do neho neco zapise bud z klavesnice nebo ze ctecky. Ale to mi nefunguje. Jakmile mam na forme edit, tak pokud je aktivni, tak to nejak funguje (cislo zapsane v carovem kodu se v nem zobrazi - el bez toho prefixu a sufixu), jakmile ale neni edit aktivni, tak mi to OnKeyDown formy nezachytne.
> Tak jsem vyhodil edit a rekl jsem si, ze aspon zkusim zpracovat ten OnKeyDown. Ten mi sice funguje, ale kdyz tam poslu napr. 6-ti ciferne cislo, tak mi to vrati celkem 24 hodnot key a ty moc neodpovidaji tem cifram tvoricim to cislo (myslim ani napr. pres ASCII).
>
> Ma prosba tedy zni: nemohl bys mi poslat kousek tveho kodu, ze ktereho bych poznal, jak to zpracovavas? (pripadne s drobnym komentarem).
>
> Dekuji
>
> Milan Dvorak, Znojmo
>
> (mam USB ctecku
>
>
>
>
>>>> trosa(zv)seznam(tec)cz 31.1.2008 13:41:07 >>>
>>>>
> Ahoj,
>
> pokud si koupis ctectku s USB, nebo KBD vystupem, tak prvni emuluje
> klavesnici a druha se pripoji mezi klavesnici a pocitac. Pak si proctes
> manual ctectky a naprogramujes si ji (obvykle prestes par kodu z
> prirucky). Nejlepsi je ji naprogramovat tak, aby pri zacatku i konci
> kodu poslala nejaky prefix a suffix. Ja obvykle mam F12. A kdyz pak
> nekdo precte kod, pak ti prileti F12<kod>F12. Takze v udalosti formulare
> OnKeyDown mam kousek kodu co po posbira a vyvola moji udalost OnBarCode
> kam jiz preda kod. Je dobre tam mit timeout (relativne kratky, ctecka je
> rychla) aby kdyz uzivatel zmacke F12, tak aby jsi necekal do aleluja na
> konec kodu.
>
> TR
>
>
>> Mohl by jste mi nekdo alespon zhruba nastinit, co me ceka, kdyz potrebuji napojit program na ctecku caroveho kodu. Jde mi predevsim o to, jakym zpusobem v programu se cteckou komunikuji - jestli se ke ctecce napr. dodava nejaka dll knihovna, ktera komunikaci umoznuje. Pokud by mi nekdo pripadne poradil nejaky vhodny typ ctecky pro situaci: knihovna (kazda kniha ma svuj kod), studenti (kazdy ma svuj kod), urcite by mi to pomohlo.
>>
>>
>
>
>
>
>
ctecky caroveho kodu
[*] TurcsA?nyi BA?la <delphi(zv)vatsoft.sk> - 01.3.2008 10:48:22
Ahoj,
ja u+AX4- roky pou+AX4A7Q-vam +AQ0-iarkov+AP0- k+APM-d.
Ktor+AP0- typ +AQ0-iarkov+AOk-ho k+APM-du pou+AX4A7Q-va+AWE-?
M+AOEBYQ- spr+AOE-vne nakonfigurovan+AP0- sn+AO0-ma+AQ0- +AQ0-iarkov+AOk-ho k+APM-du?
Otvor dosovsk+AOk- okno a sk+APo-s tam +AQ0-iarkov+AOk- k+APM-dy z r+APQ-znych v+AP0-robkov, +AQ0-i ti
ich pre+AQ0A7Q-ta spr+AOE-vne.
S pozdravom,
Ing. Vojtech Turcs+AOE-nyi.
Milan Dvorak wrote / nap+AO0-sal(a):
> Ahoj,
>
> trochu s casovou prodlevou reaguji na tvoji odpoved na muj dotaz tykajici se ctecek caroveho kodu.
> Mezitim jsem si jednu koupil a dnes mi dosla. Tak jsem se podle tve rady pustil do programovani. Dotlacil jsem do ni prefix a sufix a bojuji se zpracovanim toho co mi precte.
> Moje predstava byla takova, ze na formulari budu mit edit a bud se do neho neco zapise bud z klavesnice nebo ze ctecky. Ale to mi nefunguje. Jakmile mam na forme edit, tak pokud je aktivni, tak to nejak funguje (cislo zapsane v carovem kodu se v nem zobrazi - el bez toho prefixu a sufixu), jakmile ale neni edit aktivni, tak mi to OnKeyDown formy nezachytne.
> Tak jsem vyhodil edit a rekl jsem si, ze aspon zkusim zpracovat ten OnKeyDown. Ten mi sice funguje, ale kdyz tam poslu napr. 6-ti ciferne cislo, tak mi to vrati celkem 24 hodnot key a ty moc neodpovidaji tem cifram tvoricim to cislo (myslim ani napr. pres ASCII).
>
> Ma prosba tedy zni: nemohl bys mi poslat kousek tveho kodu, ze ktereho bych poznal, jak to zpracovavas? (pripadne s drobnym komentarem).
>
> Dekuji
>
> Milan Dvorak, Znojmo
>
> (mam USB ctecku
>
>
>
>
>>>> trosa(zv)seznam(tec)cz 31.1.2008 13:41:07 >>>
>>>>
> Ahoj,
>
> pokud si koupis ctectku s USB, nebo KBD vystupem, tak prvni emuluje
> klavesnici a druha se pripoji mezi klavesnici a pocitac. Pak si proctes
> manual ctectky a naprogramujes si ji (obvykle prestes par kodu z
> prirucky). Nejlepsi je ji naprogramovat tak, aby pri zacatku i konci
> kodu poslala nejaky prefix a suffix. Ja obvykle mam F12. A kdyz pak
> nekdo precte kod, pak ti prileti F12<kod>F12. Takze v udalosti formulare
> OnKeyDown mam kousek kodu co po posbira a vyvola moji udalost OnBarCode
> kam jiz preda kod. Je dobre tam mit timeout (relativne kratky, ctecka je
> rychla) aby kdyz uzivatel zmacke F12, tak aby jsi necekal do aleluja na
> konec kodu.
>
> TR
>
>
>> Mohl by jste mi nekdo alespon zhruba nastinit, co me ceka, kdyz potrebuji napojit program na ctecku caroveho kodu. Jde mi predevsim o to, jakym zpusobem v programu se cteckou komunikuji - jestli se ke ctecce napr. dodava nejaka dll knihovna, ktera komunikaci umoznuje. Pokud by mi nekdo pripadne poradil nejaky vhodny typ ctecky pro situaci: knihovna (kazda kniha ma svuj kod), studenti (kazdy ma svuj kod), urcite by mi to pomohlo.
>>
>>
>
>
>
>
>
ctecky caroveho kodu
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 01.3.2008 10:26:20
Puvodni zprava ze dne 1.3.2008 od Milan Dvorak:
> Dokumentaci jsem procetl a nic v tomto smeru jsem prave nenasel.
Tak znovu a poradne :-)
> Nastavil jsem si pomoci ni prave ten prefix a postfix a jeste nejake
> drobnosti, ale o tech kodech prenasenych znaku jsem tam nic nenasel.
A co sis tedy nastavil?
> To, ze se z kazde ctverice posklada to jedno ocekavane cislo mi
> doslo, ale nevidim tam zadny algoritmus. Jak uz jsem psal predtim,
> jen jsem si v Delphi helpu nasel, ze nule odpovida 96 a devitce 105
> (z NumPadu), ale to se mi na to napasovat nepodarilo. Tak jsem si
> rikal, ze jestli nekdo nahodou nevi.
Ten kod neni jen jedno cislo, ale ta dve posledni cisla. 101 + 99 pro
cislo 5 apod.
> Pravda je asi ta, ze bych si mohl vytisknout carove kody vsech cifer
> a z toho to vyzkoumat. Nic jineho nez cifry ocekavat na vstupu
> nebudu. Ale slo mi trochu i o princip.
No vsak rikam, ze to jsou nejake scan kody a podrobnosti by ses mel
dozvedet z dokumentace.
> Co to je HID rozhrani nevim - tak se taky ptam :-)
HID (Human Interface Device) je oznaceni pro zarizeni k pocitaci,
ktere primo komunikuji s clovekem - klavesnice, mysi, joysticky,
tablety, game pady apod. Takove zarizeni je pripojeno pres USB a
komunikuje protokolem HID. Ten tvuj snimac je pripojen prave jako HID
a komunikuje jako klavesnice.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
ctecky caroveho kodu
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 01.3.2008 10:16:18
Dokumentaci jsem procetl a nic v tomto smeru jsem prave nenasel. Nastavil jsem si pomoci ni prave ten prefix a postfix a jeste nejake drobnosti, ale o tech kodech prenasenych znaku jsem tam nic nenasel.
To, ze se z kazde ctverice posklada to jedno ocekavane cislo mi doslo, ale nevidim tam zadny algoritmus. Jak uz jsem psal predtim, jen jsem si v Delphi helpu nasel, ze nule odpovida 96 a devitce 105 (z NumPadu), ale to se mi na to napasovat nepodarilo. Tak jsem si rikal, ze jestli nekdo nahodou nevi.
Pravda je asi ta, ze bych si mohl vytisknout carove kody vsech cifer a z toho to vyzkoumat. Nic jineho nez cifry ocekavat na vstupu nebudu. Ale slo mi trochu i o princip.
Co to je HID rozhrani nevim - tak se taky ptam :-)
Dekuji Milan Dvorak
******************************************************
No tak to jsou nejake scan kody toho HID rozhrani. Co na to rika
dokumentace? Tu sis uz precetl?
> 18*96*101*99
5
> 18*96*100*104
0
> 18*96*100*104
0
> 18*96*100*105
1
> 18*96*101*96
2
> 18*96*101*97
3
******************************************************
ctecky caroveho kodu
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 01.3.2008 09:40:16
Puvodni zprava ze dne 1.3.2008 od Milan Dvorak:
> Dekuji za lekci z cestiny :-((
Rado se stalo. Proc ten kysely ksichtik? :-)
> Tato rada mi pomohla - na to jsem zapomnel.
No vida, to je zasadni vec.
> 500123
> a ono mi to pres ten OnKeyDown vrati toto (ty * jsem tam doplnil ja, aby to bylo citelne).
No tak to jsou nejake scan kody toho HID rozhrani. Co na to rika
dokumentace? Tu sis uz precetl?
> 18*96*101*99
5
> 18*96*100*104
0
> 18*96*100*104
0
> 18*96*100*105
1
> 18*96*101*96
2
> 18*96*101*97
3
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
ctecky caroveho kodu
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 01.3.2008 09:04:13
>A do skoly jsi chodil kam, prosim? Formular cesky je rodu muzskeho.
>Form anglicky je rodu stredniho. Forma rodu zenskeho je tak leda u
>maminky v troube... Ufff.
Dekuji za lekci z cestiny :-((
>Nebo ze nastavis KeyPreview formulare na True, aby se ti to tam vubec
>dostalo. Klikni si na formular, pak v inspektoru na vlastnost
>KeyPreview, a podivej se, jak se to dela.
Tato rada mi pomohla - na to jsem zapomnel.
>A ja osobne bych si ve tvem pripade poridil ctecku na seriovy port a
>obslouzil si to sam programove, kdy bych chtel a jak bych chtel. Ale
>uznavam, ze ctecka na klavesnici ma take svuj puvam, snadno do Wordu
>napises carovy kod z Coca Coly, ktera ti stoji na stole :-)
Pozde radit, kdyz uz mam USB. Dotaz jakou si poridit jsem polozil pred mesicem.
Ale ve stavu v jakem jsem nyni potrebuji jeste jednu radu. Prectu carovy kod odpovidajici napr. cislu
500123
a ono mi to pres ten OnKeyDown vrati toto (ty * jsem tam doplnil ja, aby to bylo citelne).
18*96*101*99*18*96*100*104*18*96*100*104*18*96*100*105*18*96*101*96*18*96*101*97
Neco z toho odpovida kodum jednotlivych cifer z toho cteneho cisla (pres NumPad) ale stejne to nejsem schopen rozsekat na to ocekavane cislo.
V tom bych potreboval radu.
Dekuji Milan Dvorak
Pridani zaznamu v TJvDBTreeView
[*] Miroslav Kundela <mirus(zv)volny(tec)cz> - 01.3.2008 17:48:55
Zdravim do konference,
Uz skoro cely ?tyden se snazim naprogramovat pridavana zaznamu do
TJvDbtreeView s?DB komponentou Zeos TZQuery+TZUpdateSQL a nedari se mi to.
Na prvni pohled to funguje po pridani jedoho uzlu, ale pokud chci pridat do
nove vytvoreneho uzlu dalsi uzel, tak se v?novem dalsim uzlu uklada spatne
"parentvalue".
Po provedeni refreshchild nadrazeneho uzlu ten problem prestane.
Jsou dve moznosti bud najit jiny zpusob pridavani uzlu nebo pridat do eventu
po vytvoreni uzlu ten refreshchild nadrazeneho uzlu ukousel jsem to zadat do
udalosti OnEdited v?JvDBTreeView a i v?OnAfterPost v?TZQuery, ale myslim, ze
se ten refresh child neprovede spravne.
Zaver: U novych uzlu se bez RefreshChild nenacte zaznam z?datasetu stromu.
Uz nevim na co se zamerit.
Nevite nekdo co delam spatne? Poradi prosim nekdo? Zkousel jsem i komponentu
Dynamic DBTreeView, ale s?ni jsem na tom jeste hure.
S?pozdravem M.Kundela.
[code]
// var DTZeosTree1 : TJvDBTreeView;
//pridani dalsiho uzlu na konec v dane vetvi
procedure TdockTreeForm.ActAddGroupExecute(Sender: TObject);
var
? NewNode, SelNode: TJvDBTreeNode;
begin
? With DTZeosTree1 do
??? begin
????? if Focused then
??????? begin
????????? SelNode:=TJvDBTreeNode(Selected);
????????? NewNode := AddChildNode(TJvDBTreeNode(SelNode.Parent),True);
????????? NewNode.EditText;
??????? end;
??? end;
end;
//pridani potomka nap rave vybrany uzel
procedure TdockTreeForm.ActSubGroupExecute(Sender: TObject);
var NewNode, SelNode:TJvDBTreeNode;
begin
? With DTZeosTree1 do
??? begin
????? SelNode:=TJvDBTreeNode(DTZeosTree1.Selected);
????? if Focused then
??????? begin
????????? NewNode:= AddChildNode(TJvDBTreeNode(SelNode),True);
????????? NewNode.EditText;
??????? end;
??? end;
end;
//Znovu nacte uzli z DB
procedure TdockTreeForm.RefreshTree(Sender: TObject);
var
? MV : Variant;
? expd: Boolean;
begin
? if DTZeosTree1.Selected = nil then exit;
? with TJvDBTreeNode(DTZeosTree1.Selected) do
? begin
??? MV:=MasterValue;
??? expd:=Expanded;
??? if TJvDBTreeNode(Parent)<>nil then
????? begin
??????? TJvDBTreeView(TreeView).RefreshChild(TJvDBTreeNode(Parent));
//???????
ZStoredProc1.Params.ParamByName('PID').AsInteger:=TJvDBTreeNode(Parent)..Mast
erValue;
//??????? ZStoredProc1.ExecProc;
??????? TJvDBTreeNode(Parent).Expanded:=True;
??????? TJvDBTreeView(TreeView).SelectNode(MV);
????? end;
??? Expanded:=expd;
? end;
end;
[/code]
Pridani zaznamu v TJvDBTreeView
[*] Miroslav Kundela <mirus(zv)volny(tec)cz> - 03.3.2008 09:39:49
Vyreseno.
M.K.
Jak ziskat pristup k TApplication a TForm ciziho p
[*] delphak(zv)centrum(tec)cz - 03.3.2008 09:55:51
Ahoj,
mam cizi program napsany v Delphi. Je nejaky zpusob kterak ziskat pristup na objekty Application a MainForm tohoto beziciho programu? Jsem schopen ziskat windows handle (ale to me nestaci nebot potrebuji vyvolat akci ktera je svazana s newindows komponentou ... tedy s takovou co nema windows handle) pro hlavni okno programu, ale neprisel jsem na to jak ziskat Pointer na TWinControl .... nejsem si ani jisty zda je to vubec mozne kvuli optimalizacim kompilatoru ...
Dik za radu ci myslenku
V.
Jak ziskat pristup k TApplication a TForm ciziho p
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 03.3.2008 10:49:55
>handle) pro hlavni okno programu, ale neprisel jsem na to jak ziskat
Pointer na TWinControl .... nejsem si ani jisty zda je to vubec mozne kvuli
>optimalizacim kompilatoru ...
Pointer na control je ulozen v property okna controlu nebo se da ziskat pres
zpravu. Bude zalezet na tom jak presne jsi injektovan do ciloveho procesu
ale asi by se dala pouzit primo funkce FindControl z controls.pas (pripadne
ji nejak upravit aby se nemusela posilat zprava v ObjectFromHwnd) :
function FindControl(Handle: HWnd): TWinControl;
var
OwningProcess: DWORD;
begin
Result := nil;
if (Handle <> 0) and (GetWindowThreadProcessID(Handle, OwningProcess) <>
0) and
(OwningProcess = GetCurrentProcessId) then
begin
if GlobalFindAtom(PChar(ControlAtomString)) = ControlAtom then
Result := Pointer(GetProp(Handle, MakeIntAtom(ControlAtom)))
else
Result := ObjectFromHWnd(Handle);
end;
end;
Cau
Radek Voltr
Xacti
CAPICOM vraci pouze 1 certifikat
[*] delphak(zv)centrum(tec)cz - 04.3.2008 11:19:41
Ahoj, pomoci CAPICOM pristupuju k certifikatum na cipove karte (ComfortChip). Na karte jsou 3 certifikaty s klici - ale capicom vraci pouze jeden. Vraci tencertifikat, ktery je oznacen pro autentizaci. Pokud pro autentizaci oznacim jiny certifikat, vrati mi to ten nove oznaceny.
Nemohu docilit aby to vracelo pocet 3 ... vzdy to vraci jen 1.
Nejaky napad ci rada???
Dik
Fragment kodu:
Store := CreateOleObject('CAPICOM.Store');
try
Store.Open(4 {CAPICOM_SMART_CARD_USER_STORE}, 'My' {CAPICOM_MY_STORE}, 0 {CAPICOM_STORE_OPEN_READ_ONLY});
if Store.Certificates.Count = 0 then
FLastErr := 'Nebyl nalezen zadny odpovidajici certifikat';
ADOQuery: OldValue a NewValue
[*] Jaroslav Rubes <jrubes(zv)epass(tec)cz> - 04.3.2008 12:01:44
Zdravim,
nevite nekdo jak je to u ADOQuery s propertami OldValue a NewValue?
V BDEckove TQuery, kdyz jsem modifikoval hodnotu fieldu, tak i po postu
(tj. po zavolani Post a ApplyUpdates) se zachovala puvodni hodnota
fieldu, cili OldValue a NewValue se porad lisily.
V TADOQuery je to jinak - OldValue se lisi od NewValue jenom do te doby
nez zavolam Post (+ pripadne UpdateBatch, jedna-li se o cacheovany
update).
Ale po postu uz je OldValue a NewValue stejne. Takze dotaz zni: delam
neco spatne, nebo je v tomto ohledu skutecne chovani Query a ADOQuery
rozdilne?
J. Rubes
SimpleMapi vytvari WinMail.dat
[*] Pavel Gazda <pavel gazda(zv)datasw(tec)cz> - 04.3.2008 12:01:44
Ahoj,
u zakaznika posilam mail s prilohou pomoci rozhrani SimpleMapi.
Nekteri adresati maji potize, protoze ji prijde priloha WinMail.dat.
Nasel jsem si na internetu, jak by se mel nastavit MS Outlook a MS Exchange,
ale toto nemohu menit.
Kdyz odesilam mail pomoci programu postavenem na JclMapi,
tak urcitemu adresatovi prijde priloha WinMail.dat.
( Stejne se to chova, kdyz programem Print2Pdf vytvorim PDF a toto
odeslu mailem )
Pokud vsak odeslu mail starsim programem postavenem na nejake starsi
komponente TEmail,
tak tomu stejnemu adresatovi prijde priloha spravne.
Diky za rady a namety.
Pavel
Velikost souboru
[*] Locke10 <locke10(zv)seznam(tec)cz> - 05.3.2008 14:35:37
Dobry den.
Resim tento problem.
Zjistuji velikost souboru. Pomoci TSearchRec.Size zjistim sice jak je
soubor veliky, ale napriklad u souboru s velikosti pres 3 GB mi to vraci
zapornou velikost. Snazim se tedy zjistit velikost pomoci TFileStream,
ale to mi zase pada pri zjistovani velikosti souboru u souboru, ktery je
pouzivan jinym procesem. Nevite nekdo, jak toto obejit? Nebo jak jinak
zjistit spravnou velikost u jakehokoliv souboru?
Diky Michal Kos.
Velikost souboru
[*] Petr Kandera <p kandera(zv)tanger(tec)cz> - 05.3.2008 14:43:38
A co takle pouzit fukci FindFirst?
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec):
Integer;
TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;
Petr
----- Original Message -----
From: "Locke10" <locke10(zv)seznam(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Wednesday, March 05, 2008 2:35 PM
Subject: Velikost souboru
> Dobry den.
>
> Resim tento problem.
> Zjistuji velikost souboru. Pomoci TSearchRec.Size zjistim sice jak je
> soubor veliky, ale napriklad u souboru s velikosti pres 3 GB mi to vraci
> zapornou velikost. Snazim se tedy zjistit velikost pomoci TFileStream,
> ale to mi zase pada pri zjistovani velikosti souboru u souboru, ktery je
> pouzivan jinym procesem. Nevite nekdo, jak toto obejit? Nebo jak jinak
> zjistit spravnou velikost u jakehokoliv souboru?
>
> Diky Michal Kos.
>
>
Velikost souboru
[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 05.3.2008 14:47:39
Locke10 napsal(a):
> Dobry den.
>
> Resim tento problem.
> Zjistuji velikost souboru. Pomoci TSearchRec.Size zjistim sice jak je
> soubor veliky, ale napriklad u souboru s velikosti pres 3 GB mi to vraci
> zapornou velikost. Snazim se tedy zjistit velikost pomoci TFileStream,
> ale to mi zase pada pri zjistovani velikosti souboru u souboru, ktery je
> pouzivan jinym procesem. Nevite nekdo, jak toto obejit? Nebo jak jinak
> zjistit spravnou velikost u jakehokoliv souboru?
>
a) pouzij Cardinal nebo LongInt misto Integer (Integer je 32bit cislo se znamenkem, Cardinal je 32 bez znamenka)
tj. hodnoty nad 2G jsou pro int reprezentovany jako zaporne
nebo
b) TFileStream otevri jen pro cteni v jinem modu
myslim ze
TFileStream.Create(fmOpenRead or fmShareCompat)
Zjisteni CD v mechanice
[*] Locke10 <locke10(zv)seznam(tec)cz> - 05.3.2008 14:37:38
Velikost souboru
[*] delphin(zv)post(tec)cz - 05.3.2008 15:27:42
> Zjistuji velikost souboru. Pomoci TSearchRec.Size zjistim sice jak je
> soubor veliky, ale napriklad u souboru s velikosti pres 3 GB mi to vraci
> zapornou velikost. Snazim se tedy zjistit velikost pomoci TFileStream,
> ale to mi zase pada pri zjistovani velikosti souboru u souboru, ktery je
> pouzivan jinym procesem. Nevite nekdo, jak toto obejit? Nebo jak jinak
> zjistit spravnou velikost u jakehokoliv souboru?
Pro soubory nad 2-4GB je TSearchRec.Size nepouzitelne a pouzijte treba toto:
TSearchRec.FindData.nFileSizeLow
TSearchRec.FindData.nFileSizeHigh
Velikost souboru
[*] Vaclav Sazima <vaclav.sazima(zv)utilia(tec)cz> - 05.3.2008 15:37:42
Ahoj,
Locke10 napsal(a):
> Dobry den.
>
> Resim tento problem.
> Zjistuji velikost souboru. Pomoci TSearchRec.Size zjistim sice jak je
> soubor veliky, ale napriklad u souboru s velikosti pres 3 GB mi to vraci
> zapornou velikost.
Zkus kouknout na TSearchRec.FindData
> Snazim se tedy zjistit velikost pomoci TFileStream,
> ale to mi zase pada pri zjistovani velikosti souboru u souboru, ktery je
> pouzivan jinym procesem.
>
Tudy cesta nepovede
Vaclav Sazima
Kresleni pres DBGrid, D7
[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 07.3.2008 12:34:59
Potrebuji za urcitych okolnosti "prekreslit" necim bunku DBGridu. Konkretne pres bunku nakreslit ComboBox. Ale nemuzu najit jak zjistit souradnice toho obdelnicku (bunky) ktera se ma premaznout. To je urcite jednoduche, ze :-)
Kalhous
Delphi, PivotTable, Kontingencni tabulka...
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 07.3.2008 14:15:06
Spustil jsem bez problemu:
- IE mam
- server jsem nemusel davat mezi duveryhodne
- Office mam (2003)
- zadny dotaz nebyl zobrazen
HTH
S pozdravem
Milan Tomes
Jiri Sladek napsal(a):
> A tady je odkaz pro interaktivni testovani. Podari se nekomu spustit?
> www.chmelarstvi(tec)cz/demo.htm
> Podminky pro uspesne spusteni demo.htm:
> * IE
> * server www.chmelarstvi(tec)cz mezi duveryhodne
> * MS Office (aby na pocitaci byly nainstalovane OWC)
> * odsouhlasit bezpecnostni dotazy
>
>
Delphi, PivotTable, Kontingencni tabulka...
[*] Jiri Sladek <sladek(zv)czhops(tec)cz> - 07.3.2008 14:03:05
Zdravim, prosim o nasmerovani.
Chtel bych do sve aplikace zamontovat vystupy ve forme interaktivnich kontingencnich tabulek (Pivot Tables).
Nejak podobne, jako je to mozne pomoci OWC neboli Office Web Components od Microsoftu.
Aby bylo mozne rozklikavat jednotlive radky a prohlizet detaily a subdetaily, filtrovat atd.
OWC nechci pouzivat z nasledujicich duvodu.
* Nelze vytisknout dlouhe tabulky, tisk je orezany asi 8cm pred koncem prvni stranky a dal to proste netiskne.
* Funguje to pouze v IE.
* Je to dost uzavrena technologie, kterou nemuzu naohybat podle svych potreb. Treba bych chtel tisknout aktualne nastaveny filtr.
* Vyzaduje to instalaci OWC komponent, klade to uzivateli ruzne bezpecnostni dotazy.
Tady je obrazek - ukazka, jak vypada PivotTable z OWC v akci:
www.chmelarstvi(tec)cz/demo.jpg
A tady je odkaz pro interaktivni testovani. Podari se nekomu spustit?
www.chmelarstvi(tec)cz/demo.htm
Podminky pro uspesne spusteni demo.htm:
* IE
* server www.chmelarstvi(tec)cz mezi duveryhodne
* MS Office (aby na pocitaci byly nainstalovane OWC)
* odsouhlasit bezpecnostni dotazy
Existuje treba nejaky report generator, ktery by to umel?
Diky za tipy.
Jiri Sladek
D5
v supliku D6 a D7
Tisk barevnych radku v Sinea
[*] delphi(zv)mjsoft(tec)cz - 09.3.2008 01:05:37
Zdravim,
Nemate nekdo napad jak v Sinee vytisknout nektere radky barevne (podklad).
Mam v tabulce polozku podle ktere to chci barvit. Zkousel jsem vlozit
paintbox a v OnPaintBox to barvit. Funguje to, ale text v predloze je s
promennou vyskou a tu vysku nemuzu zjistit. Prvek s textem se tedy natahuje
dolu, ale paintbox ne. Vypada to hrozne.
Napada Vas co s tim?
Diky predem.
Karel V.
2931 (20080307)
__________
ADMIN: Blackfish
[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 08.3.2008 22:59:27
Puvodni zprava ze dne 8.3.2008 od Petr Vetesnik:
> chtel bych se zeptat, zda ma nekdo zkusenosti s produktem blackfish.
Napomenuti administratora konference Delphi - takove otazky tu nemaji
co delat. Jestli mas nejaky konkretni dotaz, tak ho poloz. Ale nejake
vyzkumy sem nepatri. Totez subjekt - druhe napomenuti, je spatny.
Petr Zahradnik, pocitacovy expert
==========================================================
Petr Zahradnik, Computer Laboratory
web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
==========================================================
Blackfish
[*] Petr Vetesnik <vetesnik(zv)gmail(tec)com> - 08.3.2008 22:35:25
Zdravim vsechny vyvojare,
chtel bych se zeptat, zda ma nekdo zkusenosti s produktem blackfish.
Petr Vetesnik
Kresleni pres DBGrid, D7
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 08.3.2008 18:45:09
Cituji Zdenek Kalhous <kalhous(zv)eu(tec)cz>:
> Potrebuji za urcitych okolnosti "prekreslit" necim bunku DBGridu.
> Konkretne pres bunku nakreslit ComboBox. Ale nemuzu najit jak
> zjistit souradnice toho obdelnicku (bunky) ktera se ma premaznout.
> To je urcite jednoduche, ze :-)
Ahoj,
a co pouzit tDbGrid.OnDrawColumnCell? A nastavit DefaultDrawing na false...
Karel Rys
Tisk barevnych radku v Sinea
[*] Vaclav Krmela <krmela(zv)ustinadorlici(tec)cz> - 09.3.2008 14:26:36
From: <delphi(zv)mjsoft(tec)cz>
>
> Udalost PaintBoxSize tam ale nevidim. Mam Delphi5 a verzi
> 5.50.16. Je mozne ze to v teto verzi neni?
Kreslici plocha promenlive vysky byla zavedena ve verzi X.51.0 v breznu
2005.
> Je mozne nekde ziskat novejsi verzi?
Vyzadat u firmy Sinea. Myslim, ze to je bezplatny update.
S pozdravem
Vaclav Krmela
Tisk barevnych radku v Sinea
[*] delphi(zv)mjsoft(tec)cz - 09.3.2008 13:44:33
Dobry den,
Diky za odpoved. Udalost PaintBoxSize tam ale nevidim. Mam Delphi5 a verzi
5.50.16. Je mozne ze to v teto verzi neni? Je mozne nekde ziskat novejsi
verzi?
> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
> Behalf Of Vaclav Krmela
> Sent: Sunday, March 09, 2008 11:54 AM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: Re: Tisk barevnych radku v Sinea
>
> From: <delphi(zv)mjsoft(tec)cz>
>
> > Nemate nekdo napad jak v Sinee vytisknout nektere radky barevne
> > (podklad).
> > Mam v tabulce polozku podle ktere to chci barvit. Zkousel jsem vlozit
> > paintbox a v OnPaintBox to barvit. Funguje to, ale text v predloze je
> s
> > promennou vyskou a tu vysku nemuzu zjistit. Prvek s textem se tedy
> > natahuje
> > dolu, ale paintbox ne.
>
> Barveni pozadi pisma bylo v generatoru sestav Sinea kdysi davno (Delphi
> 1...), barvilo se ale pouze pozadi pisma, ne cely prvek sestavy. Toto
> reseni
> bylo opusteno a ao te doby to asi nikomu moc nechybelo. V soucasne
> verzi se
> s barvou pozadi prvku nepracuje.
>
> Pomoci prvku sestavy "Kreslici plocha" lze nakreslit cokoliv. Tedy i
> text s
> libovolne barevnym pozadim. Musi se to ale nakreslit programove pomoci
> obsluhy udalosti. Nejde na to pozit udalost OnPaintBox, ta kresli pouze
> prvky s pevnou vyskou.
> Pokud ma byt kreslici plocha s promennou vyskou, musi se ve
> vlastnostech
> prvku v predloze zaskrtnout volba "Promenna vyska". Druhym krokem je
> napsani
> obsluhy udalosti OnPaintBoxSize. Jeden prvek kreslici plochy muze
> presahovat
> i na dalsi stranky, lze tedy vykreslit libovolne dlouhy text pres
> nekolik
> stranek.
>
> uses
> Sest_Rtf;
>
> var {private}
> FRadky: TRadky;
> FFont: TFont;
>
>
>
> procedure TForm1.Sestava1PaintBoxSize(Sender: TSestavaD; AIndex,
> AWidth,
> AHeight: Integer; var APos, ANext: Integer; ACanvas: TCanvas);
> var Ro: TRect;
> Hm, Rm: integer;
> S: string;
> begin
> S := Sender.DataSource.DataSet.FieldByName('Notes').AsString;
>
> if not Assigned(FRadky) then
> begin
> FRadky := TRadky.Create;
> FFont := TFont.Create;
> FFont.Name := 'Arial';
> FFont.Size := 10;
> FFont.Color := clRed;
> Ro := Rect(0, 0, AWidth, AHeight);
> FormatRTF(ACanvas, Ro, S, false, FFont, 0{Alignment}, 0, 0,
> 1, 1, 1, 0, 0, true, FRadky);
> end;
>
> ACanvas.Brush.Color := clYellow;
> ACanvas.Brush.Style := bsSolid;
> ACanvas.Font := FFont;
> ACanvas.Pen.Color := clBlue;
>
> Hm := FRadky.CelkemVyska(0);
> if AHeight < Hm - APos then
> begin
> FRadky.KolikRadku(ANext, AHeight, Rm, Hm);
>
> Ro := Rect(0, 0, AWidth, Hm);
> ACanvas.Rectangle(Ro);
>
> DrawRTFRa(ACanvas, Ro, S,
> false, ACanvas.Font, {Align}0, Hm, 0{OfsTxt},
> 1, 1, 1, 0, 0,
> FRadky, {RaOd}APos, Rm{RaDo});
> APos := APos + Rm;
> ANext := Hm;
> end else
> begin
> Ro := Rect(0, 0, AWidth, Hm);
> ACanvas.Rectangle(Ro);
>
> DrawRTFRa(ACanvas, Ro, S,
> false, ACanvas.Font, {Align}0, Hm, 0{OfsTxt},
> 1, 1, 1, 0, 0,
> FRadky, {RaOd}APos, FRadky.Count-1{RaDo});
> APos := 0;
> ANext := Hm;
> FreeAndNil(FRadky);
> FreeAndNil(FFont);
> end;
> end;
>
>
> Pomoci AIndex lze rozlisovat vice kreslicich ploch.
> 'Notes' je nazev datove polozky s pozadovanym textem
> Nenulova hodnota promenne APos signalizuje generatoru sestav, ze se
> cely
> text nevesel na zbytek stranky a ze se bude pokracovat na dalsi
> strance.
> Promenna FRadky obsahuje rozparsovany dlohy text na jednotlive radky
> podle
> sirky prvku v predloze.
>
>
> Vyse popsane reseni pomoci kreslici plochy je mozne, ale je to
> nesystemove.
> Asi jednodussi by bylo pozadat firmu Sinea o zapracovani barvy pozadi
> prvku
> sestavy do generatoru sestav.
>
> S pozdravem
> Vaclav Krmela
>
>
>
>
> 2932
> (20080309) __________
>
>
>
>
2932 (20080309)
__________
Tisk barevnych radku v Sinea
[*] Vaclav Krmela <krmela(zv)ustinadorlici(tec)cz> - 09.3.2008 11:54:25
From: <delphi(zv)mjsoft(tec)cz>
> Nemate nekdo napad jak v Sinee vytisknout nektere radky barevne
> (podklad).
> Mam v tabulce polozku podle ktere to chci barvit. Zkousel jsem vlozit
> paintbox a v OnPaintBox to barvit. Funguje to, ale text v predloze je s
> promennou vyskou a tu vysku nemuzu zjistit. Prvek s textem se tedy
> natahuje
> dolu, ale paintbox ne.
Barveni pozadi pisma bylo v generatoru sestav Sinea kdysi davno (Delphi
1...), barvilo se ale pouze pozadi pisma, ne cely prvek sestavy. Toto reseni
bylo opusteno a ao te doby to asi nikomu moc nechybelo. V soucasne verzi se
s barvou pozadi prvku nepracuje.
Pomoci prvku sestavy "Kreslici plocha" lze nakreslit cokoliv. Tedy i text s
libovolne barevnym pozadim. Musi se to ale nakreslit programove pomoci
obsluhy udalosti. Nejde na to pozit udalost OnPaintBox, ta kresli pouze
prvky s pevnou vyskou.
Pokud ma byt kreslici plocha s promennou vyskou, musi se ve vlastnostech
prvku v predloze zaskrtnout volba "Promenna vyska". Druhym krokem je napsani
obsluhy udalosti OnPaintBoxSize. Jeden prvek kreslici plochy muze presahovat
i na dalsi stranky, lze tedy vykreslit libovolne dlouhy text pres nekolik
stranek.
uses
Sest_Rtf;
var {private}
FRadky: TRadky;
FFont: TFont;
procedure TForm1.Sestava1PaintBoxSize(Sender: TSestavaD; AIndex, AWidth,
AHeight: Integer; var APos, ANext: Integer; ACanvas: TCanvas);
var Ro: TRect;
Hm, Rm: integer;
S: string;
begin
S := Sender.DataSource.DataSet.FieldByName('Notes').AsString;
if not Assigned(FRadky) then
begin
FRadky := TRadky.Create;
FFont := TFont.Create;
FFont.Name := 'Arial';
FFont.Size := 10;
FFont.Color := clRed;
Ro := Rect(0, 0, AWidth, AHeight);
FormatRTF(ACanvas, Ro, S, false, FFont, 0{Alignment}, 0, 0,
1, 1, 1, 0, 0, true, FRadky);
end;
ACanvas.Brush.Color := clYellow;
ACanvas.Brush.Style := bsSolid;
ACanvas.Font := FFont;
ACanvas.Pen.Color := clBlue;
Hm := FRadky.CelkemVyska(0);
if AHeight < Hm - APos then
begin
FRadky.KolikRadku(ANext, AHeight, Rm, Hm);
Ro := Rect(0, 0, AWidth, Hm);
ACanvas.Rectangle(Ro);
DrawRTFRa(ACanvas, Ro, S,
false, ACanvas.Font, {Align}0, Hm, 0{OfsTxt},
1, 1, 1, 0, 0,
FRadky, {RaOd}APos, Rm{RaDo});
APos := APos + Rm;
ANext := Hm;
end else
begin
Ro := Rect(0, 0, AWidth, Hm);
ACanvas.Rectangle(Ro);
DrawRTFRa(ACanvas, Ro, S,
false, ACanvas.Font, {Align}0, Hm, 0{OfsTxt},
1, 1, 1, 0, 0,
FRadky, {RaOd}APos, FRadky.Count-1{RaDo});
APos := 0;
ANext := Hm;
FreeAndNil(FRadky);
FreeAndNil(FFont);
end;
end;
Pomoci AIndex lze rozlisovat vice kreslicich ploch.
'Notes' je nazev datove polozky s pozadovanym textem
Nenulova hodnota promenne APos signalizuje generatoru sestav, ze se cely
text nevesel na zbytek stranky a ze se bude pokracovat na dalsi strance.
Promenna FRadky obsahuje rozparsovany dlohy text na jednotlive radky podle
sirky prvku v predloze.
Vyse popsane reseni pomoci kreslici plochy je mozne, ale je to nesystemove.
Asi jednodussi by bylo pozadat firmu Sinea o zapracovani barvy pozadi prvku
sestavy do generatoru sestav.
S pozdravem
Vaclav Krmela
________ Notification from NOD32 ________
Warning: This message was not checked by NOD32 Antivirus System for Linux Mail Servers.
part000.txt - error - unknown compression method
http://www.eset.com
Blackfish
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 09.3.2008 10:02:17
> chtel bych se zeptat, zda ma nekdo zkusenosti s produktem blackfish.
O databazi Blackfish bude (mimo jine) take prednaska Pawla Glowackeho na nasem tradicnim seminari.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
Tvorba vlastniho caroveho kodu - generovani cisla
[*] Tomas Rosa <trosa(zv)seznam(tec)cz> - 10.3.2008 09:18:00
Ahoj,
pouzij CODE39 (ke stazeni asi tuna TTF fontu se kterymi pak staci
napsat *KOD* a vytisknout). A pak si vymysli kod libovolny, ale
doporucuji kratsi nez jsou EAN kody (spocitej si pismenka treba na
zvejkackach). Ja osobne pouzivam asi 6ti mistne.
TR
> v jakem rozsahu a v jake strukture mam programove generovat cisla pro
> vlastni potrebu - resp. pro interni potreby skladu. Jde mi o to, aby
> tyto kody nemohli kolidovat ani teoreticky s jiz existujicimi
> zaknihovanymi kody. Jaky typ kodu je nejlepsi pouzivat pro tyto interni
> potreby?
Tvorba vlastniho caroveho kodu - generovani cisla
[*] Jaroslav Rubes <jrubes(zv)epass(tec)cz> - 10.3.2008 09:07:59
Uzitecne www stranky o carovych kodech (specifikace, vypocet kontrolnich
souctu atd.):
http://www.barcodeisland.com/
J. Rubes
-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
Behalf Of Petr Svejda
Sent: Monday, March 10, 2008 8:44 AM
To: delphi-l(zv)clexpert(tec)cz
Subject: OT: Tvorba vlastniho caroveho kodu - generovani cisla
Zacinam programovat snimani a tvorbu caroveho kodu. S vytvorenim
vlastniho caroveho kodu asi nebude problem. Otazka ale zni:
v jakem rozsahu a v jake strukture mam programove generovat cisla pro
vlastni potrebu - resp. pro interni potreby skladu. Jde mi o to, aby
tyto kody nemohli kolidovat ani teoreticky s jiz existujicimi
zaknihovanymi kody. Jaky typ kodu je nejlepsi pouzivat pro tyto interni
potreby?
Diky za kazde nakopnuti
Petr
www.znalosti(tec)cz
OT: Tvorba vlastniho caroveho kodu - generovani ci
[*] Petr Svejda <petr(zv)svejda(tec)cz> - 10.3.2008 08:43:57
Zacinam programovat snimani a tvorbu caroveho kodu. S vytvorenim
vlastniho caroveho kodu asi nebude problem. Otazka ale zni:
v jakem rozsahu a v jake strukture mam programove generovat cisla pro
vlastni potrebu - resp. pro interni potreby skladu. Jde mi o to, aby
tyto kody nemohli kolidovat ani teoreticky s jiz existujicimi
zaknihovanymi kody. Jaky typ kodu je nejlepsi pouzivat pro tyto interni
potreby?
Diky za kazde nakopnuti
Petr
www.znalosti(tec)cz
Tvorba vlastniho caroveho kodu - generovani cisla
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 10.3.2008 09:58:03
>v jakem rozsahu a v jake strukture mam programove generovat cisla pro
vlastni potrebu - resp. pro interni potreby skladu. Jde mi o to, aby tyto
kody
>nemohli kolidovat ani teoreticky s jiz existujicimi zaknihovanymi kody.
Jaky typ kodu je nejlepsi pouzivat pro tyto interni potreby?
Kdysi jsem implementoval knihovnu a resil jsem podobny problem. A co si
vzpominam tak :
- jsem musel pouzit nakonec EAN protoze kody na knizkach/casacich jsou EAN a
ctecka umela cist jen jeden kod a potreboval jsem i crc
- EAN ma vyhodu/nevyhodu v tom ze ma v sobe kontrolni soucty - to je trochu
problem pri generovani ale zase se da lehce overit rucne zadany kod
- EAN ma prefixy ktere jsou urcene pro Internall use takze by se nemelo stat
ze se dostane ven zbozi ktere bude timdle kodem oznacene
- pro generovani jsem pouzival barcode generovaci komponentu v Delphi. Umela
kreslit na canvas i do QuickReportu (je to uz par let) a byla free na Torry
- rychly nastrel EAN128 je na
http://www.makebarcode.com/specs/uccean128.html , dole najdes prefixy pro
internal use
Slapalo to uplne v pohode, knizky co meli kod brali original, pro stare se
vytiskla samolepka s internim.
Cus
Radek
Xacti
opet problemy s Inno
[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 10.3.2008 13:06:16
Ahoj,
snazim se dal vytvorit rozumnou instlacku a opet jsem narazil a nemuzu
to nikde najit:
1. v sekci [Components] mam dve polozky. Prvni je "Lokalni instalace" a
druha "Vzdalena instalace". Z nejakeho duvodu mi porad jako defaultni
vybira tu druhou, chtel bych ho nejak presvedcit, aby mi vzdy vybiral tu
prvni. Zadny prihodny flag jem na to ale nenasel...
2. Chtel bych, aby slo instalovat vicekrat na jednom stroji, ale vzdycky
to udela jenom jednu instalaci a v pripade, ze uz je to opakovana
instalace, prepise to jenom udaje v registrech. Zrejme tvori v
registrech klic podle AppId_is#cislo#, myslel jsem, ze se to bude
automaticky zvysovat, ale nic. Napada mne pouzit AppId={code:...} a tam
prochazet registru v sekci pro uninstall a vytvorit si svoje id, ale to
mi pripada nesmyslne komplikovane.
3. Vaze se k predchozimu - v "postInstall" spoustim svoje exe, ktere
dokoncuje instalaci. Pokud se prerusi, napr. kvuli chybe, chci, aby se
to cele prerusilo. Nasel jsem jedine reseni, ze se v takovem pripade
muzu podivat do registru a spustit si odinstalaci. Prijde mi to sice
jako drbani levou nohou za pravym uchem, ale nic lepsiho asi neni. Tady
ale vidim problem, ze se vyhodnocuje v registrech klic:
'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#=SetupSetting("AppID")}_is1'
coz opet hleda jenom id = 1, takze u nasobnych instalaci bych musel
vedet to id, coz nevim jak bych dostal. Pokud bych si musel to AppId
ridit sam, tak by to slo, ale to by mel snad instalacni SW zvladat sam...
3. V pripade "vzdalene instalace" bych chtel zrusit vytvoreni
uninstallu, protoze to neni potreba. Da se to nejak programove osetrit?
Byl jsem do Inno Setupu dotlacen, ale zacinam pochybovat, jestli je to
dobra cesta... Zakladni veci mi prijdou zbytecne komplikovane.
Radili byste treba prechod na WiX, nebo NSIS?
Diky,
Petr Langer
Platny nazev souboru
[*] Locke10 <locke10(zv)seznam(tec)cz> - 10.3.2008 13:06:16
Dobry den.
Existuje nejake elegantni reseni jak zjistit, zda soubor, kteremu je
vytvoren nejakym algoritmem jeho nazev, pujde vytvorit? Jde o to, ze
jmeno souboru nemuze obsahovat jakykoliv znak a neni mozno algoritmu,
ktery vytvori nazev souboru zadat mnozinu znaku, ktere muze pouzivat.
Diky
S pozdravem
Michal Kos
Platny nazev souboru
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 10.3.2008 14:08:21
> Existuje nejake elegantni reseni jak zjistit, zda soubor, kteremu je
vytvoren nejakym algoritmem jeho nazev, pujde vytvorit? Jde o to, ze jmeno
souboru
>nemuze obsahovat jakykoliv znak a neni mozno algoritmu, ktery vytvori
nazev souboru zadat mnozinu znaku, ktere muze pouzivat.
Cau,
VCS to dela tak ze ho proste zkusi vytvorit na lokale v tempu. Udelal bych
to klidne stejne. Vytvorit, checknout zda existuje, smaznout
Radek
Xacti
Platny nazev souboru
[*] Vaclav Sazima <vaclav.sazima(zv)utilia(tec)cz> - 10.3.2008 14:08:21
Ahoj
Co ValidFileName z FileUtil ?
Vaclav Sazima
Locke10 napsal(a):
> Existuje nejake elegantni reseni jak zjistit, zda soubor, kteremu je
> vytvoren nejakym algoritmem jeho nazev, pujde vytvorit?
>
Platny nazev souboru
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 10.3.2008 15:10:26
Radek Voltr dne 10 Mar 2008 v 14:08:
> VCS to dela tak ze ho proste zkusi vytvorit na lokale v tempu. Udelal
> bych to klidne stejne. Vytvorit, checknout zda existuje, smaznout
To mi rozhodne nepripada jako spolehliva metoda - ruzne souborove systemy podporuji ruzne mnoziny znaku. Na linuxu muzete
napr. mit v nazvu i dvojtecku... Na starsich verzich Novellu leccos neprojde (hodne dlouhe nazvy apod.)... Takze test na
lokalu nic moc.
Karel Rys
jak na scriptovani v programu
[*] Petr Vetesnik <vetesnik(zv)gmail(tec)com> - 10.3.2008 16:38:33
Dobry den,
potreboval bych do aplikace dostat scriptovani. Presneji receno potrebuji,
aby si uzivatel napsal nejaky svuj script a program podle toho neco udelal.
Napriklad neco vypocitat.
Mozna nejlepe visual basic.
Muzete mi poradit jake komponenty mam pouzit?
Dekuji.
Petr Vetesnik
jak na scriptovani v programu
[*] Tomas Rosa <trosa(zv)seznam(tec)cz> - 10.3.2008 16:48:34
Po mych dlouhych pokusech je tohle asi nejlepsi co jsem nasel.
http://remobjects.com/?ps
TR
> potreboval bych do aplikace dostat scriptovani. Presneji receno potrebuji,
> aby si uzivatel napsal nejaky svuj script a program podle toho neco udelal.
> Napriklad neco vypocitat.
> Mozna nejlepe visual basic.
>
> Muzete mi poradit jake komponenty mam pouzit?
jak na scriptovani v programu
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 10.3.2008 17:00:35
>potreboval bych do aplikace dostat scriptovani. Presneji receno potrebuji,
aby si uzivatel napsal nejaky svuj script a program podle toho neco udelal.
>Napriklad neco vypocitat.
>Mozna nejlepe visual basic.
Potrebujes mit ten skript spoustitelny v tom exaci nebo potrebujes skriptem
ten program ovladat resp. generovat nejake vstupy/vystupy ?
Pro prvni pripad doporucuji Pascal Script (viz predchozi reakce) , pro to
druhe by mozna bylo lepsim resenim implementovat skriptovatelny
COM object. Pak by se to melo dat volat z WSH,IEcka nebo treba primo z VB
prostredi.
Cus
Radek
Xacti
jak na scriptovani v programu
[*] Petr Vetesnik <vetesnik(zv)gmail(tec)com> - 10.3.2008 17:12:37
Mam aplikaci, kterou si uzivatel nainstaluje.
No a potrebuji, aby si mohl sam napsat nejaky script, aby podle vstupu mohl
nastavovat nejake vystupy. Pripadne s tom scriptu podle kombinace vstupu,
kterou si sam navrhne nastavil vystupy. Neco jako ma excel.
Petr
10.3.08, Radek Voltr <voltr(zv)eleasoftware.com>:
>
> >potreboval bych do aplikace dostat scriptovani. Presneji receno
> potrebuji,
> aby si uzivatel napsal nejaky svuj script a program podle toho neco
> udelal.
> >Napriklad neco vypocitat.
> >Mozna nejlepe visual basic.
>
> Potrebujes mit ten skript spoustitelny v tom exaci nebo potrebujes
> skriptem
> ten program ovladat resp. generovat nejake vstupy/vystupy ?
>
> Pro prvni pripad doporucuji Pascal Script (viz predchozi reakce) , pro to
> druhe by mozna bylo lepsim resenim implementovat skriptovatelny
> COM object. Pak by se to melo dat volat z WSH,IEcka nebo treba primo z VB
> prostredi.
>
> Cus
> Radek
> Xacti
>
>
>
Tvorba vlastniho caroveho kodu - generovani cisla
[*] Petr Vetesnik <vetesnik(zv)gmail(tec)com> - 10.3.2008 18:06:41
Co pouzit http://www.han-soft.com/barcode.php
Zacinam programovat snimani a tvorbu caroveho kodu. S vytvorenim
> vlastniho caroveho kodu asi nebude problem. Otazka ale zni:
>
Petr
jak na scriptovani v programu
[*] Petr Vetesnik <vetesnik(zv)gmail(tec)com> - 10.3.2008 18:44:44
Koukal jsem na to a zda so to dobry. jen skoda ze to neni VB.
Neni nekde nahodou nejaky manualek?
http://remobjects.com/?ps
>
>
jak na scriptovani v programu
[*] Radek Voltr <voltr(zv)eleasoftware(tec)com> - 10.3.2008 20:56:54
>Koukal jsem na to a zda so to dobry. jen skoda ze to neni VB.
>Neni nekde nahodou nejaky manualek?
>http://remobjects.com/?ps
help je napr. soucasti inno setupu. Jinak je to pascal a hodne blizky
Delphi.
Mozna blbej dotaz ale prochazel jsi net ? Za 5 minut jsem nasel nekolik
reseni.
Na integraci VB scriptu, WSH nebo treba PHP
Cus
Radek
Kresleni pres DBGrid, D7
[*] Dalibor Faltynek <dalibor.faltynek(zv)orgrez(tec)cz> - 11.3.2008 08:11:44
>> Potrebuji za urcitych okolnosti "prekreslit" necim bunku DBGridu.
>> Konkretne pres bunku nakreslit ComboBox. Ale nemuzu najit jak
>> zjistit souradnice toho obdelnicku (bunky) ktera se ma premaznout.
Cosi takovehoto mi funguje, i kdyz asi to jde vymyslet lepe:
Dalibor.
procedure TForm1.Grid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
cmbtyp.visible:=false;
if grid1.col<>4 then exit;
if grid1.row<>y then exit;
if (Acol=4) and (Arow=y) and (Arow>0) then
begin
cmbtyp.left:=grid1.left+2 + rect.left;
cmbtyp.top:=grid1.top + rect.top;
cmbtyp.width:=rect.right - rect.left;
cmbtyp.height:=17;
cmbtyp.visible:=true;
end;
end;
OT: vyber 64 bit OS
[*] Dalibor <dalibor(zv)torola(tec)cz> - 12.3.2008 11:37:44
Ahoj, v nejblizsi dobe se potrebuji v praci rozhodnout pro 64 bitovy
operacni system a to hlavne zduvodu vyuziti vetsi pameti.
Proto bych se vas rad zeptal, co by jste mi doporucili, nebo co s uspechem
pouzivate ?
Pouzivam Vistual Studio .Net 2005,2008, MS SQL 2005, Delphi 7
Samozrejme se nabizeji Visty 64, ale zkusenosti s nimi nemam ani po SP1
zrovna dobre.
Dale jsou Windows XP 64, ale s tema nemam vubec zadne zkusenosti.
Nebo zvolit nejakou servrovou levnejsi editici 2008 Web?
Dekuji za podnety.
Dalibor
Prazdne HintWindow na MS Vistas
[*] Roland Turcan <konf(zv)rotursoft.sk> - 12.3.2008 11:47:45
Hello All!
Zakaznici reportuju, ze na Windows Vista sa im zobrazia Hinty, ale
neobsahuju ziadny text. Vypada to tak, ze velkost sa nastavi spravne,
len text tam chyba.
Nemate napad, ze co to moze byt, lebo na mojej test instalacii Visty
to slape v pohode.
Dakujem.
--
Best regards, TRoland
http://exekutor.rotursoft.sk
Inno Setup a applety
[*] Svehla Jaroslav <svehla(zv)spelza(tec)cz> - 12.3.2008 13:37:54
Ahoj, muzete mi poradit, jak pomoci InnoSetupu docilit:
1. Prepsani appletu v systemove slozce (neco.cpl)?
2. Prepsani sluzby (zastaveni, aktualizace, spusteni)?
Diky. Jara
Jak na zaheslovany web
[*] Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> - 12.3.2008 14:43:58
Ahoj mame v aplikaci automatickou aktualizaci, pripojim se pres indy (TIdHTTP), obvykle je
vse OK, ale u zakazniku, kteri maji pristup k siti zaheslovan se ven nedostanu a tudiz
nemuzu nic zaktualizovat.
Nevite jak by se dalo tohle vyresit, pripadne obejit, zadani hesla a uziv. jmena do
nejakeho INI neni problem.
Diky Tom
======================================================================
KP-SYS mail server
======================================================================
Synapse TFtpSend a OnMonitor
[*] standus <standus(zv)post(tec)cz> - 12.3.2008 15:22:05
Zdar,
Potreboval bych pomoct s OnMonitor property ze synapse v C++ Builderu.
Mam tenhle kod:
...
ftp->Sock->OnStatus = OnStatus;
ftp->Sock->OnMonitor = OnMonitor; <- tady je problem
...
tyhle funkce:
void __fastcall TFormMain::OnStatus(TObject *Sender, THookSocketReason
Reason, AnsiString Value)
{
//... some code
}
void __fastcall TFormMain::OnMonitor(TObject *Sender, bool Writing, TMemory
const buffer, int len)
{
// ... some code
}
kompilator mi nahlasi tuhle chybu:
[BCC32 Error] UnitMain.cpp(4740): E2034 Cannot convert 'void (_fastcall *
(_closure )(TObject *,bool,void * const,int))(TObject *,bool,void *
const,int)' to 'THookMonitor'
kde je problem? co delam spatne? diky moc za pomoc.
stan
Synapse TFtpSend a OnMonitor
[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 12.3.2008 23:18:44
> tak spravne ma byt toto:
> (TObject *Sender, bool Writing, const void * Buffer, int Len)
> coz jaks neodpovida dokumentaci.
> no nic.
proc by to neodpovidalo dokumentaci? te to odpovida, protoze na
platformach mimo .NET je TMemory deklarovan jako pointer.
Spise to vypada, ze neco ve tvem programu si udelalo take typ Tmemory,
ktery ti prekryl ten ze synapse. (TMemory se totiz v synapsi pouziva
casto, a zjevne to prelozit jde...)
--
Lukas Gebauer.
E-mail: gebauerl(zv)mlp(tec)cz
WEB: http://www.ararat(tec)cz/synapse - Synapse Delphi and Kylix TCP/IP
Library
Synapse TFtpSend a OnMonitor
[*] standus <standus(zv)post(tec)cz> - 12.3.2008 22:12:39
tak spravne ma byt toto:
(TObject *Sender, bool Writing, const void * Buffer, int Len)
coz jaks neodpovida dokumentaci.
no nic.
FB drop table
[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 12.3.2008 22:12:39
Myslim, ze to delala verze FB 2.0.0... Ve 2.0.1. je to vyreseno, nebo
minimalne citelne zlepseno.
Jinak commit by mel urcite pomoci, pokud to neblokuje jiny uzivatel (tedy
spis connection).
PF.
12.3.08, Karel Rys <delphi(zv)zas-me(tec)cz>:
>
> Cituji Jan Sebelik <honza(zv)haes(tec)cz>:
>
> > Mam tabulku KOMPETENCE.
> > Tuto tabulku pouzivaji dve procedury: UZIVCOPY a REGISTERACTION.
> >
> > drop procedure uzivcopy;
> > drop procedure registeraction;
> > // tohle je OK
> > drop table kompetence;
> > // cannot delete, object KOMPETENCE is in use
>
>
> Nepises, jaka verze FB...
>
> Nestacilo by po dropnuti tech procedur udelat commit? Mozna to souvisi
> s tim, ze jsou ty procedury nactene do nejake cache.
>
> Karel Rys
>
>
>
>
FB drop table
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 12.3.2008 18:52:24
Cituji Jan Sebelik <honza(zv)haes(tec)cz>:
> Mam tabulku KOMPETENCE.
> Tuto tabulku pouzivaji dve procedury: UZIVCOPY a REGISTERACTION.
>
> drop procedure uzivcopy;
> drop procedure registeraction;
> // tohle je OK
> drop table kompetence;
> // cannot delete, object KOMPETENCE is in use
Nepises, jaka verze FB...
Nestacilo by po dropnuti tech procedur udelat commit? Mozna to souvisi
s tim, ze jsou ty procedury nactene do nejake cache.
Karel Rys
FB drop table
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 12.3.2008 18:44:24
Mam tabulku KOMPETENCE.
Tuto tabulku pouzivaji dve procedury: UZIVCOPY a REGISTERACTION.
drop procedure uzivcopy;
drop procedure registeraction;
// tohle je OK
drop table kompetence;
// cannot delete, object KOMPETENCE is in use
Dela to jak IBConsole, tak IBExpert, i kdyz v detailech se oba nastoje chovaji trochu jinak.
He ... :-)
Treba IBConsole nahlasi vise zminenou chybu, ale pri opakovanoem volani "drop table" nahlasi "table does not exists".
He... :-)
Naopak IBExpert to nejak zkousne, ale pri ukonceni se pta: "commit/rollback" a pri commit zahlasi tutez chybu.
He... :-)
Pokud se po "drop obe procedury" odpojim od databaze a znovu pripojim, tak "drop table" projde v pohode.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
Jak zjistit, zda je ve Windows nekdo prihlaseny
[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 12.3.2008 17:42:18
Dobry den,
vim, ze to tu kdysi zaznelo, ale nedari se mi to najit ani v archivu, ani na googlu: jak zjistim (ze sluzby), jestli je v
danem okamziku na stanici nekdo prihlaseny ("interaktivni uzivatel"?)? D6 Pro.
Diky,
Karel Rys
FB - hromadna zmena "not null"
[*] horky(zv)cominn(tec)cz - 13.3.2008 12:07:45
Trochu ti to usnadnim, ale nepotesim:
Pokud mas pole v databazi deklarovane s "null povoleno", zadnym zpusobem se to nepodari zmenit na "not null" .
Jedine nove vytvorit tabulky se spravnou deklaraci.
--
S pozdravem Karel Horky, D7, FB 1.5.2, IBX 7.08, WXP SP2
[mailto:horky(zv)cominn(tec)cz]
> -----Original Message-----
> From: Jan Sebelik [mailto:honza(zv)haes(tec)cz]
> Sent: Thursday, March 13, 2008 11:54 AM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: FB - hromadna zmena "not null"
>
>
> Jak jste asi pochopili z moji predchozi otazky, pracuji na
> zasadni rekonstrukci jedne databaze.
> (108 tabulek, mnoho vazeb, asi 60 procedur)
>
> Bylo to nejak takto:
>
> create domain D_IDENT Integer;
> create domain D_NULA Integer Default 0;
Chyba pri restore FB database
[*] Jan Stefec <stefec(zv)algo-hk(tec)cz> - 13.3.2008 13:15:51
Ahoj,
provedu backup FB database pomoci IB Expert, nasledne restore do nove
database. Restore neprobehne a IB Expert zahlasi chybu:
IBE: Invalid token.
invalid request BLR at offset 271.
table MY_TABLE is not defined.
FB verzi mam 2.0.1, prihlasen jsem jako SYSDBA.
Nevite nekdo, co s tim?
Dik Honza
FB drop table
[*] Petr Vones <conference(zv)petrvones(tec)net> - 13.3.2008 12:15:46
Stejny problem jsem resil pri instalaci (update) aplikace, ktera potrebovala
menit i neco v databazi Firebirdu. Jednalo se o FB 2.0.1 pres Firebird.NET
provider, ale to asi neni podstatne, protoze je to evidentne problem
serveru. Jedine spolehlive reseni se ukazalo restartovat Firebird server
service behem cele instalace.
Petr Vones
----- Original Message -----
From: "Pavel Fiser" <fiserpavel(zv)gmail.com>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Wednesday, March 12, 2008 10:12 PM
Subject: Re: FB drop table
> Myslim, ze to delala verze FB 2.0.0... Ve 2.0.1. je to vyreseno, nebo
> minimalne citelne zlepseno.
> Jinak commit by mel urcite pomoci, pokud to neblokuje jiny uzivatel (tedy
> spis connection).
> PF.
Jak na zaheslovany web
[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 13.3.2008 11:03:38
On Thursday, March 13, 2008 9:13 AM ,
vlko <vlko(zv)zilina.net> wrote:
> Ak ide o ten overovaci dialog v prehliadaci, tak postaci adresu
> nastavit takto:
> http://user:password(zv)www.nieco.sk
>
to resi komunikaci se zaheslovanym konkretnim WWW serverem - ne
komunikaci prez proxy server chraneny heslem
D. Toman
Nove webove seminare CodeGear
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 13.3.2008 10:49:37
Dobry den,
pokusil jsem se na jednom ze seminaru zaregistrovat. Nezdarilo se s tim, ze po odeslani formulare se vratilo chybove hlaseni, ze mam kontaktovat systemoveho administratora.
Protoze jsem si nebyl jist, zda jiz nejsem na techto seminarich zaregistrovan, zkusil jsem se prihlasit jako jiz zaregistrovany s tim, ze jsem si chtel nechat poslat heslo. Bohuzel bez uspechu, protoze mi to vratilo chybove hlaseni s tim, za zadana emailova adresa neni validni prestoze ji jiz nekolik let uspesne pouzivam.
Mam tedy jen smulu, ze je server codegear nejak zaneprazdnen ci delam neco spatne?
Dekuji za radu
Milan Dvorak
>>> rkubat(zv)email(tec)cz 13.3.2008 10:17 >>>
Vazeni vyvojari, preji vsem dobry den,
dalsi rada interaktivnich seminaru CodeGear se bude poradat v mesicich breznu a dubnu 2008:
- Understanding XML
- Delphi XML Programming
- Understanding Web Services and SOA
- Delphi for Win32 Web Services programming
- Delphi for .NET Web Services programming
- Delphi Interoperable WCF programming
- Introduction to Delphi for PHP
- Latest News from the C++ Standards Committee
- C++Builder 2007
- Harnessing the power of Ruby on Rails with 3rdRail
Seznam seminaru najdete na http://www.codegear-events.eu/
Seminare jsou dostupne zdarma, potrebujete jen pripojeni k internetu a zvukovou kartu. Pokud o nektery seminar mate zajem, muzete se na stejne adrese na seminar rovnou zaregistrovat.
Zaroven zde najdete celou radu minulych seminaru, ktere si muzete prehrat. Vetsina seminaru je prednasena v anglictine, hodne jich je i nemecky.
Vsechny zdravi, -- Richard Kubat, Borland s.r.o.
OT: Nove webove seminare CodeGear
[*] rkubat(zv)email(tec)cz - 13.3.2008 10:17:35
Vazeni vyvojari, preji vsem dobry den,
dalsi rada interaktivnich seminaru CodeGear se bude poradat v mesicich breznu a dubnu 2008:
- Understanding XML
- Delphi XML Programming
- Understanding Web Services and SOA
- Delphi for Win32 Web Services programming
- Delphi for .NET Web Services programming
- Delphi Interoperable WCF programming
- Introduction to Delphi for PHP
- Latest News from the C++ Standards Committee
- C++Builder 2007
- Harnessing the power of Ruby on Rails with 3rdRail
Seznam seminaru najdete na http://www.codegear-events.eu/
Seminare jsou dostupne zdarma, potrebujete jen pripojeni k internetu a zvukovou kartu. Pokud o nektery seminar mate zajem, muzete se na stejne adrese na seminar rovnou zaregistrovat.
Zaroven zde najdete celou radu minulych seminaru, ktere si muzete prehrat. Vetsina seminaru je prednasena v anglictine, hodne jich je i nemecky.
Vsechny zdravi, -- Richard Kubat, Borland s.r.o.
Jak na zaheslovany web
[*] vlko <vlko(zv)zilina(tec)net> - 13.3.2008 09:13:30
Ak ide o ten overovaci dialog v prehliadaci, tak postaci adresu nastavit
takto:
http://user:password(zv)www.nieco.sk
vlko
Dalibor Toman wrote:
> On Wednesday, March 12, 2008 2:43 PM ,
> Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> wrote:
>
>
>> Ahoj mame v aplikaci automatickou aktualizaci, pripojim se pres indy
>> (TIdHTTP), obvykle je vse OK, ale u zakazniku, kteri maji pristup k
>> siti zaheslovan se ven nedostanu a tudiz nemuzu nic zaktualizovat.
>>
>> Nevite jak by se dalo tohle vyresit, pripadne obejit, zadani hesla a
>> uziv. jmena do nejakeho INI neni problem.
>>
>>
>
> co si mam predstavit pod 'zaheslovanym pristupem k siti?
>
> Pokud se jedna o pristup prez nejaky proxy server, ktery vyzaduje
> authentifikaci, muzete se pokusit ji pouzit (predpokladam, ze Indy to
> umi. Pokud ne, da se urcite podstrcit nejaka ta Proxy-Authorization:
> hlavicka atd.)
>
> D. Toman
>
>
>
>
--
--------------
mail: vlko(zv)zilina.net
web: http://vlko.zilina.net
FB drop table
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 13.3.2008 09:37:32
> provadel po jistych akcich odpojeni a znovu pripojeni k DB. Jine reseni
> jsem nenasel.
Je to sice smutne, ale alespon je to odpoved, po ktere prestanu laborovat s hledanim problemu nekde mezi IBConsole / IBExpert.
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
Jak na zaheslovany web
[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 13.3.2008 08:23:25
On Wednesday, March 12, 2008 2:43 PM ,
Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> wrote:
> Ahoj mame v aplikaci automatickou aktualizaci, pripojim se pres indy
> (TIdHTTP), obvykle je vse OK, ale u zakazniku, kteri maji pristup k
> siti zaheslovan se ven nedostanu a tudiz nemuzu nic zaktualizovat.
>
> Nevite jak by se dalo tohle vyresit, pripadne obejit, zadani hesla a
> uziv. jmena do nejakeho INI neni problem.
>
co si mam predstavit pod 'zaheslovanym pristupem k siti?
Pokud se jedna o pristup prez nejaky proxy server, ktery vyzaduje
authentifikaci, muzete se pokusit ji pouzit (predpokladam, ze Indy to
umi. Pokud ne, da se urcite podstrcit nejaka ta Proxy-Authorization:
hlavicka atd.)
D. Toman
Inno Setup a applety
[*] Dusan Nagy <dnagy(zv)inomacomp.sk> - 13.3.2008 07:49:22
SJ> Ahoj, muzete mi poradit, jak pomoci InnoSetupu docilit:
SJ> 1. Prepsani appletu v systemove slozce (neco.cpl)?
SJ> 2. Prepsani sluzby (zastaveni, aktualizace, spusteni)?
SJ> Diky. Jara
Cpl - v sekcii [code] nakopci do prislusneho adresara v systeme. prip
premenuj exist. a nakopci.
sluzby v sekcii [code] napr prikazom
instalacia
Result :=
Exec(ExpandConstant('{app}\App.exe'),'-install','',0,ewWaitUntilTerminated,ResultCode);
stopnut ho mozes
Result := Exec(ExpandConstant('{sys}\net.exe'),'stop
App','',0,ewWaitUntilTerminated,ResultCode);
odinstalacia
Result :=
Exec(ExpandConstant('{app}\App.exe'),'-uninstall','',0,ewWaitUntilTerminated,ResultCode);
atd
FB drop table
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 13.3.2008 07:37:21
Verze 1.0.3 byla timto proslula a ja osobne jsem to resil tak, ze jsem
provadel po jistych akcich odpojeni a znovu pripojeni k DB. Jine reseni
jsem nenasel. Pro provadeni skriptu mam sve vlastni tridy, ktere mi
rozsiruji sadu prikazu o vlastni a tak jsem si pridal dalsi - RECONNECT.
S pozdravem
Milan Tomes
Jan Sebelik napsal(a):
>>> drop procedure uzivcopy;
>>> drop procedure registeraction;
>>> commit;
>>> drop table kompetence;
>>> // cannot delete, object KOMPETENCE is in use
>>>
>> Nepises, jaka verze FB...
>> Nestacilo by po dropnuti tech procedur udelat commit? Mozna to souvisi
>> s tim, ze jsou ty procedury nactene do nejake cache.
>> Karel Rys
>>
>
> Mluvim o FB1.0.3, na vyssi verze prechazime postupne.
> commit jsem sice nezminil, ale po tech dvou "drop procedure" jsem ho tam mel a nepomohlo.
> Pomuze jenom commit / odpojit / pripojit, pak to funguje.
>
>
Form.OnActivate se spousti jen jednou
[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 13.3.2008 07:09:19
Ahoj
V aplici pouzivam tuto udalost v hlavnim formulari pro osetreni urcitych
stavu.
Kdyz jsem tento kod psal tak se mi OnActivate provadel pokazde kdyz
dostal formular focus.
Nyni jsem do udalosti Form.OnActivate potreboval dodat prikaz k
automaticke aktualizaci informaci na StatusBaru a zjistil jsem ze
udalost OnActivate se mi provede jen jednou pri spusteni programu
a ne pri kazdem focusu !
Nejsem si jisty ale zrejme to nastalo po instalaci posledniho Servis
packu Delphi 2007.
1. Potreboval bych tedy vedet co se deje, ze to nefunguje
2. Co pouzit (udalost, messages) abych to mohl aplikovat.
Diky moc , Jura
FB - hromadna zmena "not null"
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 13.3.2008 12:25:46
Jeste doplnim, ze podminkou tohoto postupu je odpojeni vsech uzivatelu
po provedeni zmeny. Metadata totiz asi zustavaji v cache, ktera se
neaktualizuje.
S pozdravem
Milan Tomes
Milan Tomes napsal(a):
> Neni pravda - da se to zmenit prave danym zasahem do systemovych tabulek
> a pak reconnectem k databazi. Odzkouseno na vlastni kuzi (nicmene jen
> jako test, ne v ostrem skriptu) :-)
> Dalsi moznost je vytvorit novy sloupec v tabulce se spravnou deklaraci,
> prekopirovat data, zrusit stary sloupec a prejmenovat ten novy (tohle
> pouzivam bezne).
> Vytvoreni nove tabulky je az krajni moznost, kterou jsem zatim nemusel
> nikdy pouzit... :-)
>
> S pozdravem
>
> Milan Tomes
>
> horky(zv)cominn(tec)cz napsal(a):
>
>> Trochu ti to usnadnim, ale nepotesim:
>> Pokud mas pole v databazi deklarovane s "null povoleno", zadnym zpusobem se to nepodari zmenit na "not null" .
>>
>> Jedine nove vytvorit tabulky se spravnou deklaraci.
>>
>
FB - hromadna zmena "not null"
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 13.3.2008 12:15:46
Neni pravda - da se to zmenit prave danym zasahem do systemovych tabulek
a pak reconnectem k databazi. Odzkouseno na vlastni kuzi (nicmene jen
jako test, ne v ostrem skriptu) :-)
Dalsi moznost je vytvorit novy sloupec v tabulce se spravnou deklaraci,
prekopirovat data, zrusit stary sloupec a prejmenovat ten novy (tohle
pouzivam bezne).
Vytvoreni nove tabulky je az krajni moznost, kterou jsem zatim nemusel
nikdy pouzit... :-)
S pozdravem
Milan Tomes
horky(zv)cominn(tec)cz napsal(a):
> Trochu ti to usnadnim, ale nepotesim:
> Pokud mas pole v databazi deklarovane s "null povoleno", zadnym zpusobem se to nepodari zmenit na "not null" .
>
> Jedine nove vytvorit tabulky se spravnou deklaraci.
>
>
>> -----Original Message-----
>> From: Jan Sebelik [mailto:honza(zv)haes(tec)cz]
>> Sent: Thursday, March 13, 2008 11:54 AM
>> To: delphi-l(zv)clexpert(tec)cz
>> Subject: FB - hromadna zmena "not null"
>>
>>
>> Jak jste asi pochopili z moji predchozi otazky, pracuji na
>> zasadni rekonstrukci jedne databaze.
>> (108 tabulek, mnoho vazeb, asi 60 procedur)
>>
>> Bylo to nejak takto:
>>
>> create domain D_IDENT Integer;
>> create domain D_NULA Integer Default 0;
>>
>
>
>
FB - hromadna zmena "not null"
[*] Milan Tomes <delphi(zv)haida(tec)cz> - 13.3.2008 12:07:45
Osobne nejsem priznivcem zasahu do systemovych tabulek, ale vim, ze toto
funguje.
Jen na okraj - prvni update je mozno vynechat, protoze domena se stejne
zrusi :)
Nicmene tohle je jen prvni cast problemu - dalsi cast nastane pri
prevodu dat, ktery je v tomto pripade mnohem obtiznejsi. Musi se provest
update vsech hodnot NULL na 0 v dotcenych sloupcich, protoze update
metadat nic takoveho pochopitelne neudela a pripadna chyba v tomto
prevodu znemozni obnovu databaze ze zalohy.
Ja to vetsinou resim tak, ze jedu tabulku po tabulce a pisu update
script, ktery prevede 1. metadata a za 2. data. Je to snazsi pro
kontrolu a vetsinou tim eliminuji chyby, ktere by mohly vzniknout.
S pozdravem
Milan Tomes
P.S.: Co bys delal s moji databazi, ktera ma 473 tabulek, 712 domen, 151
procedur, nejake view a 1900 relaci ??? :-D
Jan Sebelik napsal(a):
> Ukolem tedy je:
> -
> odkazy na "d_nula" ve vsech tabulkach stanovit jako "not null"
> -
> odkazy na domenu d_nula nahradit odkazem na d_ident
> -
> zrusit domenu d_nula
> -
> u domeny d_ident zavest "default 0".
>
> A co takhle resit to obecne nad systemovymi tabulkami. Myslite, ze by to mohlo byt schudne?
> Vypada to hodne jednoduse, ale nejsem si jist, zda nekde nenarazim.
>
> update rdb$relation_fields set rdb$null_flag=1
> where rdb$field_source='D_NULA';
> update rdb$relation_fields set rdb$field_source='D_IDENT'
> where rdb$field_source='D_NULA';
> drop domain d_nula;
> alter domain d_ident set default 0
FB - hromadna zmena "not null"
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 13.3.2008 11:53:43
Jak jste asi pochopili z moji predchozi otazky, pracuji na zasadni rekonstrukci jedne databaze.
(108 tabulek, mnoho vazeb, asi 60 procedur)
Bylo to nejak takto:
create domain D_IDENT Integer;
create domain D_NULA Integer Default 0;
pricemz nektera id tabulek id_XXXX byla d_ident, nektera byla d_nula.
Vazebni atributy mezi tabulkami byly nekdy povinne (d_ident not null), nekdy nepovinne (d_ident), nekdy nepovinne, ale "d_nula".
Docela zmatek.
Bylo rozhodnuto, ze vsechny vazby na ciselniky budou povinne, pricemz v kazdem ciselniku bude polozka "0 - Nespecifikovano".
Nejsem si uplne jist, zda je to spravne reseni, ale nakonec jsem na nej pristoupil, protoze jsem neunesl tlak ze strany resitelu selektu pro milion slozitych sestav, ze se jim s NULL spatne pracuje, ze joiny jsou pak slozite, ze NULL se pri "order by" dostane az na konec, atd.
Ukolem tedy je:
-
odkazy na "d_nula" ve vsech tabulkach stanovit jako "not null"
-
odkazy na domenu d_nula nahradit odkazem na d_ident
-
zrusit domenu d_nula
-
u domeny d_ident zavest "default 0".
Docela sileny ukol pri takovem poctu tabulek a vazeb. Navic nad ostrymi daty (napr. 2.5 GB).
A co takhle resit to obecne nad systemovymi tabulkami. Myslite, ze by to mohlo byt schudne?
Vypada to hodne jednoduse, ale nejsem si jist, zda nekde nenarazim.
update rdb$relation_fields set rdb$null_flag=1
where rdb$field_source='D_NULA';
update rdb$relation_fields set rdb$field_source='D_IDENT'
where rdb$field_source='D_NULA';
drop domain d_nula;
alter domain d_ident set default 0;
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================
Nove webove seminare CodeGear
[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 13.3.2008 11:29:41
Tak jsem na to asi (?) prisel. Nezdar se objevil v Mozile Firefox. Pokud jsem pouzil Internet Explorer, byl jsem uspesny. :-(((
Milan Dvorak
> pokusil jsem se na jednom ze seminaru zaregistrovat. Nezdarilo se s tim, ze po
> odeslani formulare se vratilo chybove hlaseni, ze mam kontaktovat systemoveho
> administratora.
> Protoze jsem si nebyl jist, zda jiz nejsem na techto seminarich zaregistrovan,
> zkusil jsem se prihlasit jako jiz zaregistrovany s tim, ze jsem si chtel nechat
> poslat heslo. Bohuzel bez uspechu, protoze mi to vratilo chybove hlaseni s tim,
> za zadana emailova adresa neni validni prestoze ji jiz nekolik let uspesne
> pouzivam.
>
> Mam tedy jen smulu, ze je server codegear nejak zaneprazdnen ci delam neco
> spatne?
Nove webove seminare CodeGear
[*] rkubat(zv)email(tec)cz - 13.3.2008 11:15:40
Myslim, ze to muselo byt zpusobeno nejakym kratkodobym pretizenim. Sam jsem se na par seminaru dival, a to jak rovnou behem prezentace, tak jsem si i prehraval zaznamenane seminare a vzdycky to slo. Priznavam, ze obcas je proniknuti k prezentaci trochu krypticke a je treba dost klikat, ale nakonec se to povedlo. Mozna hraje svou roli i sirka pasma.
Setkate-li se kdokoli pri registraci s problemy, prosim hned napiste na "rkubat(zv)borland(tec)cz" a ja obratem proverim, kde je zakopan pes.
Zdravi, -- RK
> pokusil jsem se na jednom ze seminaru zaregistrovat. Nezdarilo se s tim, ze po
> odeslani formulare se vratilo chybove hlaseni, ze mam kontaktovat systemoveho
> administratora.
> Protoze jsem si nebyl jist, zda jiz nejsem na techto seminarich zaregistrovan,
> zkusil jsem se prihlasit jako jiz zaregistrovany s tim, ze jsem si chtel nechat
> poslat heslo. Bohuzel bez uspechu, protoze mi to vratilo chybove hlaseni s tim,
> za zadana emailova adresa neni validni prestoze ji jiz nekolik let uspesne
> pouzivam.
>
> Mam tedy jen smulu, ze je server codegear nejak zaneprazdnen ci delam neco
> spatne?
FB drop table
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 13.3.2008 06:59:18
> > drop procedure uzivcopy;
> > drop procedure registeraction;
> > commit;
> > drop table kompetence;
> > // cannot delete, object KOMPETENCE is in use
>
> Nepises, jaka verze FB...
> Nestacilo by po dropnuti tech procedur udelat commit? Mozna to souvisi
> s tim, ze jsou ty procedury nactene do nejake cache.
> Karel Rys
Mluvim o FB1.0.3, na vyssi verze prechazime postupne.
commit jsem sice nezminil, ale po tech dvou "drop procedure" jsem ho tam mel a nepomohlo.
Pomuze jenom commit / odpojit / pripojit, pak to funguje.
Jenza ja bych pochopitelne potreboval, aby ten skript pro modifikaci databaze probehl nejak vcelku, ze.
Honza
FB - hromadna zmena "not null"
[*] Jan Sebelik <honza(zv)haes(tec)cz> - 13.3.2008 13:17:51
> horky(zv)cominn(tec)cz napsal(a):
> > Trochu ti to usnadnim, ale nepotesim:
> > Pokud mas pole v databazi deklarovane s "null povoleno", zadnym
> zpusobem se to nepodari zmenit na "not null" .
Ja vim, ze takovy DDL prikaz neexistuje.
> > Jedine nove vytvorit tabulky se spravnou deklaraci.
Lepsi je to, co rika Milan Tomes.
Nezapomen, ze v tabulce jsou ostra data, ze tam jsou referencni integrity, ze tam jsou procedury, ktere nad temito tabulkami pracuji.
> Milan Tomes
> Dalsi moznost je vytvorit novy sloupec v tabulce se spravnou deklaraci,
> prekopirovat data, zrusit stary sloupec a prejmenovat ten novy (tohle
> pouzivam bezne).
Jasne, jenze zrusit stary sloupec znamena zrusit vechny foreign key (jde prave o odkazy do ciselniku a zase znova vytvorit.
Krome toho bude nutno "update yyyy set id_xxxx=0 where id_xxxx is null".
A tech tabulek je 108 a tech referencnich integrit mraky.
> Milan Tomes
> Neni pravda - da se to zmenit prave danym zasahem do systemovych tabulek
> a pak reconnectem k databazi. Odzkouseno na vlastni kuzi (nicmene jen
> jako test, ne v ostrem skriptu) :-)
Ja do toho asi pujdu natvrdo.
Zmeny v databazi budeme jeste tak 2-3 mesice testovat (vcetne noveho klienta), nez to naostro provedeme u uzivatele, takze kdyby byl problem, vcas ho odhalime. Bude toho jeste hodne ... :-)
Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================