Archív konference Delphi

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

trying to modify read-only field na MSSQL 2005 exp

[*] Jaromir Cermak <cermak(zv)procom(tec)cz> - 15.4.2008 11:59:58

Ahoj vsichni

Pouzivam D7 ent., ADOExpress, MSSQL 2000. Aplikace je dvouvrstv, napsana pomoci DataSnap. Vse funguje OK. Kdyz pouziju MSSQL 2005 express edition s touze aplikaci a databazi ktera vznikla zazalohovanim puvodni na MSSQL 2000 a obnovou na MSSQL 2005 do databaze vytvorene jako kompatibilni s MSSQL 2000.

Projevi se nasledujici chyba:

Pri zapisu (clientdataset.post) na klientovi, program zarve: trying to modify read-only field. Na MSSQL 2000 pomohlo nastaveni vlastnosti ReadOnly nekterych fieldu na servrovem ADODatasetu na False. Ted nastavuji ReadOnly na False jak na klientovi tak na serveru a nic. Nemodifikovatelne polozky sice nezapisuju, ale potrebuju si v nich ulozit nejake info, ktere posila klient servru a ridi se jimi vlastni zapis (reaguje na ne kod v BeforeUpdateRecord).

Nevite nekdo co s tim. Predem diky za jakekoliv popostrceni spravnym smerem.

Jaromir Cermak

FB a hodne klientu

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 15.4.2008 10:37:51

Ahoj,


kolegove provadeji zatezove zkousky FB 2.1 v provedeni superserver a
clasic. Na serveru jsou dva ctyrjadrove procesory. V souladu s ocekavanim
se zjistilo, ze clasic poskytuje podstatne vyssi vykon, ale... pripoji-li
se soucasne vice nez cca 40 klientu, neco se pokazi a klienti zacnou padat
(error read data from conncetion). Vypada to, ze vetsi pocet klientu na
clasicu nelze obslouzit. Klienti samotni jsou pripojeni v podstate jen
chvilku, ale rychle se stridaji.

Potrebuji zjistit. Jedna se o nejaky technologicky strop, nebo se da
nejakym nastavovanim tento limit zvysit?

U superserveru je skoda, ze neumi vyuzit vice jader...

Diky

David Lebeda

Rozhrani pro Open Office

[*] Branislav Zaujec <bzaujec(zv)zoznam.sk> - 15.4.2008 09:23:46

Zdravim, tu je nejaka vzorka, snad to pomoze

StarOffice:OleVariant;
StarDesktop : Variant;
LoadParams : Variant;
PropertyValue : Variant;
CoreReflection : Variant;
DocReplace: Variant;
...
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
if not(VarIsEmpty(StarOffice) or VarIsNull(StarOffice)) then
begin
StarDesktop :=
StarOffice.Createinstance('com.sun.star.frame.Desktop');
LoadParams := VarArrayCreate([0, 0], varVariant);
CoreReflection
:=StarOffice.CreateInstance('com.sun.star.reflection.CoreReflection');

CoreReflection.ForName('com.sun.star.beans.PropertyValue').CreateObject(PropertyValue);
PropertyValue.Name := 'Hidden';
PropertyValue.Value := False;
LoadParams[0] := PropertyValue;
sUrl :=
'file:///'+StringReplace(novy_nazov,'\','/',[rfReplaceAll]);
EditorDoc := StarDesktop.LoadComponentFromURL(sUrl,
'_blank', 0,LoadParams);
EditorDocText := EditorDoc.GetText;

a takto mi funguje nahradzovanie
DocReplace := Text.CreateReplaceDescriptor;
DocReplace.SearchCaseSensitive := False;

DocReplace.SetSearchString('&&'+data.Fields[i].FieldName+pom+'&&');
DocReplace.SetReplaceString(data.Fields[i].AsString);
text.ReplaceAll(DocReplace);

Calc

DocReplace := XLSheet.CreateReplaceDescriptor;
aCursor := XLSheet.CreateCursor;
aCursor.gotoStartOfUsedArea(False);
aCursor.gotoEndOfUsedArea(True);
Addr := aCursor.getRangeAddress;
...
SearchText := '&&'+data.Fields[i].FieldName+pom+'&&';
DocReplace.SetSearchString(SearchText);
DocReplace.SetReplaceString(data.Fields[i].AsString);
XLSheet.ReplaceAll(DocReplace);

Takto vytvaram grafy v Calcu - je to vynatok z kodu, ale malo by to stacit.

StarOffice := CreateOleObject('com.sun.star.ServiceManager');
if not(VarIsEmpty(StarOffice) or VarIsNull(StarOffice)) then
begin
StarDesktop :=
StarOffice.CreateInstance('com.sun.star.frame.Desktop');
LoadParams := VarArrayCreate([0, 0], varVariant);
CoreReflection
:=StarOffice.CreateInstance('com.sun.star.reflection.CoreReflection');

CoreReflection.ForName('com.sun.star.beans.PropertyValue').CreateObject(PropertyValue);

CoreReflection.ForName('com.sun.star.lang.Locale').CreateObject(ALocale);
PropertyValue.Name := 'Hidden';
PropertyValue.Value := False;
LoadParams[0] := PropertyValue;
sUrl := 'private:factory/scalc';
EditorDoc := StarDesktop.LoadComponentFromURL(sUrl, '_blank',
0,LoadParams);
OFormats := EditorDoc.GetNumberFormats;
ACurKey := OFormats.GetStandardFormat(8,ALocale);
ASheets := EditorDoc.GetSheets;
ADataSheet := ASheets.GetByIndex(0);
if ASheets.GetCount>1 then
AChartSheet := ASheets.GetByIndex(1)
else
AChartSheet := ASheets.insertNewByName('Chart - ',1);
// naplnenie dat
pocet := 0;
for I := 0 to AData.FieldCount - 1 do // Iterate
begin

ADataSheet.getCellByPosition(i,pocet).setFormula(GetLOcalizedText(AData.Fields[i].FullName,
True));

end; // for

for I := 0 to AData.RecordCount - 1 do // Iterate
begin
pocet := pocet + 1;
for J := 0 to AData.FieldCount - 1 do // Iterate
begin
ACell := ADataSheet.getCellByPosition(J,pocet);
if AData.Fields[J].DataType in [ftFloat, ftInteger, ftWord,
ftSmallInt] then
ACell.Value := AData.Fields[J].Value
else
ACell.SetFormula(VarToStr(AData.Fields[J].Value));
if Copy(AData.Fields[J].FullName,1,3)='FCD' then
begin
ACell.NumberFormat := ACurKey;
end;
end; // for
AData.Next;
end; // for
// graf

CoreReflection.forName('com.sun.star.awt.Rectangle').createObject(aRect);
PixelsPerMM(frmMain.Canvas,cx,cy);
aRect.Height := (MDGrafy.FieldByName('FNHIGH').AsInteger*cx)*10;
aRect.Width := MDGrafy.FieldByName('FNWDTH').AsInteger*cy*10;
aRect.X := 1000;
aRect.Y := 1000;

aChartCollection := aChartSheet.getCharts;
aAddresses := VarArrayCreate([0,0], VarVariant);

aAddresses[ 0 ] :=
ADataSheet.GetCellRangeByName(rozsah).getRangeAddress;
aChartCollection.addNewByName( 'sChartName', aRect, aAddresses,
true, true );

aTableChart := aChartCollection.getByName( 'sChartName' );
// the table chart is an embedded object which contains the chart
document
aChartDoc := aTableChart.getEmbeddedObject;
// ' Get the drawing text shape of the title of the chart.
// aTitleTextShape := aChartDoc.getTitle();
// ' Change the title.
aChartDoc.Title.String := AChartTitle;
// create a diagram via the factory and set this as new diagram
aChartDoc.setDiagram(aChartDoc.createInstance(
'com.sun.star.chart.'+DajTypGrafuOOO(... ));
ADiagram := aChartDoc.getDiagram;
ADiagram.Dim3D := True;
ADiagram.Stacked := True; //long
if ...
ADiagram.DataRowSource := 0 // rows
else
ADiagram.DataRowSource := 1; // COLUMNS

aDiagram.XAxis.CharHeight := 8;
aDiagram.YAxis.CharHeight := 8;
AChartDoc.Legend.CharHeight := 8;
AChartDoc.Title.CharHeight := 14;

AChartDoc.HasLegend := ?

ACurrentController := EditorDoc.getCurrentController;
ACurrentController.setActiveSheet(AChartSheet);
end;
except
end;
StarOffice := Unassigned;

Maju na strankach SDK, kde su priklady, podla ktorych som to luskal aj ja

Jan Sebelik wrote / napisal(a):
> Komunikace Delphi x MS Office je snadna: COM rozhrani.
> Ted ale vzniknul pozadavek, abychom komunikovali podobne s Open Office.
> (jde mi hlavne o Excel x Scalc).
>
> Nic rozumne jsem zatim nenasel. Ma nekdo nejaky tip?
>
> Diky
>
> Honza
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW
> = www.haes(tec)cz
> = Vojtiskova 321
> = 507 81 Lazne Belohrad
> ====================================
>
>
>
>


--

S pozdravom

Zaujec, EasySoft s.r.o.

Rozhrani pro Open Office

[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 15.4.2008 08:49:42

Ahoj,
nikdy jsem s tim nepracoval, jen jsem si vzpomnel, ze jsem na to na
strankach OOo narazil - maji SDK kde by mely byt priklady v i Delphi,
jinak tu:
http://development.openoffice.org/
a cca ve trech ctvrtinach jsou odkazy na Delphi...

HTH,
pl


Jan Sebelik wrote:
> Ted ale vzniknul pozadavek, abychom komunikovali podobne s Open Office.
> (jde mi hlavne o Excel x Scalc).
>
> Nic rozumne jsem zatim nenasel. Ma nekdo nejaky tip?

Rozhrani pro Open Office

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 15.4.2008 08:41:39

Komunikace Delphi x MS Office je snadna: COM rozhrani.
Ted ale vzniknul pozadavek, abychom komunikovali podobne s Open Office.
(jde mi hlavne o Excel x Scalc).

Nic rozumne jsem zatim nenasel. Ma nekdo nejaky tip?

Diky

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================

Zeos MySQL 5.1 Utf8

[*] Ludan <konference(zv)sales(tec)cz> - 15.4.2008 16:12:17

Zdravim,
Pouzivam komponenty Zeos pro pristup k MySQL. Vesmes vzdy cp_1250. Nyni je
pozadovana podpore unicode.
Jenze vsechny komponenty dbgrid, dbedit (pouzivam vesmes JVCL) neumeji
unicode nebo to neumim ja s nimi :)
Predem diky za rady.
Ludek

Jaky tiskovy generator pro Delphi5?

[*] delphi(zv)mjsoft(tec)cz - 16.4.2008 15:27:56

Zdravim,

V jednom projektu pouzivam na tisk komponenty SINEA. Narazil jsem na
problem, ktery tam nejde vyresit a proto shanim lepsi komponentu. Potreboval
bych krome beznych veci toto:

- podminene formatovani (barva pisma a pozadi)
- promenna vyska prvku sestavy (z databaze) + oramovani takto zvetseneho
prvku + zvetsetseni ostatnich prvku v radku
- tisk HTML
- export do PDF, HTML, RTF
- uzivatelsky editor
- moznost vlastniho preview

Nasel jsem FastReport a vypada docela dobre, ale zatim jsem ho nezkousel a
nevim zda splni vsechny tyto body. Muzete poradit jestli by stacil, nebo tip
na nejaky jiny.

Diky Jindra


3030 (20080416)
__________



Jaky tiskovy generator pro Delphi5?

[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 16.4.2008 15:39:57

> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of delphi(zv)mjsoft(tec)cz
>
> Zdravim,
>
> V jednom projektu pouzivam na tisk komponenty SINEA. Narazil jsem na
> problem, ktery tam nejde vyresit a proto shanim lepsi
> komponentu. Potreboval
> bych krome beznych veci toto:

:)) FastReport, umi vic nez si prejes.

PMal

FB a hodne klientu

[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 16.4.2008 17:12:03

DD,

On Tuesday, April 15, 2008 1:30 PM ,
Lebeda David <david.lebeda(zv)comarr(tec)cz> wrote:

>> Default nema xinetd zadny limit na soubezny pocet spojeni
>> (instances) ale ma limit na maximalni pocet spojeni za sekundu (50)
>> - viz cps (connections per second). Samozrejme pokud DB muze
>> nainstalovat konfoguracni soubor s nedefaultnimi limity...
>>
>> Pri prekroceni limitu by se IMHO mel ve /var/log/messages obevit
>> prislusny zaznam...
>>
>
> V logu FB se opakovane vyskytuje:
>
> Fatal lock manager error: semaphores are exhousted, errno: 4
>

pokud se nejedna o nejakou interni zalezitost FB mohlo by jit o
problem s dosazenim max poctu semaforu v kernelu. 2.6kove jadro
prozradi limity pomoci
cat /proc/sys/kernel/sem.

Firebird neznam - mozna lze jeste nejake interni limity zvysit v jeho
nastaveni

D. Toman


Jaky tiskovy generator pro Delphi5?

[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 17.4.2008 07:09:05


> :)) FastReport, umi vic nez si prejes.
>
> PMal


FastReport toho umi hodne , ale obcas mi tam v praxi neco chybi.

Napriklad

- Nemoznost naridit u GroupFooter tisk na konci stranky

- Moznost vicenasobneho vkladani pagefooter (a dalsich bandu) , ktere by
se tiskly podle poradi (tim bych si castecne vyresil predesly "nedostatek")

- Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
(i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA umi )

- Nemoznost nastaveni jednoducheho vynechani pozadovane poctu stitku na
archu, napriklad pri postupnem tisku (SINEA umi )

- Automaticke oramovani cele skupiny (Groupheader, detail,
GroupFooter) takova vymozenost , ale v obchodni praxi faktury, dodaky
atd - k nezaplaceni .


- Export do PDF - urcite nevytiskne vse, jak to vidite na originalni
sestave , to je podstatne lepsi pouzivat PDFCreator

- Pri instalaci do Delphi, musim vzdy predeslou instalaci rucne
odinstalovat - proc to proboha nedala instalator automaticky ?


Osobne si myslim kdyby Sinea prepracovala vzhled a ovladani ktere si
ponechala z Delphi 1 a umoznila vetsi interni programovani v ramci
sestavy byla vice jak plnhodnotnou alternativou k Fastreportu.

Jaky tiskovy generator pro Delphi5?

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 17.4.2008 08:25:11

Muzu se zeptat, ktera vymozenost v Sinei ti umozni jednoduche vynechani pozadovane poctu stitku na
archu? Podobny problem jsem resil a jedine co jsem vymyslel bylo vlozeni prazdnych zaznamu do zdroje dat.

M. Dvorak

------------------------------------------------------------------------
Puvodni zprava:

- Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
(i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA umi )

- Nemoznost nastaveni jednoducheho vynechani pozadovane poctu stitku na
archu, napriklad pri postupnem tisku (SINEA umi )
------------------------------------------------------------------------


Jaky tiskovy generator pro Delphi5?

[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 17.4.2008 08:57:15

Ahoj
Je to vlastnost "Sestava.PocetPrazdnychTel"

Kdysi mi to do Sinei implementoval pan Krmela

Tady jde videt jaka je skoda ze k Sinei neni aktualni napoveda
urcite tam je spousta uzitecnych funkci o kterych se nevi ...

Milan Dvorak napsal(a):
> Muzu se zeptat, ktera vymozenost v Sinei ti umozni jednoduche vynechani pozadovane poctu stitku na
> archu? Podobny problem jsem resil a jedine co jsem vymyslel bylo vlozeni prazdnych zaznamu do zdroje dat.
>
> M. Dvorak
>
> ------------------------------------------------------------------------
> Puvodni zprava:
>
> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA umi )
>
> - Nemoznost nastaveni jednoducheho vynechani pozadovane poctu stitku na
> archu, napriklad pri postupnem tisku (SINEA umi )
> ------------------------------------------------------------------------
>
>
>
>
>

Jaky tiskovy generator pro Delphi5?

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 17.4.2008 09:43:18

Puvodni zprava ze dne 17.4.2008 od info(zv)drnholec(tec)cz:

> - Nemoznost naridit u GroupFooter tisk na konci stranky

Jiste by se to dalo vyresit pres skriptovani a umistit cokoliv
kamkoliv.

> - Moznost vicenasobneho vkladani pagefooter (a dalsich bandu) ,
> ktere by se tiskly podle poradi (tim bych si castecne vyresil
> predesly "nedostatek")

Totez, vyresilo by se jiste skriptem.

> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA umi
> )

To neni nelogicka posloupnost. FastReport neni generator pro tisk
stitku, ale generator pro tisk sestav.

> - Nemoznost nastaveni jednoducheho vynechani pozadovane poctu stitku
> na archu, napriklad pri postupnem tisku (SINEA umi )

Opet, FastReport neni urceny pro tisk stitku. Nicmene vynechat pocet
zaznamu (tedy i stitku) lze resit pomoci skriptu.

> - Automaticke oramovani cele skupiny (Groupheader, detail,
> GroupFooter) takova vymozenost , ale v obchodni praxi faktury,
> dodaky atd - k nezaplaceni .

To se podle me da take jednoduse udelat.

> - Export do PDF - urcite nevytiskne vse, jak to vidite na originalni
> sestave , to je podstatne lepsi pouzivat PDFCreator

Co to znamena "urcite se nevytiskne vse"? Podle me se urcite vytiskne
vse. Sinea snad vyexportuje vic?

> - Pri instalaci do Delphi, musim vzdy predeslou instalaci rucne
> odinstalovat - proc to proboha nedala instalator automaticky ?

Ja nic neodinstalovavam, dam tam zdrojaky a prekompiluji jejich
nastrojem.

> Osobne si myslim kdyby Sinea prepracovala vzhled a ovladani ktere si
> ponechala z Delphi 1 a umoznila vetsi interni programovani v ramci
> sestavy byla vice jak plnhodnotnou alternativou k Fastreportu.

Ehm, tohle by se dalo vyhlasit jako JOKE OF THE DAY :-)))

Petr Zahradnik, pocitacovy expert

==========================================================
Petr Zahradnik, Computer Laboratory


web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz

==========================================================


Jaky tiskovy generator pro Delphi5?

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 17.4.2008 10:37:22

Mam dotaz.
FastReport jsem prave quli stitkum zkousel, ovsem jen v jeho free verzi, ale neco specialniho, co by usnadnovalo tisk stitku jsem tam nenasel. Nevis, jestli je to jen specialita ostre verze nebo jsem to jen v te free nenasel. Stacilo by mi tedy nakopnout, kde se da neco ohledne stitku nastavit (mam tedy predstavu velikost stitku, pocet radku a sloupcu a pod).

Dekuji M. Dvorak


V tom pripade se ptam sam sebe - proc tam takova anomalie jako tisk
stitku umoznena ? Snad pujde nekdy koupit generator stitku.
(Dle meho nazoru je to obycejna vymluva tvurcu Fastreportu - a my jsme
to Petre telefonicky jiz nekolikrat resili )> Opet, FastReport neni urceny pro tisk stitku. Nicmene vynechat pocet
> zaznamu (tedy i stitku) lze resit pomoci skriptu.
>

Viz text vyse - a jeste pro doplneni kdyz tisknu stitek, neni tak velky
problem netisknout data z databaze - to lze vyresit prazdnym zaznamem,
jde spise o to netiskout staticke udaje z predlohy.
Asi jsem jediny ktery by tam chtel mit vlastnost Report.EmptyRecords.

Jaky tiskovy generator pro Delphi5?

[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 17.4.2008 10:27:21


Petr Zahradnik napsal(a):
> Puvodni zprava ze dne 17.4.2008 od info(zv)drnholec(tec)cz:
>
>> - Nemoznost naridit u GroupFooter tisk na konci stranky
>
> Jiste by se to dalo vyresit pres skriptovani a umistit cokoliv
> kamkoliv.
>
>> - Moznost vicenasobneho vkladani pagefooter (a dalsich bandu) ,
>> ktere by se tiskly podle poradi (tim bych si castecne vyresil
>> predesly "nedostatek")
>
> Totez, vyresilo by se jiste skriptem.
To muzu oponovat tim, ze v Delphi mohu "jiste" tisknout bez Fastreportu
a dalsich generatoru.
Mohu take tvrdit je nepotrebuji PC, "jiste" by slo problem vyresit
pomoci propisky a notysku ...

Takove navrhy reseni mi prijdou kapku demagogicke a od tebe bych to moc
neocekaval.
Jde snad o ze se urcita komunita (vetsi ci mensi )muze shodnout na tom
ze urcita funkce by byla pro dany produkt prinosem a nikoliv resit to
tak ze tuto funkci sice potrebuji ale nebudu se snazit aby tam byla
zabudovana protoze si kazdou vec budu resit skriptem ci jinym "rucnim"
zpusobem.

To mi pripomina zastance nazoru ze Firebirdu nepotrebuji typ BOOL ,
vzdyt se to nahradit tim nebo tim a nebo jeste dokonce timto ....
(a INTERBASE to tam v 7. verzi dalo jen prto ze nemelo roupami co delat
a FIB PLUS tento nedostatek obchazi vlastni rutinou ze stejneho duvodu )> To neni nelogicka posloupnost. FastReport neni generator pro tisk
> stitku, ale generator pro tisk sestav.

V tom pripade se ptam sam sebe - proc tam takova anomalie jako tisk
stitku umoznena ? Snad pujde nekdy koupit generator stitku.
(Dle meho nazoru je to obycejna vymluva tvurcu Fastreportu - a my jsme
to Petre telefonicky jiz nekolikrat resili )> Opet, FastReport neni urceny pro tisk stitku. Nicmene vynechat pocet
> zaznamu (tedy i stitku) lze resit pomoci skriptu.
>

Viz text vyse - a jeste pro doplneni kdyz tisknu stitek, neni tak velky
problem netisknout data z databaze - to lze vyresit prazdnym zaznamem,
jde spise o to netiskout staticke udaje z predlohy.
Asi jsem jediny ktery by tam chtel mit vlastnost Report.EmptyRecords.>> - Automaticke oramovani cele skupiny (Groupheader, detail,
>> GroupFooter) takova vymozenost , ale v obchodni praxi faktury,
>> dodaky atd - k nezaplaceni .
>
> To se podle me da take jednoduse udelat.

Samozrejme - oramuji si jednotlive prvky vystupu
vsak proto o tom take pisi jako o vymozenosti


> Co to znamena "urcite se nevytiskne vse"? Podle me se urcite vytiskne
> vse. Sinea snad vyexportuje vic?

Nevytiskne - oramovani, ruzne druhy car atd nejsou stejne jako v
originalni sestave.
Vsak kdyz se podivas na reporty bugu FastReportu tak se tam nejvice
opravuji exporty do PDF.

> Ja nic neodinstalovavam, dam tam zdrojaky a prekompiluji jejich
> nastrojem.

Bohuzel nekteri z nas pouzivaji obycejnou instalacni sadu bez
zdrojovych kodu


> Ehm, tohle by se dalo vyhlasit jako JOKE OF THE DAY :-)))
Jiste - hned za vyjadreni ze zadny problem neni, vse se da resit
skriptem :-))

Jaky tiskovy generator pro Delphi5?

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 17.4.2008 11:15:25

info(zv)drnholec(tec)cz dne 17 Apr 2008 v 7:09:

> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA
> umi )

Nemam tady FR, abych to vyzkousel, ale to myslim jde tim, ze se u Detail bandu nastavi napr. 3 sloupce.

Karel Rys


Jaky tiskovy generator pro Delphi5?

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 17.4.2008 11:23:26

Puvodni zprava ze dne 17.4.2008 od Karel Rys:

>> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
>> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA
>> umi )

> Nemam tady FR, abych to vyzkousel, ale to myslim jde tim, ze se u
> Detail bandu nastavi napr. 3 sloupce.

On mysli, ze to tiskne nejdrive prvni sloupec, pak druhy sloupec a pak
treti sloupec. Ale to neni pravda, tiskne to po radcich, prvni radek,
druhy radek, treti radek... normalne zleva doprava.

Petr Zahradnik, pocitacovy expert

==========================================================
Petr Zahradnik, Computer Laboratory


web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz

==========================================================


Jaky tiskovy generator pro Delphi5?

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 17.4.2008 11:21:26

To skutecne jde i v te free verzi, ale strfuj se pak do vysky stitku, kdyz nemuzes zadat jeho presny rozmer. A to umi i Sinea a nikdo to tedy nadaval k dobremu jako vlastnost specialne vytvorenou pro tisk stitku

M. Dvorak

>>> delphi(zv)zas-me(tec)cz 17.4.2008 11:15 >>>

info(zv)drnholec(tec)cz dne 17 Apr 2008 v 7:09:

> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA
> umi )

Nemam tady FR, abych to vyzkousel, ale to myslim jde tim, ze se u Detail bandu nastavi napr. 3 sloupce.

Karel Rys

Jaky tiskovy generator pro Delphi5?

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 17.4.2008 11:17:25

info(zv)drnholec(tec)cz dne 17 Apr 2008 v 7:09:

> - Nelogicka posloupnost tisku stitku shora dolu misto zleva doprava
> (i kdyz je mozne ze v Rusku tiskou tiskarny do boku :-) ) (SINEA
> umi )

A nebo take tim, ze se nadefinuje sestava, ktera ma vysku jen treba 6 radku :) (dotmatrix). Myslim, ze takhle tiskneme u
zakaznika na nekonecny pas stitku. Z printers.xml se pro to ale musi udelat vlasni "model" tiskarny, ktery na konci stranky
neposila FormFeed.

Karel Rys

Jaky tiskovy generator pro Delphi5?

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 17.4.2008 12:23:31

Puvodni zprava ze dne 17.4.2008 od info(zv)drnholec(tec)cz:

> To muzu oponovat tim, ze v Delphi mohu "jiste" tisknout bez
> Fastreportu a dalsich generatoru. Mohu take tvrdit je nepotrebuji
> PC, "jiste" by slo problem vyresit pomoci propisky a notysku ...

Asi jsem natvrdly, ale nechapu souvislost.

> Takove navrhy reseni mi prijdou kapku demagogicke a od tebe bych to
> moc neocekaval.

Co je prosim demagogickeho na vyuziti skriptu v tiskove sestave? Ja
ho pouzivam v sestavach porad, tak jsem demagog? Demagog je ten, kdo
pouziva skriptovani v tiskovych sestavach?

> Jde snad o ze se urcita komunita (vetsi ci mensi )muze shodnout na
> tom ze urcita funkce by byla pro dany produkt prinosem

O to vubec nejde. Shodnout se Ty jako komunita muzes samozrejme na
cemkoliv. Ale nekdo jiny ti na to snad muze rict, ze to jde resit
jinym zpusobem, aniz by to byl demagog.

> a nikoliv resit to tak ze tuto funkci sice potrebuji ale nebudu se
> snazit aby tam byla zabudovana protoze si kazdou vec budu resit
> skriptem ci jinym "rucnim" zpusobem.

Chapu to dobre tak, ze Ty jako komunita ses rozhodl, ze nejaka
vlastnost je pro FastReport prinosem, takze ja jsem demagog, kdyz se
Ti snazim vysvetlit, ze to jde okamzite resit jinym zpusobem, misto
abych se snazil, aby ta vlastnost byla kdesi zabudovana?

> V tom pripade se ptam sam sebe - proc tam takova anomalie jako tisk
> stitku umoznena ?

Mnoho a mnoho let tisknu ve FastReportu stitky na obalky, na baliky,
na diskety, na cedecka... Co to znamena, ze neni umoznena?

FastReport mozna neobsahuje nejake konkretni vlastnosti, ktere by se
daly vyuzit specialne pro tisk stitku. Na to Ti autori rikaji (nebo
aspon vzdycky rikali), ze se tim nezabyvaji, ze to pro ne neni
dulezite, ze FastReport je primarne urceny pro tisk sestav a nikoliv
stitku. Zaroven je ta situace resitelna. Takze co ja na to mam rict?

> Snad pujde nekdy koupit generator stitku. (Dle meho nazoru je to
> obycejna vymluva tvurcu Fastreportu

Proc vymluva? Vzdyt je to jejich produkt, oni si prece muzou delat, co
chteji. FastReport ma miliony jinych vlastnosti a tohle proste pro ne
zrejme neni dulezite.

> - a my jsme to Petre telefonicky jiz nekolikrat resili )

Resili. A resitelne to je.

> Viz text vyse - a jeste pro doplneni kdyz tisknu stitek, neni tak
> velky problem netisknout data z databaze - to lze vyresit prazdnym
> zaznamem, jde spise o to netiskout staticke udaje z predlohy.

No to jde jednoduse vyresit treba tim skriptem.

> Asi jsem jediny ktery by tam chtel mit vlastnost
> Report.EmptyRecords.

A co na to rikaji autori? Psal jsi jim to?

> Nevytiskne - oramovani, ruzne druhy car atd nejsou stejne jako v
> originalni sestave. Vsak kdyz se podivas na reporty bugu FastReportu
> tak se tam nejvice opravuji exporty do PDF.

Ja pro export do PDF pouzivam knihovnu llPDFLib, ale kdyz ty exporty
primo ve FR opravuji, tak je to dobre, ne?

Kdysi jsem mel Sineu. To jeste v dobach Delphi 1. Pouzil jsem ji v
programu, kde se tisklo na vice tiskarnach. Porad byly nejake
problemy, nikdy to netisklo poradne. Autor nereagoval, resp. kdyz jsem
mu zavolal, tak to odkyval a nic neudelal. Tak jsem si tedy misto
supportu dokoupil zdrojaky a chybu opravil. A pozdeji jsem presel na
jiny generator sestav.

> Bohuzel nekteri z nas pouzivaji obycejnou instalacni sadu bez
> zdrojovych kodu

No a je to vazne tak velky problem predchozi verzi odinstalovat?

>> Ehm, tohle by se dalo vyhlasit jako JOKE OF THE DAY :-)))

> Jiste - hned za vyjadreni ze zadny problem neni, vse se da resit
> skriptem :-))

Napsal jsi sadu problemu a ja jsem ti na to odpovedel, ze to vyresit
jde. Tobe se to nelibi, ty bys rad, aby byla vylozene uprava v
programu. Jini se spokoji s tim, ze proste vyresi dany problem.

OK, ja to chapu. Je to jako ze chces mit dve tlacitka START a STOP a
nespokojis se s tim, ze existuje jedno spolecne tlacitko START/STOP,
kdyz konkurencni vysavac sice prdlajs vysaje, prace s nim je silena,
ale ma dve oddelena tlacitka START a STOP.

Petr Zahradnik, pocitacovy expert

==========================================================
Petr Zahradnik, Computer Laboratory


web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz

==========================================================


Jaky tiskovy generator pro Delphi5?

[*] m.mrazik <m.mrazik(zv)stonline.sk> - 17.4.2008 12:19:30

-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
Behalf Of Milan Dvorak
Sent: Thursday, April 17, 2008 11:21 AM
To: delphi-l(zv)clexpert(tec)cz

>Nemam tady FR, abych to vyzkousel, ale to myslim jde tim, ze se u Detail
bandu nastavi napr. 3 sloupce.

Pouzivam fastreport na tlac stiotkov k svojej spokojnosti uz od verzie 2.5.
Je to trochu komplikovanejsie, ale funguje to spolahlivo. Ako nato hladajte
na fore fast-repors a priklad by sa mal nachadzat aj v
binaries fore:
http://www.fast-report.com/en/support/newsgroups.html

miro


Jaky tiskovy generator pro Delphi5?

[*] Roman <sw.maurice(zv)seznam(tec)cz> - 17.4.2008 22:38:13

Properties ColumnGap, ColumnWidth, Height u bandu lze nastavit v pixelech,
cm nebo palcich a nemusi to byt cele cislo, to nestaci?

Roman

PS: Tiskneme z FR4 stitky na archy A4 od rozmeru tusim 1 x 3 cm az po
A5tkove paletove etikety a dale taky na kotouce etiket (v Datamaxech) a na
pokladnich tiskarnach (znakove). Skripty pouzivame minimalne, a ze by navrh
byl slozitejsi nez v Sinee mi neprijde, spis naopak, ale hadat se nebudu :-)


----- Original Message -----
> To skutecne jde i v te free verzi, ale strfuj se pak do vysky stitku, kdyz
> nemuzes zadat jeho presny rozmer. A to umi i Sinea a nikdo to tedy nadaval
> k dobremu jako vlastnost specialne vytvorenou pro tisk stitku
>
> M. Dvorak

> Nemam tady FR, abych to vyzkousel, ale to myslim jde tim, ze se u Detail
> bandu nastavi napr. 3 sloupce.

Zmena poradi sloupcu DBGrid a ulozeni

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 18.4.2008 18:59:45


> jeste byste meli resit situaci, kdy v ini je odkazovano na sloupec,
> ktery ale uz neni v datasetu - coz se muze stat, kdyz udelate novou
> verzi ;), a nebo kdyz mate iniciativni uzivatele, kteri to ini zkusi
> rucne upravit. A taky si vymyslet, co se stane se sloupci, ktere jste
> do gridu v nejake novejsi verzi pridali a v .ini nejsou...

Jako jednoduche a uzivateli akceptovane reseni se mi osvedcilo ini soubor
vytvoreny pod jinou verzi proste smazat, stejne jako kdyz nastane chyba pri
nacitani. A je vymalovano ;)

M.

Zmena poradi sloupcu DBGrid a ulozeni

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 18.4.2008 18:33:43

> mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit
> poradi sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve
> potreby + zmeni sirku a jak je po opetovnem spusteni programu
> dostanu zase do uzivatelem pozadovane podoby?

Jedu napr. s TIniFile (nebo neco jinyho).
PropList je potomkem TStringList:, umi krome Vaues i IntValues apod.
Prislusny INI vypada zhruna jako uplne dole.

Snad jsem to moc nepopletl...

procedure ReadGridColumns(Grid: TDBGrid; const Section, Name: string);
var
L:TPropList; i:Integer; Column: TColumn;
FieldName: string;
begin
Grid.Columns.Clear;
L:=TPropList.Create;
try
L.CommaText:=Ini.ReadString(l(Section,Name,'');
for i:=0 to L.Count-1 do begin
FieldName:=L.Names[i];
Column:= Grid.Columns.Add;
Column.FieldName:=FieldName;
Column.Width:=L.IntValues[FieldName];
end;
finally
L.Free;
end;
end;

procedure WriteGridColumns(Grid: TDBGrid; const Section, Name: string);
var L:TPropList; i:Integer; Column: TColumn;
begin
L:=TPropList.Create;
try
for i:=0 to Grid.Columns.Count-1 do begin
Column:=Grid.Columns[i];
if Column.FieldName<>'' then
L.IntValues[Column.FieldName] := Column.Width;
end;
DesignConfig.SetVal(Section,Name,L.CommaText);
finally
L.Free;
end;
end;

INI fiile:

[TableGrid]
NORMA=ID_NORMA=84,ID_VYROBEK=84,NAZEV=324,DATUM=108,MJNOR=119,MJVYR=94,POZNAMKA=1604,ILOCK=84,SYSINFO=324

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================

Zmena poradi sloupcu DBGrid a ulozeni

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 18.4.2008 17:51:39

> mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit poradi
> sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve potreby +
> zmeni sirku a jak je po opetovnem spusteni programu dostanu zase do
> uzivatelem pozadovane podoby?

Treba takto nejak ulozis do ini:
//save
section := 'MujGrid';
for i:= 0 to Columns.Count-1 do begin
WriteString(section,IntToStr(i),
Format('%s,%d,%s',[Columns[i].FieldName,
Columns[i].Width,
BoolToStr(Columns[i].visible)] ));
end;

opacnym postupem pak zase obnovis - postupne nastavis sloupcum spravny
index, visible, width.

M.

> Predem dik Petr (D7)

Zmena poradi sloupcu DBGrid a ulozeni

[*] delphi(zv)elra(tec)cz - 18.4.2008 17:41:38

Dobry den,
mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit poradi sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve
potreby + zmeni sirku a jak je po opetovnem spusteni programu dostanu zase do uzivatelem pozadovane podoby?

Predem dik Petr (D7)

Zmena poradi sloupcu DBGrid a ulozeni

[*] Peter Ondras <konfery(zv)pse.sk> - 18.4.2008 18:51:44

Tu je moj starsi kod, ktory riesil aj odstranene stlpce z gridu, ktore este
boli ulozene v profile, resp. aj stlpce, ktore su pridane do gridu a
nenachadzaju sa v profile. Jedna sa v podstate o staticke metody, ktore sa
dali vyuzit pre vsetky gridy.

procedure NacitajProfily(Grid: TDBGrid; Objekt: TTable; TabStr: String);
var i, i2: Integer;
OrderPole: String;
Najdene: Boolean;
FieldsListAdd, FieldsListDelete: TStringList;
begin
FieldsListAdd:=TStringList.Create;
FieldsListDelete:=TStringList.Create;
try
try
DM.QueryProfily.Sql.Clear;
DM.QueryProfily.Sql.Add('select * from PROFILY');
DM.QueryProfily.Sql.Add('where TAB='+QuotedStr(TabStr));
DM.QueryProfily.Sql.Add('order by PORADIE');
DM.QueryProfily.Open;
try
if DM.QueryProfily.RecordCount>0 then
begin
// Ak nesedi pocet poli v profile s preddefinovanymi v programe,
tak ich zosynchronizuje
if DM.QueryProfily.RecordCount<>Grid.Columns.Count then
begin
// Ak je mimo profilu pridane pole, tak sa prida nove pole
aj do profilu
for i:=0 to Grid.Columns.Count-1 do
begin
Najdene:=False;
DM.QueryProfily.First;
while not DM.QueryProfily.Eof do
begin
if
Grid.Columns[i].FieldName=DM.QueryProfilyPole.AsString then
begin
Najdene:=True;
Break;
end;
DM.QueryProfily.Next;
end;

if not Najdene then
FieldsListAdd.Add(Grid.Columns[i].FieldName);
end;

// Ak je mimo profilu odobrane pole, tak sa odoberie pole aj
z profilu
DM.QueryProfily.First;
while not DM.QueryProfily.Eof do
begin
Najdene:=False;
for i:=0 to Grid.Columns.Count-1 do
begin
if
Grid.Columns[i].FieldName=DM.QueryProfilyPole.AsString then
begin
Najdene:=True;
Break;
end;
end;

if not Najdene then
FieldsListDelete.Add(DM.QueryProfilyPole.AsString);

DM.QueryProfily.Next;
end;
end;

// Vytvorenie gridu podla profilu
Grid.Columns.Clear;
OrderPole:='';
i:=0;
DM.QueryProfily.First;
while not DM.QueryProfily.Eof do
begin
// kontrola ci pole nebolo odstranene
if FieldsListDelete.Count>0 then
begin
if VymazanePole(FieldsListDelete,
DM.QueryProfilyPole.AsString) then
begin
DM.QueryProfily.Next;
Continue;
end;
end;

//polia
Grid.Columns.Add;
Grid.Columns[i].FieldName:=DM.QueryProfilyPole.AsString;

//velkosti poli
try
if DM.QueryProfilyVelkost.AsInteger>0 then
Grid.Columns[i].Width:=DM.QueryProfilyVelkost.AsInteger;
except
end;

if DM.QueryProfilyZoradenie.AsString='ano' then
OrderPole:=DM.QueryProfilyPole.AsString;
Inc(i);
DM.QueryProfily.Next;
end;

if FieldsListAdd.Count>0 then
begin
for i:=0 to FieldsListAdd.Count-1 do
begin
Grid.Columns.Add;

Grid.Columns[Grid.Columns.Count-1].FieldName:=FieldsListAdd[i];
end;
end;

//vyfarbenie indexovanych poli
if OrderPole='' then
OrderPole:=Grid.Columns[0].FieldName;
Objekt.IndexFieldNames:=OrderPole;
FarbiIndex(Grid, OrderPole);
end;
finally
DM.QueryProfily.Close;
end;
except
end;
finally
FieldsListAdd.Free;
FieldsListDelete.Free;
end;
end;

procedure UlozProfily(Grid: TDBGrid; Objekt: TTable; TabStr: String);
var i: Integer;
OrderPole: String;
begin
try
DM.QueryProfily.Sql.Clear;
DM.QueryProfily.Sql.Add('select * from PROFILY');
DM.QueryProfily.Sql.Add('where TAB='+QuotedStr(TabStr));
DM.QueryProfily.Open;
try
//vymazanie existujuceho profilu
DM.QueryProfily.First;
while not DM.QueryProfily.Eof do
begin
try
DM.QueryProfily.Delete;
except
DM.QueryProfily.Next;
end;
end;

OrderPole:=Objekt.IndexFieldNames;
for i:=0 to Grid.Columns.Count-1 do
begin
DM.QueryProfily.Append;
DM.QueryProfilyTab.AsString:=TabStr;
DM.QueryProfilyPole.AsString:=Grid.Columns[i].FieldName;
DM.QueryProfilyVelkost.AsInteger:=Grid.Columns[i].Width;
DM.QueryProfilyPoradie.AsInteger:=i;
DM.QueryProfilyZoradenie.AsString:='nie';
if Pos(UpperCase(Grid.Columns[i].FieldName),
UpperCase(OrderPole))>0 then
DM.QueryProfilyZoradenie.AsString:='ano';
DM.QueryProfily.Post;
end;
finally
DM.QueryProfily.Close;
end;
except
end;
end;

Zmena poradi sloupcu DBGrid a ulozeni

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 18.4.2008 18:45:44

Cituji Jan Sebelik <honza(zv)haes(tec)cz>:

> Jedu napr. s TIniFile (nebo neco jinyho).
> PropList je potomkem TStringList:, umi krome Vaues i IntValues apod.
> Prislusny INI vypada zhruna jako uplne dole.
>
> Snad jsem to moc nepopletl...
>
> procedure ReadGridColumns(Grid: TDBGrid; const Section, Name: string);
> var
> L:TPropList; i:Integer; Column: TColumn;
> FieldName: string;
> begin
> Grid.Columns.Clear;
> L:=TPropList.Create;
> try
> L.CommaText:=Ini.ReadString(l(Section,Name,'');
> for i:=0 to L.Count-1 do begin
> FieldName:=L.Names[i];
> Column:= Grid.Columns.Add;
> Column.FieldName:=FieldName;
> Column.Width:=L.IntValues[FieldName];
> end;
> finally
> L.Free;
> end;
> end;

Dobry den,

jeste byste meli resit situaci, kdy v ini je odkazovano na sloupec,
ktery ale uz neni v datasetu - coz se muze stat, kdyz udelate novou
verzi ;), a nebo kdyz mate iniciativni uzivatele, kteri to ini zkusi
rucne upravit. A taky si vymyslet, co se stane se sloupci, ktere jste
do gridu v nejake novejsi verzi pridali a v .ini nejsou...

Karel Rys


Logovani zmen

[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 20.4.2008 11:26:48

Jojo, to je pravda a to by mohla byt cesta pro tazatele, to je ale myslim az
od FB2.
PF.

20.4.08, Karel Rys <delphi(zv)zas-me(tec)cz>:
>
> Cituji Pavel Fiser <fiserpavel(zv)gmail.com>:
>
> > Samozrejme to predpoklada prihlasovani k DB dle uzivatelu, a ne "vsichni
> na
> > jednoho aplikacniho".
>
> Ahoj,
>
> ja myslim, ze to neni nutne - FB umoznuje pouzit RDB$GET_CONTEXT and RDB
> $SET_CONTEXT a s jejich pomoci si toho "aplikacniho uzivatele" muzete
> snadno ulozit a v triggerech vyuzit.
>
> Karel Rys
>
>
>
>

Logovani zmen

[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 20.4.2008 11:24:48

> A kam se loguje?
> Zase nejaka "historica verze" pro kazdou stavajici tabulku?

Nene, jasne ze do jedne zurnalove tabulky, kde je index na ID tabulky,
unikatni automaticky prirazovane ID fieldu, typ zmeny (I/U/D), stara
hodnota, nova hodnota...
Nad touto tabulkou se pak filtruji a generuji pripadne "bonz-nahledy"
a reporty...

PF.

Logovani zmen

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 20.4.2008 10:10:43

Cituji Pavel Fiser <fiserpavel(zv)gmail.com>:

> Samozrejme to predpoklada prihlasovani k DB dle uzivatelu, a ne "vsichni na
> jednoho aplikacniho".

Ahoj,

ja myslim, ze to neni nutne - FB umoznuje pouzit RDB$GET_CONTEXT and RDB
$SET_CONTEXT a s jejich pomoci si toho "aplikacniho uzivatele" muzete
snadno ulozit a v triggerech vyuzit.

Karel Rys


Logovani zmen

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 20.4.2008 09:16:32

> Reseni na urovni TClientDatasetu je sice elegantni, ale predpoklada, ze k
> datum se dostane uzivatel jen pres Tvou aplikaci.

Ano.
Presneji vylucne pres aplikacni server.
Databaze ma jedineho uzivatele (nepocitaje SYSDBA), jehoz jmeno ani heslo nikdo nezna.
Presto souhlasim, ze jenom s ClientDataSet si nevystacim - tam smerovala moje otazka.

> IMHO jedinym moznym komplexnim resenim je logovani pres triggery (nejlepe
> obecne).

To je to, cemu jsem se chtel vyhnout. Tech triggeru jsou mraky (i kdyz je lze generovat automaticky).

> Takze logovaci triggery jsou na kazde tabulce

A kam se loguje?
Zase nejaka "historica verze" pro kazdou stavajici tabulku?

> Samozrejme to predpoklada prihlasovani k DB dle uzivatelu, a ne
> "vsichni na jednoho aplikacniho".

V pripade trivrstve aplikace s aplikacnim serverem by sice bylo mozne pro kazdeho klienta vytvorit samostatnou Connection, to by ale ten aplikacni server ponekud ztracel smysl.

Presto diky.

Honza

Logovani zmen

[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 20.4.2008 08:42:30

Reseni na urovni TClientDatasetu je sice elegantni, ale predpoklada, ze k
datum se dostane uzivatel jen pres Tvou aplikaci.
IMHO jedinym moznym komplexnim resenim je logovani pres triggery (nejlepe
obecne).
Ja to tak pouzivam bezne (obdobny mechanizmus vyuzivam i pro replikaci mezi
centralou a pobockami). Samozrejme pri logovani vseho by byl log zbytecne
obrovsky, takze mam konfiguracni tabulku, ve ktere rikam (nebo spis
uzivatel), co a jak hluboce se ma logovat. Takze logovaci triggery jsou na
kazde tabulce a dle konfiguracni tabulky se bud loguje nebo ne. Aby
nezdrzovalo neustale cteni z definicni tabulky pri kazde operaci, je
vygenerovana sada generatoru (pro kazdou tabulku jeden, vazba
tabulka->generator je pres interni cislo zaznamenane v te def.tabulce),
ktere slouzi jako prepinace a ctou se na zacatku tech logovacich triggeru.
Pri velkem mnozstvi tabulek je mozno proces vytvareni a udrzbu triggeru
zautomatizovat a pak uz to jede "samo", takze ve finale to elegantni je :-)

Samozrejme to predpoklada prihlasovani k DB dle uzivatelu, a ne "vsichni na
jednoho aplikacniho".

PF

2008/4/20, Jan Sebelik <honza(zv)haes(tec)cz>:
>
> Logovani zmen jsem vyresil, myslim, hodne pekne:
>
> Schematicky:
> Pracuji s TClientDataSet.
> Do jedine tabulky LOG ukladam cds.Delta.
> Pristup ke zmenam a jejich rozkodovani je velmi jednoduche:
> nactu Delta z databaze;
> cdsLog.Data := Delta;
> mam cdsLog.UpdateStatus a presne vidim puvudni, nove a stare
> hodnoty.
> Nevim, jak vam, me se to fakt dost libi.
>
> Jenze pouzivat pro komunikaci s databazi vyhradne ClientDataSet, to je
> neudrzitelne.
> Preci jenom obcas volam sql prikaz (insert, update, delete), obcas
> ulozenou prioceduru, nejake zmeny do databaze vyvola trigger.
>
> Ma nekdo nejaky rozumny napad, jak takove zmeny logovat?
>
> Ovsem, dokazu si predstavit, ze kazda tabulka bude mit svoji "historickou
> kopii", kde bude stare hodnoty ukladat. trigger (insert, update, delete),
> ktery budu muset pro kazdou tabulku zvlast napsat. Pri poctu tabulek asi 100
> (stredne velky projekt) by to dalo dalsich 100 tabulek navic a 300 triggeru
> navic. Tohle za "rozumne reseni" nepovazuju.
>
> Honza
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW
> = www.haes(tec)cz
> = Vojtiskova 321
> = 507 81 Lazne Belohrad
> ====================================
>
>
>

Logovani zmen

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 20.4.2008 07:04:22

Logovani zmen jsem vyresil, myslim, hodne pekne:

Schematicky:
Pracuji s TClientDataSet.
Do jedine tabulky LOG ukladam cds.Delta.
Pristup ke zmenam a jejich rozkodovani je velmi jednoduche:
nactu Delta z databaze;
cdsLog.Data := Delta;
mam cdsLog.UpdateStatus a presne vidim puvudni, nove a stare hodnoty.
Nevim, jak vam, me se to fakt dost libi.

Jenze pouzivat pro komunikaci s databazi vyhradne ClientDataSet, to je neudrzitelne.
Preci jenom obcas volam sql prikaz (insert, update, delete), obcas ulozenou prioceduru, nejake zmeny do databaze vyvola trigger.

Ma nekdo nejaky rozumny napad, jak takove zmeny logovat?

Ovsem, dokazu si predstavit, ze kazda tabulka bude mit svoji "historickou kopii", kde bude stare hodnoty ukladat. trigger (insert, update, delete), ktery budu muset pro kazdou tabulku zvlast napsat. Pri poctu tabulek asi 100 (stredne velky projekt) by to dalo dalsich 100 tabulek navic a 300 triggeru navic. Tohle za "rozumne reseni" nepovazuju.

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================

ShellAPI - FO_COPY

[*] Pavel Simek <sw68(zv)seznam(tec)cz> - 21.4.2008 08:04:16

Ahojky vsem..

Pouzivam FO_COPY pro kopirovani adresaru.
Nevim ale, jak nastavit, aby se mne nezobrazovala hlaska o vytvoreni
adresare ci o prepisu souboru..

Jde to nejak?

Pavel


3041 (20080419)

Nacteni XML souboru, D7

[*] Zdenek Kalhous <kalhous(zv)eu(tec)cz> - 21.4.2008 10:30:26

Muzete mi nekdo poradit jak nacist XML soubor, nikdy jsem s tim nedelal. Jedna se o strukturu typu hlavicka-radky (objednavky), nasel jsem komponenty XMLDocument, JvXMLDatabase, JvSimpleXML, JvAppXMLFileStorage ale netusim z ktereho konce se do toho pustit. A samozrejme to specha takze nemam cas badat. Treba jednoduchy prikladek s pouzitim nektere z techto komponent by nekde nebyl? Dik.

Z.Kalhous

Nacteni XML souboru, D7

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 21.4.2008 10:40:27

Osobne pouzivam unitu XMLDoc a XMLIntf. Je to rozhrani na MS XML a
funguje dobre.
Maly priklad nacteni a zpracovani souboru:

procedure Set_XML(const Value: WideString);
var
Doc: IXMLDocument;
Node: IXMLNode;
begin
Doc := NewXMLDocument;
Doc.XML.Text := XMLHeader + #13 + WideStringToStringEx(Value, CP_ACP);
Doc.Active := true;
IP := VarToStr(getElementValue(Doc.DocumentElement, 'ip', ''));
ComputerName := VarToStr(getElementValue(Doc.DocumentElement,
'computer_name', ''));
end;

funkce getElementValue je moje pomocna funkce, ktera vraci hodnotu
property NodeValue daneho Nodu (IXMLNode.ChildNodes).

S pozdravem

Milan Tomes


Zdenek Kalhous napsal(a):
> Muzete mi nekdo poradit jak nacist XML soubor, nikdy jsem s tim nedelal. Jedna se o strukturu typu hlavicka-radky (objednavky), nasel jsem komponenty XMLDocument, JvXMLDatabase, JvSimpleXML, JvAppXMLFileStorage ale netusim z ktereho konce se do toho pustit. A samozrejme to specha takze nemam cas badat. Treba jednoduchy prikladek s pouzitim nektere z techto komponent by nekde nebyl? Dik.

Heslo v soubory *.rdp

[*] Ludan <konference(zv)sales(tec)cz> - 22.4.2008 12:04:31

Zdravim,
Potrebuji z programu zavolat terminalove pripojeni za pouziti udaju z me
databaze.
Zatim jsem se dostal k tomu ,ze bych vytvoril docasny soubor terminal.rdp a
zavolal ho pomoci ShellExecute.
Jenom mam ten problem ze nevim jak zakodovat to heslo ktere vypada nejak
takhle :

password
51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB010000002E5C788392FCFC4FB708224F7BF161440000000008000000700073007700000003660000A8000000100000009E599B14E2C5911F7060504C78F5621A0000000004800000A0000000100000007D948623BEB6B7E62F58C4321D3A0E080802000004A8308FD34A27567F647969D8522603A84514EC0D2C2F834A633700630C5419A165447CFE3AFCB607464FDF127E9A32A4971DE1DF9054017A0FADE9DCD0A771B0C994C0F3B7C570EDBF6384ECD0A4ABDF156CFED8DF9493C96E807BAF7FB4B22C1A2BC0176728624877556D01E472BD651427253B3A39C6B0C31E37E5FCA3628AEE22666C7F2C4A434C606745F4704DA87E01CBAEF30E63AE7009260BDF6CD3BD33C8FA11D4B90A28A2CB5F7D59E29CD5E7843F4AE78F061687919AD8F46CFC3C1F4EB30DFD886DA8B110A96A6342AAEA047CDB219A2FC44352EF94C43150732064F817C93B13FCCA1560F6BDE1B33E7894290851FBA56220D4133456B57FBB040FA92870B41FF7C3481267E8ACCCDB821D23F2174D2D938CAEEE5FF23FFD8186F4516C0DD4D6767D95F3EB5314174A0F65B0E34E145677CA9EA54928E920956936735978903BC235B3FE5CC0A6020CF779532B5BB161A60FA9237927C726B0CF4A9D33D528E4ECBEF8A6694F156A9768DD69412E5A4B0DE206767069EF0FD4A61F70665FEA90FD8FCBA54F74558DE8C6
438FB256D232A995B3533FD8FBB192AEB51BCE1BC5E0E6838F5169F3CC5E411BF1640FFADB999ECB109EA9A73CD7C54CC0E2523D0997D31EDED1B8830828C5F133E79EA52052E3010809AC244CE69A48CE6AAA392507F3015709FB51D89EB639CC4743193827F042087B807F5D3FF3118FFCC4DDBD34CD14000000F0560E3716788AA03CFAB6816FCFCC32987BE9420

Dekodovat ho nepotrebuji, je zakodovat.
Mate nekdo nejaky napad ?

Predem diky.
Ludek

priklad celeho RDP souboru :
------------------------------------------------------------------
screen mode id:i:2
desktopwidth:i:1280
desktopheight:i:1024
session bpp:i:16
winposstr:s:0,3,0,0,800,600
full address:s:pcname
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:1
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
displayconnectionbar:i:1
autoreconnection enabled:i:1
username:s:UserName
domain:s:Domain
alternate shell:s:
shell working directory:s:
password
51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB010000002E5C788392FCFC4FB708224F7BF161440000000008000000700073007700000003660000A8000000100000009E599B14E2C5911F7060504C78F5621A0000000004800000A0000000100000007D948623BEB6B7E62F58C4321D3A0E080802000004A8308FD34A27567F647969D8522603A84514EC0D2C2F834A633700630C5419A165447CFE3AFCB607464FDF127E9A32A4971DE1DF9054017A0FADE9DCD0A771B0C994C0F3B7C570EDBF6384ECD0A4ABDF156CFED8DF9493C96E807BAF7FB4B22C1A2BC0176728624877556D01E472BD651427253B3A39C6B0C31E37E5FCA3628AEE22666C7F2C4A434C606745F4704DA87E01CBAEF30E63AE7009260BDF6CD3BD33C8FA11D4B90A28A2CB5F7D59E29CD5E7843F4AE78F061687919AD8F46CFC3C1F4EB30DFD886DA8B110A96A6342AAEA047CDB219A2FC44352EF94C43150732064F817C93B13FCCA1560F6BDE1B33E7894290851FBA56220D4133456B57FBB040FA92870B41FF7C3481267E8ACCCDB821D23F2174D2D938CAEEE5FF23FFD8186F4516C0DD4D6767D95F3EB5314174A0F65B0E34E145677CA9EA54928E920956936735978903BC235B3FE5CC0A6020CF779532B5BB161A60FA9237927C726B0CF4A9D33D528E4ECBEF8A6694F156A9768DD69412E5A4B0DE206767069EF0FD4A61F70665FEA90FD8FCBA54F74558DE8C6
438FB256D232A995B3533FD8FBB192AEB51BCE1BC5E0E6838F5169F3CC5E411BF1640FFADB999ECB109EA9A73CD7C54CC0E2523D0997D31EDED1B8830828C5F133E79EA52052E3010809AC244CE69A48CE6AAA392507F3015709FB51D89EB639CC4743193827F042087B807F5D3FF3118FFCC4DDBD34CD14000000F0560E3716788AA03CFAB6816FCFCC32987BE9420
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:1
disable cursor setting:i:0
bitmapcachepersistenable:i:1

------------------------------------------------------------------

Heslo v soubory *.rdp

[*] Ludan <konference(zv)sales(tec)cz> - 22.4.2008 12:44:34

From: "Ladislav Fitz" <ladislav.fitz(zv)kodytek(tec)cz>

> jak to heslo zakodovat nevim ale mam skusenost ze bude kodovane pouze na
> dany pocitatc (kdysi jsem prenasel .rdp soubor a prave to heslo po prenosu
> nefungovalo - tvarilo se to jako ze neni zadano)

Ano to vim , dokonce mam pocit ,ze to ma jine klice pro kazdeho uzivatele -
ale to mi nevadi - ja vezmu udaje ze sve databaze, vytvorim docasny soubor
pod prave prihlasenym uzivatelem a ihned zavolam shellexecute s parametrem.
Po par sekundach docasny soubor parkrat prepisu nahodnymi znaky a smazu.
Jenom neumim zakodovat to heslo......

Ludek

Heslo v soubory *.rdp

[*] Ladislav Fitz <ladislav.fitz(zv)kodytek(tec)cz> - 22.4.2008 12:30:33

jak to heslo zakodovat nevim ale mam skusenost ze bude kodovane pouze na
dany pocitatc (kdysi jsem prenasel .rdp soubor a prave to heslo po prenosu
nefungovalo - tvarilo se to jako ze neni zadano)

Heslo v soubory *.rdp

[*] Jiri Koula <dino(zv)atrey.karlin.mff.cuni(tec)cz> - 22.4.2008 22:11:16

Zdar vsem,

> Jenom mam ten problem ze nevim jak zakodovat to heslo ktere vypada nejak
> takhle :

taky nevim, lec mam kamose, rika si google, poseptal jsem mu tri nezna sluvka
rdp password hash, nacez se rozkecal a nejaky osmy odkaz vede na stranku

http://www.remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/

kde je dana problematika rozebrana, tentyz autor pak ma odkaz na stranku

http://www.remkoweijnen.nl/blog/2007/10/17/launch-rdp-from-commandline/

coz je v Delphi napsany command line tool na navazani rdp spojeni, v diskusi pak
rika, ze by se i podelil o komponentu, kterou to realizuje. Tak treba tudy
povede cesta.

dino

Vytvoreni service

[*] Pavel Smerk <xsmerk(zv)fi.muni(tec)cz> - 23.4.2008 15:32:38

On Wed, Apr 23, 2008 at 03:24:38PM +0200, Ing. Jiri SOKOL wrote:
> > Od: Pavel Smerk <xsmerk(zv)fi.muni(tec)cz>
> > Datum: 23.4.2008 15:10:07
> > ----------------------------------------
>
> > Nevim teda, co bylo puvodne za dotaz, ale pokud to nemusi byt zadratovane
> > primo v te aplikaci (a naopak skutecne jde o to "co nejrychleji" ;-), tak
> > bych zvazil stare dobre srvany a instsrv primo od MS, pak se jen zaskrtne
> > interakce s desktopem a pobezi to normalne i s GUI, nebude potreba nic
> > menit. Takhle spoustim Office, FineReader, ..., je to na par minut. :)
>
> To jsem uz bohuzel zkousel. Me GUI je postavene na ikone v systemtray
> oblasti, potom se i otevrene okno aplikace nezobrazuje na win-liste...
> atd. Chodilo to pouze pokud jsem byl nalogovany uzivatel. Kdyz jsem se
> odhlasil, aplikace umrela :(

No a kdyby to bezelo pod uzivatelem (local)system? Ja tady ted nemam zadny
vhodny testovaci stroj, ale myslim, ze mi to vsechno jelo i bez meho
prihlaseni, to jen, az se clovek prihlasi, tak to uvidi.

Ale teda nepouzivam systray, mozna je ten zadrhel v nem, to neumim posoudit.

> Pokud znate nekdo limity pro pouziti techto instsrv srvany (myslel jsem,
> ze to je pouzitelne jen na Win2k3 serveru - pletu se?) nastroju, budu rad
> za info - zaradim si do sve knowledgebase :o)

Predpokladam, ze NT4/2000/XP/2003 by nemel byt problem. S novejsimi nemam
zkusenost. O zadnych limitech nevim. :-)
P.

Vytvoreni service

[*] Ing. Jiri SOKOL <js-delphi(zv)seznam(tec)cz> - 23.4.2008 15:24:38

> Od: Pavel Smerk <xsmerk(zv)fi.muni(tec)cz>
> Datum: 23.4.2008 15:10:07
> ----------------------------------------

> Nevim teda, co bylo puvodne za dotaz, ale pokud to nemusi byt zadratovane
> primo v te aplikaci (a naopak skutecne jde o to "co nejrychleji" ;-), tak
> bych zvazil stare dobre srvany a instsrv primo od MS, pak se jen zaskrtne
> interakce s desktopem a pobezi to normalne i s GUI, nebude potreba nic
> menit. Takhle spoustim Office, FineReader, ..., je to na par minut. :)

To jsem uz bohuzel zkousel. Me GUI je postavene na ikone v systemtray oblasti, potom se i otevrene okno aplikace nezobrazuje na win-liste... atd. Chodilo to pouze pokud jsem byl nalogovany uzivatel. Kdyz jsem se odhlasil, aplikace umrela :(
Proto uvazuji o zmene a predelani mimo jine i z toho plynouci zmeny komunikace... ono si to o tento zasah stejne rika, protoze nejdriv to bylo navrzeno tak, aby to komunikovalo s druhou app pomoci sledovane slozky - toto reseni v pripade prace vice master aplikaci prestava byt pouzitelne...

Pokud znate nekdo limity pro pouziti techto instsrv srvany (myslel jsem, ze to je pouzitelne jen na Win2k3 serveru - pletu se?) nastroju, budu rad za info - zaradim si do sve knowledgebase :o)

Diky vsem za vas cas
Jirka

Vytvoreni service

[*] Pavel Smerk <xsmerk(zv)fi.muni(tec)cz> - 23.4.2008 15:06:36

On Wed, Apr 23, 2008 at 02:58:36PM +0200, L?ikola Petr wrote:
> Neprogramatorske reseni by mohlo byt xyntservice (myslim, ze to bylo na
> CodeProjectu). Umoznuje to spoustet klasicke gui aplikace jako windows
> sluzby.

Nevim teda, co bylo puvodne za dotaz, ale pokud to nemusi byt zadratovane
primo v te aplikaci (a naopak skutecne jde o to "co nejrychleji" ;-), tak
bych zvazil stare dobre srvany a instsrv primo od MS, pak se jen zaskrtne
interakce s desktopem a pobezi to normalne i s GUI, nebude potreba nic
menit. Takhle spoustim Office, FineReader, ..., je to na par minut. :)
P.

> From: Ing. Jiri SOKOL [mailto:js-delphi(zv)seznam(tec)cz]
> Potreboval bych z toho co nejrychleji udelat "win - sluzbu". Je mi jasne,
> ze budu muset odbourat cele GUI - tzn komuikaci pres TCP/IP popr. pres DB
> tabulky, zapis hlaseni misto na obrazovku do file atd.

Vytvoreni service

[*] L?ikola Petr <developer(zv)efg(tec)cz> - 23.4.2008 14:58:36

Neprogramatorske reseni by mohlo byt xyntservice (myslim, ze to bylo na CodeProjectu).

Umoznuje to spoustet klasicke gui aplikace jako windows sluzby.

Petr Sikola
From: Ing. Jiri SOKOL [mailto:js-delphi(zv)seznam(tec)cz]
Potreboval bych z toho co nejrychleji udelat "win - sluzbu". Je mi jasne, ze budu muset odbourat cele GUI - tzn komuikaci pres TCP/IP popr. pres DB tabulky, zapis hlaseni misto na obrazovku do file atd.



Vytvoreni service

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 23.4.2008 13:46:30

No v podstate to neni slozite. Ja jsem resil to, ze potrebuji jeden exe,
ktery bude mit moznost spousteni jako standalone out-of-process server i
jako COM-service.
Pomoci command line parametru rozlisim, jestli je pozadovano spusteni
klasicke (parametr -embedding) nebo jako sluzby (parametr -service).

procedure ServiceMainProc(dwArgc: DWORD; lpszArgv: PLPSTR); stdcall;
var
ServiceStatusHandle: SERVICE_STATUS_HANDLE;
ServiceStatus: _SERVICE_STATUS;

procedure ServiceCtrlHandlerProc(CtrlCode: DWord); stdcall;
begin
case CtrlCode of
SERVICE_CONTROL_STOP:
begin
SetEvent(DoneEventHnd);
exit;
end;
SERVICE_CONTROL_INTERROGATE:
if not SetServiceStatus(ServiceStatusHandle, ServiceStatus) then
exit;
else
exit;
end;
end;

const
RPC_C_AUTHN_LEVEL_DEFAULT = 0;
RPC_C_IMP_LEVEL_DELEGATE = 4;
begin
ServiceStatusHandle := RegisterServiceCtrlHandler(ServiceName,
(zv)ServiceCtrlHandlerProc);
if ServiceStatusHandle = 0 then
exit;

ServiceStatus.dwServiceType := SERVICE_WIN32_OWN_PROCESS;
ServiceStatus.dwCurrentState := SERVICE_START_PENDING;
ServiceStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP;
ServiceStatus.dwWin32ExitCode := NO_ERROR;
ServiceStatus.dwServiceSpecificExitCode := NO_ERROR;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;

try
DoneEventHnd := CreateEvent(nil, false, false, nil);
if DoneEventHnd = 0 then
raise EG3OSError.Create('Error creating event object');
OleCheck(CoInitializeEx(nil, COINIT_MULTITHREADED));
try
OleCheck(CoInitializeSecurity(nil, -1, nil, nil,
RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_DELEGATE, nil, 0, nil));
//Vista compatibility
//inicializace - v mem pripade vytvoreni IClassFactory objektu a
registrace (CoRegisterClassObject)

ServiceStatus.dwCurrentState := SERVICE_RUNNING;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
if not SetServiceStatus(ServiceStatusHandle, ServiceStatus) then
raise EG3OSError.Create('Error setting service status to running');

WaitForSingleObject(DoneEventHnd, INFINITE);

ServiceStatus.dwWin32ExitCode := NO_ERROR;
ServiceStatus.dwCurrentState := SERVICE_STOP_PENDING;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
if not SetServiceStatus(ServiceStatusHandle, ServiceStatus) then
exit;

CloseHandle(DoneEventHnd);

//Deinicializace - v mem pripade volano CoRevokeClassObject
finally
CoUninitialize;
end;
ServiceStatus.dwCurrentState := SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
except
on e: EOleSysError do
begin
if DoneEventHnd <> 0 then
CloseHandle(DoneEventHnd);
ServiceStatus.dwCurrentState := SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode := e.ErrorCode;
ServiceStatus.dwServiceSpecificExitCode := e.ErrorCode;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
end;
on e: EG3OSError do
begin
if DoneEventHnd <> 0 then
CloseHandle(DoneEventHnd);
ServiceStatus.dwCurrentState := SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode := e.OSErrorCode;
ServiceStatus.dwServiceSpecificExitCode := e.OSErrorCode;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
end;
on e: Exception do
begin
if DoneEventHnd <> 0 then
CloseHandle(DoneEventHnd);
ServiceStatus.dwCurrentState := SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode := ERROR_SERVICE_SPECIFIC_ERROR;
ServiceStatus.dwServiceSpecificExitCode := 999;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
end;
end;
end;

var
ServiceTableEntry: array[0..1] of _SERVICE_TABLE_ENTRYA;
begin
if ParamCount < 1 then
begin
MessageBox(0, 'Invalid parameters', 'Error', MB_OK + MB_ICONERROR);
exit;
end;
CoInitializeEx(nil, COINIT_MULTITHREADED);
try
if FindCmdLineSwitch('embedding', ['-', '/'], true) then
begin
ServerType := stStandalone;
Mtx := CreateMutex(nil, false, 'G3TCPServer_Mtx');

DoneEventHnd := CreateEvent(nil, false, false, nil);

//Standardni COM server - spusteni

WaitForSingleObject(DoneEventHnd, INFINITE);

CloseHandle(DoneEventHnd);
CloseHandle(Mtx);
end
else
if FindCmdLineSwitch('service', ['-', '/'], true) then
begin
if (not IsWinNT) or (Win32MajorVersion < 4) then
begin
MessageBox(0, 'Service can be used on Windows NT 4 and
newer systems !!!', 'Error', MB_OK + MB_ICONERROR);
exit;
end;

ServerType := stService;

Mtx := CreateMutex(nil, false, 'G3TCPServer_Mtx');

ServiceTableEntry[0].lpServiceName := ServiceName;
ServiceTableEntry[0].lpServiceProc := (zv)ServiceMainProc;
ServiceTableEntry[1].lpServiceName := nil;
ServiceTableEntry[1].lpServiceProc := nil;
StartServiceCtrlDispatcher(ServiceTableEntry[0]);

CloseHandle(Mtx);
end;
finally
CoUninitialize;
end;
end.

V destruktorech COM objektu je test :
if CoReleaseServerProcess = 0 then
SetEvent(DoneEventHnd); //Nastavi event do signalniho stavu a tim da
povel k ukonceni serveru.

Pri pouzivani standardniho VCL frameworku pro sluzby jsem se setkal se
spoustou problemu (a potazmo i zbytecne dlouhemu kodu), tak jsem si
napsal to spusteni sam. Jak sam vidis, je to dost jednoduche.

S pozdravem

Milan Tomes


Ing. Jiri SOKOL napsal(a):
> V soucasne dobe mam hotovou aplikaci, ktera provadi sber dat z portu, komunikuje s okolim, spolupracuje s database engine FB 1.5.5 atd.
> Je to reseno jako hlavni vlakno aplikace pro obsluhu GUI, a 2timery spoustejici "pracovni" vlakna.
>
> Potreboval bych z toho co nejrychleji udelat "win - sluzbu". Je mi jasne, ze budu muset odbourat cele GUI - tzn komuikaci pres TCP/IP popr. pres DB tabulky, zapis hlaseni misto na obrazovku do file atd.
>
> Jenomze jak dal? Co a jak mam udelat, aby to behalo jako sluzba? Bohuzel jsem doted zadnou jeste nevytvoril :(
>

Vytvoreni service

[*] Ing. Jiri SOKOL <js-delphi(zv)seznam(tec)cz> - 23.4.2008 13:24:29

Ahoj vsem!
mam nasledujici problem, ktery bych s Vami probrat, abych postupoval spravne a nedelal od zacatku nejake boty.

V soucasne dobe mam hotovou aplikaci, ktera provadi sber dat z portu, komunikuje s okolim, spolupracuje s database engine FB 1.5.5 atd.
Je to reseno jako hlavni vlakno aplikace pro obsluhu GUI, a 2timery spoustejici "pracovni" vlakna.

Potreboval bych z toho co nejrychleji udelat "win - sluzbu". Je mi jasne, ze budu muset odbourat cele GUI - tzn komuikaci pres TCP/IP popr. pres DB tabulky, zapis hlaseni misto na obrazovku do file atd.

Jenomze jak dal? Co a jak mam udelat, aby to behalo jako sluzba? Bohuzel jsem doted zadnou jeste nevytvoril :(

Za jakekoli zkusenosti predem diky!
Jirka
--------------------------------------------------------------
Jiri Sokol, jiri.sokol(zv)seznam(tec)cz, 724 144 097
D6Prof+SP3; WinXP+SP2; Firebird 1.5.5

Grid, filtrovany dataset a scrollbar

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 23.4.2008 12:30:25

Ahoj,

mam kbmMemTable, kteoru zobrazuji v gridu. Grid obsahuje svisly posuvnik.
Kdyz kbmMemTable neni filtrovana, chova se posuvnik korektne, tj. tahanim
za posuvnik mohu vybrat pomerne presne aktivni radek.

Jakmile ale tabulka je filtrovana (OnFilterRecord), ma posuvnik jen tri
polohy. Je to zrejme dan za to, ze ve filtrovanem stavu grid nevi, kolik
obsahuje zaznamu.

Neexistuje nejaky zpusob, jak i na filtrovanem kbmMemTable mit normalne
funkcni posuvnik? Je zajimave, ze treba TTable nad Paradoxem se i pri
filtrovani chova dobre.

Diky predem.

David Lebeda

dynamic array dynamic load dll

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 23.4.2008 08:28:00

Ales Pavel napsal(a):
> nevite proc nejde exportovat fci ci proceduru ktera vraci ci naplnuje
> dynamicky array? Mam plugin aplikaci a v te mam tento problem
>
> data se vrati ale pak mi to zbuchne na epointerexception.
>
> Neporadite jak spravne naplnit dynamic array z DLL?
>

podle mne plati to co u ostatnich typu jako string apod.

musis pouzit nejaky spravce pameti:
drive ShareMem (nyni jen nejvetsi zoufalci),
nyni FastShareMem, FastMM a spol (bez dll)

R.

dynamic array dynamic load dll

[*] Ales Pavel <aldik(zv)quick(tec)cz> - 23.4.2008 00:41:29

nevite proc nejde exportovat fci ci proceduru ktera vraci ci naplnuje
dynamicky array? Mam plugin aplikaci a v te mam tento problem

data se vrati ale pak mi to zbuchne na epointerexception.

Neporadite jak spravne naplnit dynamic array z DLL?


Diky

Ales

D7 Ent

Vytvoreni service

[*] Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> - 23.4.2008 17:20:46

Srvany je vetsinou antiviru detekovana a likvidovana... Jen na okraj.

spotreba casu jednotlivymi vlakny

[*] l.vlcek(zv)noel-plus(tec)cz <l.vlcek(zv)noel-plus(tec)cz> - 24.4.2008 15:08:26

preji pekny den vespolek,

narazil jsem na mensi problem.
Mam aplikaci, ktera spousti nekolik vlaken. Jednotliva vlakna pracuji
vicemene nezavisle, "jen cas od casu" cekaji, az jine vlakno uvolni
zamek na sdilene datove strukture. Dobu zamknuti sdilene datove
struktury jsem se snazil omezit na nnejmensi moznou miru.

Potreboval bych zjisit, kolik realneho casu (sekundy, tiky, ...)
spotrebuji jednotliva vlakna v ramci tohoto beziciho procesu, pripadne
kolik tohoto casu stravi v cekani na uvolneni zamku. A nepovedlo se me
vygooglit pouzitelny vysledek. :-(

Byl nekdo uspesnejsi ?? Lze to v Delphi (7) ??
:-)

diky moc


L.Vlcek
noel-plus
chomutov

Synapse vs. ISA server

[*] Lukas Gebauer <gebylist(zv)mlp(tec)cz> - 24.4.2008 10:10:06

> pro komunikaci s PVS pouzivam Synapse komponenty (diky za ne, funguji
> skvele), ale v jedne firme zavedli proxynu ISA Server a Synapse mi
> vraci chybu 500, tj. ze se nepripojily na server. Proxku inicializuji

ISA server patrne vyzaduje NTLM autorizaci, kterou sama osobe Synapse
zatim nepodporuje, ale v konferenci Synaspe se objevily patche, ktere
by ji to mely umet naucit. Zrovna minuly tyden se tam o tom
diskutovalo.

Podivej se na:
http://www.filesend.net/download.php?f=9c1d8349e95312e16b5c953e3512bd1
1



--
Lukas Gebauer.

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

Synapse vs. ISA server

[*] MaReK Penguin Olsavsky <orsm(zv)centrum(tec)cz> - 24.4.2008 09:52:04

Dobry den,
pro komunikaci s PVS pouzivam Synapse komponenty (diky za ne, funguji
skvele), ale v jedne firme zavedli proxynu ISA Server a Synapse mi vraci
chybu 500, tj. ze se nepripojily na server.
Proxku inicializuji nasleduji sekvenci:

if (PrUse = True) then begin
ProxyHost := PrServer;
ProxyPort := PrPort;
if((PrUser<>'') or (prPasswd<>'')) then begin
ProxyUser := prUser;
ProxyPass := prPasswd;
end;
XMLShow.Lines.Add('Nastaveny parametry Proxy serveru');
end;

Nejsem si jist, jestli toto staci, nebo je treba udelat pred post
requestem nejaky dalsi krok.
Dekuji za libovolny hint.

-- MO
- --
MaReK "Penguin" Olsavsky
PHP Voodoo
private mail: orsm(zv)centrum(tec)cz
private web: http://blog.devlabs.biz
Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

spotreba casu jednotlivymi vlakny

[*] l.vlcek(zv)noel-plus(tec)cz <l.vlcek(zv)noel-plus(tec)cz> - 25.4.2008 12:46:18

Ondrej Kelle wrote:
>> Potreboval bych zjisit, kolik realneho casu (sekundy, tiky, ...)
>> spotrebuji jednotliva vlakna v ramci tohoto beziciho procesu,
>> pripadne kolik tohoto casu stravi v cekani na uvolneni zamku. A
>> nepovedlo se me vygooglit pouzitelny vysledek. :-(
>>
>
> Windows poskytuje aj performance counter "% Processor Time" pre jednotlive thready.
> Da sa to sledovat interaktivne v nastroji PerfMon alebo tiez cez API v kode.
> Mozes skusit PerfUtils: http://www.aldyn.ru/products/perfutils/index.html
>
jo,
vyzkousim, diky moc za tip...
:-)

pekny vikend


L.Vlcek

Zmena Caption u prvku pres DLL

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 25.4.2008 11:16:11

> V DLL procedure je zkouman stejny pocet prvku, kolik jich je ve
> formulari,
> ale podminka if PForm.Components[I] is TButton vzdy vraci false, takze se
> nic nezmeni.

Vsechny globalni promenne deklarovane v unitach pouzitych jak v EXE, tak v DLL maji ve vysledku jine umisteni, jinou adresu.
Zkus se podivat napr. na adresu Forms.Application z EXE a z DLL.
To muze mit fatalni dusledky, kdyz tyto globalni promenne byly navrzeny zrejme proto, aby byly jedinecne.

Totez se tyka operatoru "is" a "as".
Toto "is" ve skutecnosti porovnava adresy nejakych Class Descriptoru. Jenze deskriptor pro TButton v EXE je jiny, nez deskriptor pro TButton v DLL.

Reseni: pouzit balicky, EXE i DLL pouzije stejny (jediny) balicek
Obecne: vyhybat se globalnim promennym

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================

Zmena Caption u prvku pres DLL

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 25.4.2008 11:02:10

Problem je jednoduchy - form je vytvoreny v exe a TButton, ktery
kontrolujes je kompilovan v DLL. A exe.TButton <> dll.TButton. Jedina
moznost je pouzit runtime balicky nebo to predelat na jine reseni.

S pozdravem

Milan Tomes


Ing. Ludek Florian napsal(a):
> nebo ulozenych v dll. Ted potrebuju predelat vsechny formulare tak, aby byly
> k dispozici i v jinych jazycich, tak jsem to chtel udelat co nejjednoduseji,
>
> V DLL procedure je zkouman stejny pocet prvku, kolik jich je ve formulari,
> ale podminka if PForm.Components[I] is TButton vzdy vraci false, takze se
> nic nezmeni.
>
>

spotreba casu jednotlivymi vlakny

[*] Ondrej Kelle <o.kelle(zv)digitalpublishing.de> - 25.4.2008 10:58:09

> Potreboval bych zjisit, kolik realneho casu (sekundy, tiky, ...)
> spotrebuji jednotliva vlakna v ramci tohoto beziciho procesu,
> pripadne kolik tohoto casu stravi v cekani na uvolneni zamku. A
> nepovedlo se me vygooglit pouzitelny vysledek. :-(

Windows poskytuje aj performance counter "% Processor Time" pre jednotlive thready.
Da sa to sledovat interaktivne v nastroji PerfMon alebo tiez cez API v kode.
Mozes skusit PerfUtils: http://www.aldyn.ru/products/perfutils/index.html

HTH
TOndrej

Zmena Caption u prvku pres DLL

[*] Ing. Ludek Florian <ludek.florian(zv)bluerose(tec)cz> - 25.4.2008 10:54:09

Hezky den vsem,

pracuju na projektu, ktery se sklada z vetsiho poctu formularu, at uz v exe
nebo ulozenych v dll. Ted potrebuju predelat vsechny formulare tak, aby byly
k dispozici i v jinych jazycich, tak jsem to chtel udelat co nejjednoduseji,
takze jsem na to sel takto (priklad s talcitkama):

do formulare jsem pridal proceduru, ktera vola funkci v DLL:

type
TMyForm = class(TForm)
Button1: TButton;
:
ButtonXY: TButton;
procedure FormCreate(Sender: TObject);
private
procedure Lokalizuj;
end;

T_Lokalizace = procedure(PApp: TApplication; PForm: TForm); stdcall;

procedure TMyForm.Create(Sender: TObject);
begin
Lokalizuj;
end;

procedure TMyForm.Lokalizuj;
var
DLLHandle: THandle;
ProcAddr: FarProc;
Lokalizace: T_Lokalizace;
begin
DLLHandle := LoadLibrary('MyDLL.DLL');
ProcAddr := GetProcAddress(DLLHandle, 'ZmenNadpisy');
if ProcAddr <> NIL then
begin
Lokalizace := ProcAddr;
Lokalizace(Application, Self); // lokalizace tohoto formulare
end;
end;

------------
A vypis DLL:


library MyDLL;

uses ......

procedure ZmenNadpisy(PApp: TApplication; PForm: TForm); stdcall; export;
var I: integer;
begin
... nactu soubor s texty (zkraceno kvuli prehlednosti)

For I := 0 to PForm.ComponentCount - 1 do
begin
if PForm.Components[I] is TButton then
begin
... vyberu text, ktery se ma zmenit
(PForm.Components[I] as TButton).Caption := NovyText;
end;
end;
end;

procedure StartDLL(dwReason: DWORD); register;
begin
if dwReason = DLL_PROCESS_ATTACH then ...inicializace promennych apod.
end;

exports ZmenNadpisy;

begin
DLLProc := (zv)StartDLL;
StartDLL(DLL_PROCESS_ATTACH);
end.


A co mi jde...
v procedure ZmenNadpisy se napisy tlacitek nezmeni...
pokud tu samou proceduru necham v exe souboru, tak vsechno funguje jak ma.

V DLL procedure je zkouman stejny pocet prvku, kolik jich je ve formulari,
ale podminka if PForm.Components[I] is TButton vzdy vraci false, takze se
nic nezmeni.

Muze mi nekdo poradit, kde mam botu ?

Moc dekuji

Bye Ludan

funkce TSQLConnection.ExecuteDirect

[*] spurny(zv)kavlounky(tec)cz - 25.4.2008 10:02:05

Uz jsem na to prisel, vznikne vyjimka a a ta zabrani dokonceni funkce.
Jde nejak zabranit vzniku vyjimky, kdyz se SQL vyraz v tehle funkci nezdari?

tonda

spurny(zv)kavlounky(tec)cz napsal(a):
> pouzivam funkci ExecuteDirect, ktera provede SQL vyraz a pokud se ten
> vyraz provede bez problemu, ma vratit 0, jinak ma vratit cislo chyby.
> Tak to alespon pisou v napovede. Jenze me vraci nulu i kdyz se vyraz
> nepovede.
>
> Proc je vysledek stale 0 i kdyz evidentne SQL vyraz probehl spatne?
>
>

funkce TSQLConnection.ExecuteDirect

[*] spurny(zv)kavlounky(tec)cz - 25.4.2008 09:45:50

Ahoj,
pouzivam funkci ExecuteDirect, ktera provede SQL vyraz a pokud se ten
vyraz provede bez problemu, ma vratit 0, jinak ma vratit cislo chyby.
Tak to alespon pisou v napovede. Jenze me vraci nulu i kdyz se vyraz
nepovede.
konkretni vyraz na kterem to provadim je treba:
'DROP DOMAIN muj_IntegerKey;'
funkce mi vraci nulu i v pripade ze muj_IntegerKey neexistuje, a take v
pripade, ze existuje, ale je pouzit v nejake tabulce.

Proc je vysledek stale 0 i kdyz evidentne SQL vyraz probehl spatne?

Tonda

D7; Windows Vista; Firebird 2.1.0;

WinINet, htaccess a stazeni souboru

[*] petr palicka <palicka.petr(zv)seznam(tec)cz> - 28.4.2008 09:05:08

Ahoj,

mam url souboru, ktery potrebuju stahnout. Pri stazeni pres prohlizec
mi vyskoci dotaz na jmeno a heslo uzivatele a po vyplneni se mi nabidne
ulozeni souboru.
Potrebuju udelat totez z programu v delphi 7 pro, pres WinINet. Pro
stazeni souboru, kde neni vyzadovana zadna autentizace, pouzivam
InternetOpen a nasledne InternetOpenUrl a vse funguje. Pro stazeni s
overenim uzivatele asi bude nutne pouzit InternetConnect, ale nemuzu
najit zadny sikovny prikladek, tapu jake flagy bych mel pouzit a tak.
Nerad bych travil den dva pruzkumem jiz objeveneho, prosim o radu.

Dik,

Peca aka Petr Palicka

fast report - sestavy v databazi

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 28.4.2008 12:01:22

Chtel bych mit jednotlive sestavy ulozeny v BLOB poli ve FireBirdu. Jediny zpusob, ktery me napada, jak konkretni sestavu do tabulky ulozit nebo z ni nacist, je pomoci nejakeho docasneho souboru a metod LoadFromFile resp. SaveToFile. Nevite, lze -li to udelat primo (tedy primo z tabulky nacist sestavu)?

M. Dvorak

fast report - sestavy v databazi

[*] Petr Berek <sojokl(zv)seznam(tec)cz> - 28.4.2008 12:13:22

Ahoj,
co treba pres streamy?

Petr
2008/4/28 Milan Dvorak <dvorak(zv)gymzn(tec)cz>:

> Chtel bych mit jednotlive sestavy ulozeny v BLOB poli ve FireBirdu. Jediny
> zpusob, ktery me napada, jak konkretni sestavu do tabulky ulozit nebo z ni
> nacist, je pomoci nejakeho docasneho souboru a metod LoadFromFile resp.
> SaveToFile. Nevite, lze -li to udelat primo (tedy primo z tabulky nacist
> sestavu)?
>
> M. Dvorak
>
>
>

WinINet, htaccess a stazeni souboru

[*] Erik Salaj <winsoft(zv)netkosice.sk> - 28.4.2008 12:57:26

> mam url souboru, ktery potrebuju stahnout. Pri stazeni pres prohlizec
> mi vyskoci dotaz na jmeno a heslo uzivatele a po vyplneni se mi nabidne
> ulozeni souboru.
> Potrebuju udelat totez z programu v delphi 7 pro, pres WinINet. Pro
> stazeni souboru, kde neni vyzadovana zadna autentizace, pouzivam
> InternetOpen a nasledne InternetOpenUrl a vse funguje. Pro stazeni s
> overenim uzivatele asi bude nutne pouzit InternetConnect, ale nemuzu
> najit zadny sikovny prikladek, tapu jake flagy bych mel pouzit a tak.
> Nerad bych travil den dva pruzkumem jiz objeveneho, prosim o radu.

na webe mam komponenty zalozene na WinInet
http://www.winsoft.sk/wininet.htm
Je tam trial verzia, na ktorej sa da
experimentovat a mozno aj najst potrebne
flagy.

Erik Salaj

Velikost souboru - Lazarus

[*] delphi(zv)spst(tec)cz - 29.4.2008 11:23:06

Ahoj vsem,
pod open SUSE testuji Lazarus. Jsem prekvapen jak velke binarni soubory
dostavam. Formular, 2x Edit, tlacitko, zadny kod - velikos 14MB.
Je mozne nejak tuto velikost zmensit?

Predem dekuji
Jirka

Velikost souboru - Lazarus

[*] Frantisek Bohac <fb-dkonf(zv)seznam(tec)cz> - 29.4.2008 11:41:08

delphi(zv)spst(tec)cz napsal(a):
> Ahoj vsem,
> pod open SUSE testuji Lazarus. Jsem prekvapen jak velke binarni soubory
> dostavam. Formular, 2x Edit, tlacitko, zadny kod - velikos 14MB.
> Je mozne nejak tuto velikost zmensit?
>
> Predem dekuji
> Jirka
>
>
Ahoj,

je nutne odstranit ladici informace z vysledneho binarniho souboru; pod
Win32 se to da udelat takto (omezeni velikosti dropfiles.exe):

lazarus\fpc\2.2.0\bin\i386-win32\strip.exe --strip-all dropfiles.exe
lazarus\fpc\2.2.0\bin\i386-win32\upx.exe dropfiles.exe

Franta

Velikost souboru - Lazarus

[*] Petr Hlozek <petr h(zv)mrp(tec)cz> - 29.4.2008 11:37:07

Ahoj,

soubor obsahuje debug info a spol.
Zbavit se toho da pomoci utility strip. V adresari kde je binarka spust
strip ./nazev_binarky

Petr

delphi(zv)spst(tec)cz napsal(a):
> Ahoj vsem,
> pod open SUSE testuji Lazarus. Jsem prekvapen jak velke binarni soubory
> dostavam. Formular, 2x Edit, tlacitko, zadny kod - velikos 14MB.
> Je mozne nejak tuto velikost zmensit?
>
> Predem dekuji
> Jirka


Velikost souboru - Lazarus

[*] Jiri Cincura <diskuze(zv)cincura(tec)net> - 29.4.2008 11:47:09

On 4/29/08, Frantisek Bohac <fb-dkonf(zv)seznam(tec)cz> wrote:
> lazarus\fpc\2.2.0\bin\i386-win32\upx.exe dropfiles.exe

Pakovat UPXem je trochu nerozum ... Malilinko to bori memory
management v systemu.

--
Jiri {x2} Cincura (CTO x2develop.com)
http://blog.vyvojar(tec)cz/jirka/ | http://www.ID3renamer.com

Velikost souboru - Lazarus

[*] delphin(zv)post(tec)cz - 29.4.2008 12:01:10

> lazarus\fpc\2.2.0\bin\i386-win32\upx.exe dropfiles.exe

UPX je zlo a nesmi se pouzivat z duvodu optimalni spravy pameti. Paklize chcete zmensit velikost downloadu, pouzijte ZIP/RAR.

Velikost souboru - Lazarus

[*] Radek Cervinka <radek.cervinka(zv)technodat(tec)cz> - 29.4.2008 12:21:11

delphin(zv)post(tec)cz napsal(a):
>> lazarus\fpc\2.2.0\bin\i386-win32\upx.exe dropfiles.exe
>
> UPX je zlo a nesmi se pouzivat z duvodu optimalni spravy pameti. Paklize chcete zmensit velikost downloadu, pouzijte ZIP/RAR.

Hmm trochu silne slova.

a) ty znas memory management Linuxu (puvodni dotaz byl ohledne Suse)?
b) ohledne Windows nevim proc by se pro nejake utility ktere
se provadeji v podstate cele nemohly timto zapakovat
c) co kdyz UPX ma nejaky STUB, ktery provadi online dekomprimaci podle pozadavku Windows (nevim zda to PE format podporuje) a
jelikoz UPX podporuje tolik platforem ani bych se nedivil (resp. na nektere platforme je to mozne)
d) co kdyz je treba aby EXE byl co nejmensi (jelikoz je treba na pomalem a malem mediu) a pak se spoleha
na to ze si ho spravce pameti odlozi do SWAPu nebo je to jediny process a bezi v podstate furt?

Uznavam ze na vetsinu programu je pouziti UPX nevhodne, ale vety typu neco je zlo jsou podle mne trochu mimo.

R.

Velikost souboru - Lazarus

[*] delphin(zv)post(tec)cz - 29.4.2008 13:11:15

> Uznavam ze na vetsinu programu je pouziti UPX nevhodne, ale vety typu neco je
> zlo jsou podle mne trochu mimo.

UPX ve zkratce dekomprimuje exe soubor z disku do ram a nasledne se to vyswapuje zpet na disk, coz je pro memory management cire zoufalstvi a znemoznuje to pouzit memory-mapping, kterym se z exe precte jenom to, co je opravdu potreba, nikoliv cele exe.
Uznavam, ze ve velmi specifickych ojedinelych pripadech UPX smysl ma, ale obecne je to silne nevhodne.

Velikost souboru - Lazarus

[*] Viky <viky(zv)cmail(tec)cz> - 29.4.2008 16:25:28

V nastaveni prekladace vypni vkladani debug informaci.
Soubor se zmensi zhruba na 10-20% puvodni velikosti.

Vita Vac.

----- Original Message -----
From: <delphi(zv)spst(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, April 29, 2008 11:23 AM
Subject: Velikost souboru - Lazarus


> Ahoj vsem,
> pod open SUSE testuji Lazarus. Jsem prekvapen jak velke binarni soubory
> dostavam. Formular, 2x Edit, tlacitko, zadny kod - velikos 14MB.
> Je mozne nejak tuto velikost zmensit?
>
> Predem dekuji
> Jirka
>
>

Velikost souboru - Lazarus

[*] Viky <viky(zv)cmail(tec)cz> - 29.4.2008 16:25:29

V nastaveni prekladace vypni vkladani debug informaci.
Soubor se zmensi zhruba na 10-20% puvodni velikosti.

V.Vaculik

----- Original Message -----
From: <delphi(zv)spst(tec)cz>
To: <delphi-l(zv)clexpert(tec)cz>
Sent: Tuesday, April 29, 2008 11:23 AM
Subject: Velikost souboru - Lazarus


> Ahoj vsem,
> pod open SUSE testuji Lazarus. Jsem prekvapen jak velke binarni soubory
> dostavam. Formular, 2x Edit, tlacitko, zadny kod - velikos 14MB.
> Je mozne nejak tuto velikost zmensit?
>
> Predem dekuji
> Jirka
>
>

obsah ve Fast reportu

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 29.4.2008 19:03:41

Vytvarim sestavu typu master - detail s tim, ze kazdy zaznam z master tabulky zacina na nove strance. Potreboval bych (nejlepe na zacatku, ale kdyz to nepujde tak se smirim i s koncem) vytvorit obsah, vekterem bude uvedeno cislo stranky pro jednotlive masterrecordy. Jde to?

Milan Dvorak

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> - 03.5.2008 14:44:17

Ahoj...

Mam problem s jiz existujici sluzbou po instalaci na Visty, diky MS, ktery
nyni striktne oddeluje sluzby do Session 0 a vsechno ostatni do Session >=
1.
Tim je sluzbe znemozneno primo pracovat s Desktopem (i kdyz na XP na to
stacilo zvolit interakci s Desktopem) a detekci aktivnich oken nebo
prakticky
zjisteni cehokoliv co souvisi s jejich resources. Impersonace sluzby to
neresi, narazim stale na omezeni striktne zavedene ve Vistach pro sluzby
(vypada to na komplet access denied na vsechno vizualni a to i na detekce
resources okolnich aplikaci pod jinou Session). Proste nyni je to
nepouzitelne.

Napadlo mne, udelat si nove exe, ktere si ze sluzby spustim jako jiny
uzivatel nez LocalSystem. Nemam s tim ale prakticke zkusenosti, nejake
priklady
jsem sice nasel, ale vedlo to akorat k padum.

Mate nekdo prosim malou ukazku jak spustit jinou aplikaci ze sluzby pod
aktualne prihlasenym uzivatelem bez znalosti jeho hesla?

Nebo priklad v Delphi jak pro existujici sluzbu pomoci ADVAPI zvolit stejnou
Session jako ma prave prihlaseny uzivatel, coz by mozna vyresilo problem
taky. Podotykam, kod pro detekci aktualniho okna, precteni jeho titulku,
zjisteni Handle, ProcessId jde z "nesluzby" normalne, protoze bezi ve stejne
Session ID v jake jsem jiz prihlasen k desktopu.

Moc diky...

Milan

Project manager v D2007 a direktivy include

[*] Mgr. Martin Radvansky <delphiconf(zv)radvansky(tec)net> - 04.5.2008 11:43:53

Dobry den,

v soucasnosti prechazime v jednom velkem projektu z D7 na D2007, ale
narazil jsem na jedno pro me podivne chovani Project Manageru.

Pouzivame celkem masivne soubory s definici direktiv pro podmineny
preklad.

To znamena ze v kazde unite vcetne dpr na zacatku je direktiva {$include
switches.inc}

V D7 a D5 se to v projekt manageru chovalo vzdy korektne a ten
zobrazoval vsechny soubory obsazene v projektu.

V D2006 i D2007 se project manager chova tak, ze pokud mam podmineny
preklad na nektere soubory v casti uses v dpr souboru, tak v
pripade, ze mam na zacatku direktivu $include tak nejsou tyto
podminene unity zobrazeny v Project manageru. Pokud obsah inc
souboru vlozim primo do dpr, tak se zobrazuji vsechny unity projektu
korektne.

Toto ma ale problem v tom ze musim na 2 mistech udrzovat nastaveni
direktiv. Netusil by nekdo jak z toho ven?

Cilem je abych mel v ProjectManageru zobrazeny vsechny soubory
projektu bez ohledu na to, ze jsou v podminenem prekladu a mohl
pouzit $include s definici podmineneho prekladu. Jeste jeden dotazek, nejde nejak nastavit chovani projekt manageru
tak, aby se choval jako ve starsich verzich? tj nezobrazoval mi
samostatne slozky, ale soubory serazene podle jmena


Diky
--
S pozdravem,
Martin Radvansky

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Martin Schayna <martin.schayna(zv)abra.eu> - 04.5.2008 12:09:55

Milan Kajnar wrote:
> Mam problem s jiz existujici sluzbou po instalaci na Visty, diky MS, ktery
> nyni striktne oddeluje sluzby do Session 0 a vsechno ostatni do Session >=
> 1. Tim je sluzbe znemozneno primo pracovat s Desktopem
<snip>
> Napadlo mne, udelat si nove exe, ktere si ze sluzby spustim jako jiny
> uzivatel nez LocalSystem. Nemam s tim ale prakticke zkusenosti, nejake
> priklady jsem sice nasel, ale vedlo to akorat k padum.
>

NT sluzba by nemela primo interahovat s desktopem, jakkoliv to pred
Vistami bylo mozne. Bezne se to resi tak, ze existuje dalsi obsluzny
program, spousteny ovsem nikoliv z procesu sluzby, ale napr. po
prihlaseni uzivatele se minimalizuje do tray-oblasti. Tento "klient"
sluzby s ni komunikuje pomoci prostredku meziprocesove komunikace (IPC),
napr. TCP sokety nebo memory mapped files + synchronizacni prostredky
jadra (mutexy). Nelze pouzit cokoliv co souvisi s vizualnem, napr.
vyhledani okna pomoci broadcast message a vymena dat pomoci WM_COPYDATA.
Osobne doporucuji TCP, ktere je s pouzitim Indy nebo Synapse celkem
snadne a vhodne pro jakekoliv objemy vymenovanych dat.

Vice napr. zde:
http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx

Martin Schayna

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Martin Schayna <mschayna(zv)gmail(tec)com> - 04.5.2008 12:09:56

Milan Kajnar wrote:
> Mam problem s jiz existujici sluzbou po instalaci na Visty, diky MS, ktery
> nyni striktne oddeluje sluzby do Session 0 a vsechno ostatni do Session >=
> 1. Tim je sluzbe znemozneno primo pracovat s Desktopem
<snip>
> Napadlo mne, udelat si nove exe, ktere si ze sluzby spustim jako jiny
> uzivatel nez LocalSystem. Nemam s tim ale prakticke zkusenosti, nejake
> priklady jsem sice nasel, ale vedlo to akorat k padum.
>

NT sluzba by nemela primo interahovat s desktopem, jakkoliv to pred
Vistami bylo mozne. Bezne se to resi tak, ze existuje dalsi obsluzny
program, spousteny ovsem nikoliv z procesu sluzby, ale napr. po
prihlaseni uzivatele se minimalizuje do tray-oblasti. Tento "klient"
sluzby s ni komunikuje pomoci prostredku meziprocesove komunikace (IPC),
napr. TCP sokety nebo memory mapped files + synchronizacni prostredky
jadra (mutexy). Nelze pouzit cokoliv co souvisi s vizualnem, napr.
vyhledani okna pomoci broadcast message a vymena dat pomoci WM_COPYDATA.
Osobne doporucuji TCP, ktere je s pouzitim Indy nebo Synapse celkem
snadne a vhodne pro jakekoliv objemy vymenovanych dat.

Vice napr. zde:
http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx

Martin Schayna

IBX komponenty a Firebird 2.1

[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 05.5.2008 12:35:40

Zdravim

Ma nekdo prakticke zkusenosti s IBX komponentami a Firebird 2.1

Diky Jura

IBX komponenty a Firebird 2.1

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 05.5.2008 12:39:41

info(zv)drnholec(tec)cz dne 5 May 2008 v 12:35:

> Ma nekdo prakticke zkusenosti s IBX komponentami a Firebird 2.1

Ahoj,

aplikace psana v D5 Pro, IBX komponenty mi funguji proti FireBird 1.5, 2.0 i 2.1. Jedina zaludnost byla v nejake dvojtecce u
komponenty na zalohovani, mam dojem.

Karel Rys

help CHM ve starych Windows

[*] delphi(zv)mjsoft(tec)cz - 05.5.2008 14:55:52

Zdravim,

Mam program v Delphi 5 a predelal jsem napovedu z HLP do CHM souboru.
Na XP me to funguje, ale je problem na starych windows. Existuje neco k
doinstalovani, aby tam napoveda CHM chodila take?

Diky Jindra


3074 (20080505)
__________



help CHM ve starych Windows

[*] Ivan Dulgerov <ivan.dulgerov(zv)sazp.sk> - 06.5.2008 08:47:13

delphi(zv)mjsoft(tec)cz wrote / napisal(a):
> Zdravim,
>
> Mam program v Delphi 5 a predelal jsem napovedu z HLP do CHM souboru.
> Na XP me to funguje, ale je problem na starych windows. Existuje neco k
> doinstalovani, aby tam napoveda CHM chodila take?
>
*Chm help funguje vo Win 98 a novsie.
*Pokial viem, musi byt nainstalovany Internet Explorer tusim
*minimalne verzia 5


--
S pozdravom

Ivan Dulgerov CEI SAZP Programator

Tajovskeho 28
97590 Banska Bystrica
tel: 048 4374144
ICQ : 190698607
mail : ivan.dulgerov(zv)sazp.sk

ADO a zpracovani chyb z SQL serveru...

[*] Martin Srp <martin.srp(zv)volny(tec)cz> - 06.5.2008 13:13:34

Ahoj vsichni,



narazil jsem na jeden problem, na ktery se nemohu dopatrat
odpovedi. Ale verim, ze tady mi urcite nekdo poradi.



Pouzivam D7 a MS SQL 2005.



Mam ulozenou proceduru na SQL severu napr: Kocour75



create procedure Kocour75

as



if object_id('tempdb..##A') is not null drop table ##A



create table ##A (

A varchar(5),

B money

)



insert into ##A (A, B) select '1', 1

insert into ##A (A, B) select cast(123 as money), '1'

go



Z klienta (pouzivam TADOStoredProc) zavolam tuto proceduru a jako vystup
bych ocekaval chybove hlaseni na klientovi, protoze druhy insert vyhodi na
SQL chybu. Ale ouha. Ono ne!



Kdyz ale v procedure zakomentuji prvni insert, pak se mi na klientovi
chybova hlaska z SQL serveru objevi.



Nevite nekdo, proc to takhle funguje a proc se na klienta nedostanou vsechny
chybove hlasky z SQL serveru.



Diky moc za odpovedi.

Kocour75



Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> - 06.5.2008 12:35:30

> Je mi to jasne, ale problem je v jine veci. Ma se jednat o program skryty
> a
> "nesejmutelny" uzivatelem.
> Jedna se o software legalnim zpusobem zjistujici vytizeni PC uzivatelem.

Ale uz vim jak na to... Sluzba mi pohlida zavedeni programu do Spusteni po
startu pres registry.
Do pameti pustim 1 az N modulu, co mam ted ve sluzbe a pokud jeden zjisti
pad jineho, tak ho
zase zavede zpet do pameti a tak porad dokola...

Milan

gbak a embedded verze FB2.1

[*] info(zv)drnholec(tec)cz <info(zv)drnholec(tec)cz> - 06.5.2008 08:03:10

Zdravim

Vzhledem k prechodu na verzi FB 2.1 s pouzitim komponent IBX v D2007
jsem chtel pro jistotu pouzivat externi nastroj pro zalohovani.
Bohuzel mi embedded verzi FB2.1 (pr. velikost 2740KB)zalohovani
nefunguje, dari se mito pouze
pokud jsem na serveru PC a pouzivam klientskou knihovnu (pr. velikost
450KB) .

Lze z toho nejak ven nebo je to dana vlastnost ?

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> - 06.5.2008 12:25:30

Je mi to jasne, ale problem je v jine veci. Ma se jednat o program skryty a
"nesejmutelny" uzivatelem.
Jedna se o software legalnim zpusobem zjistujici vytizeni PC uzivatelem.

Milan

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 06.5.2008 13:45:37

DD,

On Tuesday, May 06, 2008 12:35 PM ,
Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> wrote:

>> Je mi to jasne, ale problem je v jine veci. Ma se jednat o program
>> skryty a
>> "nesejmutelny" uzivatelem.
>> Jedna se o software legalnim zpusobem zjistujici vytizeni PC
>> uzivatelem.
>
> Ale uz vim jak na to... Sluzba mi pohlida zavedeni programu do
> Spusteni po startu pres registry.
> Do pameti pustim 1 az N modulu, co mam ted ve sluzbe a pokud jeden
> zjisti pad jineho, tak ho
> zase zavede zpet do pameti a tak porad dokola...
>

nejak mi nedochazi proc by sledovani cinnosti uzivatele nemohla uz
provadet rovnou ta cast spustena jako service...

D. Toman

Zmena poradi sloupcu DBGrid a ulozeni

[*] delphi(zv)elra(tec)cz - 06.5.2008 19:58:07

Dik,
je to super jednoduche, akorat mam problem,
neumim to obnovit z toho vysledku Format.
Pokud to ulozim jako 3 hodnoty do 3 radku, tak to pak bez problemu postupne vratim zpet,
ale 3 hodnoty v jednom radku se mi zdaji elegantnejsi.

Dik Petr


> > mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit poradi
> > sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve potreby +
> > zmeni sirku a jak je po opetovnem spusteni programu dostanu zase do
> > uzivatelem pozadovane podoby?
>
> Treba takto nejak ulozis do ini:
> //save
> section := 'MujGrid';
> for i:= 0 to Columns.Count-1 do begin
> WriteString(section,IntToStr(i),
> Format('%s,%d,%s',[Columns[i].FieldName,
> Columns[i].Width,
> BoolToStr(Columns[i].visible)] ));
> end;
>
> opacnym postupem pak zase obnovis - postupne nastavis sloupcum spravny
> index, visible, width.
>
> M.
>
>
>
>
>
>
>
> > Predem dik Petr (D7)
>
>
>
>

Zmena poradi sloupcu DBGrid a ulozeni

[*] Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> - 07.5.2008 08:37:18

Ahoj, delam neco podobneho, ale nedelam to do INI, ale do registru, protoze ini je
spolecny pro vsechny.

Navic si ke vsem sloupcum priradim jednopismeny kod, takze vysledny retezec vypada cca takto:

"T56|Y123|G83|J78"

Pak si vzdy vykousnu retezec po nejblizsi znak |
a z 1. znaku zjistim sloupec a ze zbytku udelam s.ToIntDef(80);

Zapisuju jen viditelne sloupce takze index nepotrebuji.

Tom

delphi(zv)elra(tec)cz napsal(a):
> Dik,
> je to super jednoduche, akorat mam problem,
> neumim to obnovit z toho vysledku Format.
> Pokud to ulozim jako 3 hodnoty do 3 radku, tak to pak bez problemu postupne vratim zpet,
> ale 3 hodnoty v jednom radku se mi zdaji elegantnejsi.
>
> Dik Petr
> ======================================================================
KP-SYS mail server
http://www.kpsys(tec)cz
+420 466 655 055
======================================================================

Zmena poradi sloupcu DBGrid a ulozeni

[*] Cabak Pavel <delphikonf(zv)cross(tec)cz> - 07.5.2008 08:55:20

Ahoj,

co treba

DBGrid1.Columns.SaveToFile('dbgrid1')
DBGrid1.Columns.LoadFromFile('dbgrid1')

Vice viz. delphi.about.com/od/usedbvcl/a/gridcolumnorder.htm

Pavel Cabak

-----Original Message-----
> > mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit poradi
> > sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve potreby +
> > zmeni sirku a jak je po opetovnem spusteni programu dostanu zase do
> > uzivatelem pozadovane podoby?

Zmena poradi sloupcu DBGrid a ulozeni

[*] Jan Sebelik <honza(zv)haes(tec)cz> - 07.5.2008 09:05:21

> vysledny retezec vypada cca takto:
> "T56|Y123|G83|J78"
> Pak si vzdy vykousnu retezec po nejblizsi znak |
> a z 1. znaku zjistim sloupec a ze zbytku udelam s.ToIntDef(80);

Tip:
var L: TStringList
Podivej se na L.CommaText.

Pak bys nemusel nic "vykousavat", jednotlive hodnoty bys dostal treba jako
L.Values[FieldName] nebo L[index],
pekne for i:= 0 to L.Count-1 do ...

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes(tec)cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
====================================

Zmena poradi sloupcu DBGrid a ulozeni

[*] Petr BRABEC <delphi(zv)elra(tec)cz> - 07.5.2008 09:19:22

Dekuji,
To je genialne jednoduche, proc jsem na neco takoveho neprisel sam?

Dik Petr


-----Original Message-----
From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
Behalf Of Cabak Pavel
Sent: Wednesday, May 07, 2008 8:55 AM
To: delphi-l(zv)clexpert(tec)cz
Subject: Re: Zmena poradi sloupcu DBGrid a ulozeni

Ahoj,

co treba

DBGrid1.Columns.SaveToFile('dbgrid1')
DBGrid1.Columns.LoadFromFile('dbgrid1')

Vice viz. delphi.about.com/od/usedbvcl/a/gridcolumnorder.htm

Pavel Cabak

-----Original Message-----
> > mohl by mi nekdo prosim poradit, jak co nejjednoduseji ulozit poradi
> > sloupcu v DBGrid, kdyz si je uzivatel prerovna dle sve potreby +
> > zmeni sirku a jak je po opetovnem spusteni programu dostanu zase do
> > uzivatelem pozadovane podoby?

Sluzby na Vistach - problemy s Isolaci pres Sessio

[*] Milan Kajnar <mkajnar(zv)mikesoft(tec)cz> - 08.5.2008 09:51:18

> nejak mi nedochazi proc by sledovani cinnosti uzivatele nemohla uz
> provadet rovnou ta cast spustena jako service...
>
> D. Toman

Proto jsem dal dotaz do konference, abych nasel nekoho, kdo
treba poradi, jak se vyporadat s tim co pisu dale... :)

Diky Milan

-------------------------------------------------------------------------------

Kvuli isolaci sluzeb na Vistach nefunguje detekce aktivniho okna,
neni mozne pak precist spravny titulek a nasledne tak ziskat ID
procesu, ktery k aktivnimu oknu patri. Porad to vraci nesmysly.
Na XP je to pak samozrejme bez problemu.
Na Vistach mi nepomohla ani Impersonace na uzivatele, ktery
spustil Explorer.exe. Visty nejsou XP a spusteni sluzby primo
pod uzivatelem take nepomaha.

Microsoft kvuli bezpecnosti pristoupil k isolaci sluzeb.

viz.
http://www.microsoft.com/whdc/system/vista/Vista_Services.mspx

. Session 0 does not support user interfaces. In particular, processes
that are running in Session 0 do not have access to the graphics
hardware and cannot directly display any UI on the monitor.

. Services cannot use PostMessage or SendMessage to send messages
to user applications. All applications are running in Session 1 or higher
and have a different message queue. Applications cannot send Windows
messages to a service for the same reason. Services that send messages
to applications must use mechanisms such as remote procedure calls
(RPCs) or named pipes.

. Services that have a UI, such as a dialog box, cannot display it directly
in Windows Vista. Services that require user interaction must handle
it indirectly. For simple interactions, services can display a message
box in the user's session by calling WTSSendMessage. For more
complex interactions, services must use an approach such as calling
CreateProcessAsUser to create a UI process in the user's session.
That process handles user interaction and communicates with the
service through RPC or named pipes.

DeleteSql v IBUpdateSQL

[*] fremensTech <fremenstech(zv)gmail(tec)com> - 09.5.2008 00:52:33

Hi,
m+AOE-m datab+AOE-zi ve firebirdu, v n+AO0- tabulku s polo+AX4-kami id (primarn+AO0- kl+AO0BDQ-) a
jmeno.
V IBQuery zobraz+AO0-m pouze jm+AOk-na. UpdateObject je IBUpdateSQL1. Vypln+AO0-m
insertSql : INSERT INTO tabulka (ID,JMENO) VALUES
(GEN_ID(GEN_TAB1,1),:JMENO)
P+AVk-id+AOE-n+AO0- tedy funguje. Nefunguje mi maz+AOE-n+AO0-, deletesql:
delete from tabulka where (id = :OLD_id)
Samoz+AVk-ejm+ARs- pokud d+AOE-m
delete from tabulka where (JMENO = :OLD_JMENO)
tak to funguje, ale jen do doby, ne+AX4- se objev+AO0- 2 stejn+AOE- jm+AOk-na. Ot+AOE-zka:
co m+AOE-m dosadit za :OLD_id, aby to fungovalo? Pochopil jsem, +AX4-e
:OLD_id nen+AO0- zn+AOE-m+AOk-, proto+AX4-e se v IBQuery nezobrazuje (kdy+AX4- ho
zobraz+AO0-m, funguje to).

d+ARs-kuji za odpov+ARsBDw-, d


DeleteSql v IBUpdateSQL

[*] fremensTech <fremenstech(zv)gmail(tec)com> - 09.5.2008 01:00:34

sorry, jeste jednou, ale bez diakritiky:
mam databazi ve firebirdu, v ni tabulku s polozkami id (primarni klic) a jmeno.
V IBQuery zobrazim pouze jmena. UpdateObject je IBUpdateSQL1. Vyplnim
insertSql : INSERT INTO tabulka (ID,JMENO) VALUES (GEN_ID(GEN_TAB1,1),:JMENO)
Pridani tedy funguje. Nefunguje mi mazani, deletesql:
delete from tabulka where (id = :OLD_id)
Samozrejme pokud dam
delete from tabulka where (JMENO = :OLD_JMENO)
tak to funguje, ale jen do doby, nez se objevi 2 stejna jmena. Otazka:
co mam dosadit za :OLD_id, aby to fungovalo? Pochopil jsem, ze
:OLD_id neni zname, protoze se v IBQuery nezobrazuje.

dekuji za odpoved, d

CientSocket - buffer

[*] Pavel Simek <sw68(zv)seznam(tec)cz> - 09.5.2008 14:19:39

Zdravim vsechny.

Jde nejak u ClientSocketu nastavit velikost bufferu?

Pavel


3088 (20080509)

DeleteSql v IBUpdateSQL

[*] Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> - 09.5.2008 08:43:06

Zalezi na tom jak mas napsany ten select ktery zobrazujes.

Pokud tam mas "select jmeno from tabulka;"
mas smulu, je tam jen jmeno.

ale "select * from tabulka;"
uz je OK, v gridu si samozrejme muzes zrusit zobrazeni sloupce s ID, takze videt neni, ale
v query je.

Query->FieldByName("id")->AsInteger;

Tom

fremensTech napsal(a):
> sorry, jeste jednou, ale bez diakritiky:
> mam databazi ve firebirdu, v ni tabulku s polozkami id (primarni klic) a jmeno.
> V IBQuery zobrazim pouze jmena. UpdateObject je IBUpdateSQL1. Vyplnim
> insertSql : INSERT INTO tabulka (ID,JMENO) VALUES (GEN_ID(GEN_TAB1,1),:JMENO)
> Pridani tedy funguje. Nefunguje mi mazani, deletesql:
> delete from tabulka where (id = :OLD_id)
> Samozrejme pokud dam
> delete from tabulka where (JMENO = :OLD_JMENO)
> tak to funguje, ale jen do doby, nez se objevi 2 stejna jmena. Otazka:
> co mam dosadit za :OLD_id, aby to fungovalo? Pochopil jsem, ze
> :OLD_id neni zname, protoze se v IBQuery nezobrazuje.
>
> dekuji za odpoved, d
>
>
> ======================================================================
KP-SYS mail server
http://www.kpsys(tec)cz
+420 466 655 055
======================================================================

DeleteSql v IBUpdateSQL

[*] fremensTech <fremenstech(zv)gmail(tec)com> - 09.5.2008 14:03:38

Diky, vypada, ze funguje. Jenom to neni "AsInteger", ale
IBQuery1.FieldByName('id').Visible:=false;
IBQuery1.FieldByName('id').ReadOnly:=true;
Readonly protoze to rvalo "Field 'ID' must have a value."

ScrollBar v DBGridu

[*] Petr Berek <sojokl(zv)seznam(tec)cz> - 09.5.2008 11:51:27

Ahoj,
udelal bych to nejak takhle. Nadefinoval bych si tridu, ktera je odvozena od
tridy TCustomDBGrid:

type TMyCustomDBGrid=class(TCustomDBGrid)
end;

A pak nekde v kodu, nejlepe pred zobrazenim komponenty, napises:
TMyCustomDBGrid(DBGrid1).ScrollBars:=ssNone;

Petr

2008/5/9 Milan Dvorak <dvorak(zv)gymzn(tec)cz>:

> Lze nejak potlacit ScrollBar v DBGridu? Potrebuji v nem zobrazit data a
> vim, ze pocet zaznamu je tak maly, ze se mi zobrazi vsechna a nebude nutny
> pohyb mezi zaznamy. Scroll Bar tam pusobi rusive.
>
> M. Dvorak
>

ScrollBar v DBGridu

[*] Milan Dvorak <dvorak(zv)gymzn(tec)cz> - 09.5.2008 09:39:18

Lze nejak potlacit ScrollBar v DBGridu? Potrebuji v nem zobrazit data a vim, ze pocet zaznamu je tak maly, ze se mi zobrazi vsechna a nebude nutny pohyb mezi zaznamy. Scroll Bar tam pusobi rusive.

M. Dvorak

DeleteSql v IBUpdateSQL

[*] Lebeda David <david.lebeda(zv)comarr(tec)cz> - 09.5.2008 14:55:42

From: "fremensTech" <fremenstech(zv)gmail.com>
Subject: Re: DeleteSql v IBUpdateSQL
To: delphi-l(zv)clexpert(tec)cz
Date sent: Fri, 9 May 2008 14:03:38 +0200
Send reply to: delphi-l(zv)clexpert(tec)cz

> Diky, vypada, ze funguje. Jenom to neni "AsInteger", ale
> IBQuery1.FieldByName('id').Visible:=false;
> IBQuery1.FieldByName('id').ReadOnly:=true;
> Readonly protoze to rvalo "Field 'ID' must have a value."
>

Ahoj,

hlaseni Field 'ID' must have a value - k tomu pripadne viz property fieldu
Required v helpu - to se jen Delphi snazi iniciativne zkontrolovat, ze
udaj byl zadan. Stacilo by shodit Required. Cimz samozrejme nerikam, ze to
mas ci musis pouzit, to je na tobe (a nejen v tomto pripade).

David Lebeda

Pozastaveni zpracovani klavesoveho vstupu.

[*] Josef Zvonicek <prosoft(zv)prosoft(tec)cz> - 09.5.2008 21:26:14

Nevedel by nejake elegantni reseni, jak pozastavit zpracovani vstupu z
klavesnice?
Mam aplikaci kterea komunikuje se serverem pres TCP socket. Potreboval
bych, kdyz odeslu pozadavek na server, abych pozastavil pripadny vstup z
klavesnice do doby nez si ho povolim. Ze serveru mu chodi ruzne zpravy,
ktere zpracovavam a az mi prijde zprava ze serveru ze muzu zacit
zpracovavat klavesovy vstup, tak si ho opet povolim a pokud behem
pozastaveni byly zmacknute klavesy tak si je az ted zpracuji.
Zatim to resim tak, ze kdyz predavam rizeni na server do
FKeybQueueActive pricitam 1 a vyvolam WM_Telnet_Read message. Pak jsem v
cyklu ve WndProc zastaveny a ctu ze socketu zpravy, ktere zpracovavam a
az si FKeybQueueActive zmensim na 0 tak se rozjedu dal a zpracuji
vsechny zpravy tedy i klavesovy buffer. Funguje to ale nejsem si jisty
jestli je to zpravna cesta, pozastavit zpracovavni vsech messages.
Nenapadne nekoho nejake elegantnejsi reseni?

Diky Zvo.

procedure TfrmMLtrm.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_Telnet_Read then
begin
while MLterminal.FKeybQueueActive>0 do
begin
ABuffer:=MLterminal.FTelnet.RecvTerminated(100,'</ML>');
if MLterminal.FTelnet.LastError=0 then
ParselData(ABuffer);
end;
end;

Fastreport 3 a hledani TFrxDBDataset pro sestavu

[*] Martin Burle <mburle2(zv)volny(tec)cz> - 10.5.2008 16:59:45

Ahoj vsem!

Mam MDI aplikaci, kde na vetsine MDI child formularu mam polozeny TFrxReport
+ nejake TFrxBDDatasety napojene na datasety formulare. Jednotlive TFrx* se
na ruznych formularich mohou jmenovat stejne. Sestavy mam ulozene v
souborech, pred tiskem nactu sestavu a zobrazim preview, nebo poslu na
tiskarnu.

Uplne nahodou jsem zjistil, ze nekdy (ne vzdy), kdyz je otevreno vice MDI
formularu, pouzije FR pro tisk zvesela FrxDBDataset z jineho formulare,
tzn. z jinymi daty, nez uzivatel vidi na formulari, ze ktereho tiskne. Staci
ty ostatni formulare zavrit a vse je OK.

Zatim jsem nemel cas patrat, cim to je, jak FR hleda data pro sestavy.
Kazdopadne bych cekal, ze zacne na formulari, ktery je vlastnikem pouziteho
FrxReport.

Resil jste nekdo podobny problem, jak?

Martin

DeleteSql v IBUpdateSQL

[*] fremensTech <fremenstech(zv)gmail(tec)com> - 12.5.2008 00:27:58

A jde z modifySql (komponenta IBUpdateSQL) zavolat ulozena procedura?
Zobrazuju 2 tabulky

SELECT e.id , e.first_name, av.tick
FROM aviable av RIGHT JOIN employees e ON e.id=av.id

pricemz kdyz v te druhe neni primarni klic, tak to zobrazi prazdnou
kolonku (bude nahrazena checkboxem). A z modifySql jsem chtel zavolat
ulozenou proceduru, ktera by ten klic vytvorila nebo editovala kdyby
existoval. Nebo se to resi jinak?

OFF-TOPIC

[*] Pavel Simek <sw68(zv)seznam(tec)cz> - 12.5.2008 07:52:29

Zdravim delphisty.

Poptavam pomoc pri tvorbe ci primo tvorbu aplikace pro komunikaci s modulem
Quido 60-3 ethernet, viz
:(http://www.papouch.com/shop/scripts/_detail.asp?katcislo=0244)

Dalsi na soukromem mailu : kejchal(zv)volny(tec)cz

Diky
Pavel



3091 (20080512)

DWord - Byte

[*] Locke10 <locke10(zv)seznam(tec)cz> - 12.5.2008 14:48:17

Dobry den, resim takovy problem.
Mam cislo typu DWord. Ten ma velikost 32 bitu (4 Byty). Jak mam z neho
dostat jednotlive bajty (4) ?
Diky za odpoved.

Michal Kos


DWord - Byte

[*] Karel Rys <delphi(zv)zas-me(tec)cz> - 12.5.2008 15:06:19

Locke10 dne 12 May 2008 v 14:48:

> Dobry den, resim takovy problem.
> Mam cislo typu DWord. Ten ma velikost 32 bitu (4 Byty). Jak mam z neho
> dostat jednotlive bajty (4) ? Diky za odpoved.

Co treba

x and $FF
(x shr 8) and $FF
(x shr 16) and $FF
(x shr 24) and $FF


Karel Rys

DWord - Byte

[*] delphin(zv)post(tec)cz - 12.5.2008 15:10:19

> Dobry den, resim takovy problem.
> Mam cislo typu DWord. Ten ma velikost 32 bitu (4 Byty). Jak mam z neho
> dostat jednotlive bajty (4) ?
> Diky za odpoved.

Moznosti je asi 5, namatkove jedna z nich:

Byte(value)
Byte(value shr 8)
Byte(value shr 16)
Byte(value shr 24)

Zmena poradi sloupcu DBGrid a ulozeni

[*] Tomas Krejzek <tomas.krejzek(zv)email(tec)cz> - 12.5.2008 15:32:23

Jj to je hezke, ale problemem je ze takto mam i StringGridy a tak to mam radeji jednotne.

Tom

Jan Sebelik napsal(a):
>> vysledny retezec vypada cca takto:
>> "T56|Y123|G83|J78"
>> Pak si vzdy vykousnu retezec po nejblizsi znak |
>> a z 1. znaku zjistim sloupec a ze zbytku udelam s.ToIntDef(80);
>
> Tip:
> var L: TStringList
> Podivej se na L.CommaText.
>
> Pak bys nemusel nic "vykousavat", jednotlive hodnoty bys dostal treba jako
> L.Values[FieldName] nebo L[index],
> pekne for i:= 0 to L.Count-1 do ...
>
> Honza
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW
> = www.haes(tec)cz
> = Vojtiskova 321
> = 507 81 Lazne Belohrad
> ====================================
>
>
>
> ======================================================================
KP-SYS mail server
http://www.kpsys(tec)cz
+420 466 655 055
======================================================================

DWord - Byte

[*] Milan Tomes <delphi(zv)haida(tec)cz> - 13.5.2008 07:49:41

type
TDWordBytes = record
case byte of
1: (Value: DWORD;)
2: (Byte0: byte;
Byte1: byte;
Byte2: byte;
Byte3: byte;)

S pozdravem

Milan Tomes


delphin(zv)post(tec)cz napsal(a):
>> Dobry den, resim takovy problem.
>> Mam cislo typu DWord. Ten ma velikost 32 bitu (4 Byty). Jak mam z neho
>> dostat jednotlive bajty (4) ?
>> Diky za odpoved.
>>

Klavesnice USB

[*] Jan Novak <delfin4(zv)volny(tec)cz> - 12.5.2008 18:34:39

Krome bezne klavesnice je k pocitaci pripojena i dalsi pres USB
rozhrani. No potreboval bych, aby ji wokna nebrala jako standardni
vstup, ale abych z ni cetl jen z moji Delphi aplikace. Je nejaka
moznost?

CD/DVD

[*] Locke10 <locke10(zv)seznam(tec)cz> - 13.5.2008 10:37:56

Dobry den.

Mam takovy problem.
Mam bezici aplikaci. Je minimalizovana v systemtray. Vlozim do mechaniky
CD nebo DVD (muze byt i vice mechanik v jednom PC, napr. 1xDVD, 1xCD).
Jakmile zavru dvirka chci , aby moje aplikace zjistila, ze je v
mechanice vlozem disk a oznamila mi, ze byl tento vlozen. Nevite nekdo
jak na to? Nejaky napad?
Dekuji za odpoved.
Michal Kos.

>
>
>

DBGrid s pretahovanim sloupcu a vlastni obsluhou O

[*] Cabak Pavel <delphikonf(zv)cross(tec)cz> - 13.5.2008 16:58:28

Ahoj.



Neresil nekdo vlastni kresleni do TDBGridu, ktery ma povolenou zmenu poradi sloupcu?



Na formulari mam TDBGrid s moznostmi zmeny sirky sloupcu i pretahovani (zmeny poradi) sloupcu. Data jsou tridena podle vybraneho sloupce a v hlavicce tohoto sloupce vykresluju sipku nahoru nebo dolu. Pokud odchytim udalost OnDrawColumnCell a provedu vykresleni sipky, pak se mi pri pretahovani sloupcu nezobrazuje takova ta cerna tlustsi cara ukazujici, kam se sloupec po uvolneni mysi presune. Zadna zmena nenastane ani pri zavolani DefaultDrawColumnCell. V napovede (pro DefaultDrawColumnCell) je napsano, ze lze vyuzit promennou State: TDBGridDrawState, ktera by pro bunku hlavicky sloupce mela obsahovat hodnotu gdFixed. Kdyz tuto podminku dam do kodu, tak neni nikdy splnena.



Diky za rekace,



Pavel Cabak

cabak(zv)cross(tec)cz <mailto:cabak(zv)cross(tec)cz>



CG Delphi 2007 Win32



CD/DVD

[*] Ivan Dulgerov <idulgerov(zv)stonline.sk> - 13.5.2008 17:34:31

Zdravim

> Mam bezici aplikaci. Je minimalizovana v systemtray. Vlozim do mechaniky
> CD nebo DVD (muze byt i vice mechanik v jednom PC, napr. 1xDVD, 1xCD).
> Jakmile zavru dvirka chci , aby moje aplikace zjistila, ze je v
> mechanice vlozem disk a oznamila mi, ze byl tento vlozen. Nevite nekdo
*Skus odchytit hlasku Windows.
*Napr. skus si vo formulari v sekcii Private zadeklarovat proceduru:
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;

*A samotna procedura:

procedure TMainForm.WMDeviceChange(var Msg: TMessage);
const
CD_IN = $8000;
CD_OUT = $8004;
begin
inherited;
case Msg.wParam of
CD_OUT : ShowMessage('cd je vonku');
CD_IN : ShowMessage('cd je vnutri');
end;
end;

S pozdravom
Ivan Dulgerov
VS 2008 Prof, Delphi5 Prof+ SP1, Delphi 4 St, Win XP Porf. + SP1, Win98 SE
mail : idulgerov(zv)stonline.sk
ICQ : 190698607


Delphi 2007 a vystupni parametry procedury z MySQL

[*] Cabak Pavel <delphikonf(zv)cross(tec)cz> - 13.5.2008 17:06:29

Ahojte.



Nedari se mi v Delphi 2007 ziskat hodnoty vystupnich parametru ulozene procedury z MySQL (5.0.45-community-nt). I kdyz telo procedury obsahuje pouze prirazeni fixnich hodnot temto vystupnim parametrum, tak mi to v Delphi haze chybu "Invalid parameter". Pouzivam komponenty DBExpres.



Nemate nekdo nejaky priklad, bohuzel jsem nic nenasel ani na internetu.



Diky za pomoc,



Pavel Cabak

cabak(zv)cross(tec)cz



120 dpi

[*] Vaclav Sazima <vaclav.sazima(zv)utilia(tec)cz> - 13.5.2008 18:56:39

Ahoj,
da se nejak zjistit, ze ma uzivatel zapnuta v nastaveni obrazovky velka
pismena (120 dpi)? Brrr...

Dik za radu

Vaclav Sazima

120 dpi

[*] Petr Berek <sojokl(zv)seznam(tec)cz> - 13.5.2008 19:04:40

Ahoj,
Screen.PixelsPerInch;
Petr

2008/5/13 Vaclav Sazima <vaclav.sazima(zv)utilia(tec)cz>:

> Ahoj,
> da se nejak zjistit, ze ma uzivatel zapnuta v nastaveni obrazovky velka
> pismena (120 dpi)? Brrr...
>
> Dik za radu
>
> Vaclav Sazima

120 dpi

[*] Pavel Malinsky <malinsky(zv)pmcom(tec)cz> - 13.5.2008 19:10:40

> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Vaclav Sazima


> Ahoj,
> da se nejak zjistit, ze ma uzivatel zapnuta v nastaveni
> obrazovky velka
> pismena (120 dpi)? Brrr...

Ahoj,

CurrDPI:= Screen.PixelsPerInch;

PMal


120 dpi

[*] Petr Langer <p.langer(zv)nexnet(tec)cz> - 13.5.2008 19:22:41

Ahoj,
ostatni uz poradili, ja bych jeste doporucil obecne se podivat do MSDN
na API GetDeviceCaps, ktery nabizi hodne uzitecnych informaci o danem
zarizeni (napr. obrazovce) a ktery na to ten Screen.PixelsPerInch tak
jako tak pouziva ( GetDeviceCaps(DC, LOGPIXELSY); )

HTH,
Petr Langer

Vaclav Sazima wrote:
> da se nejak zjistit, ze ma uzivatel zapnuta v nastaveni obrazovky velka
> pismena (120 dpi)?
>
> Vaclav Sazima

MySQL timestamp

[*] Petr Mathon <dveste zar(zv)quick(tec)cz> - 13.5.2008 20:52:48

Ahoj

Trosku mi unika Timestamp u MySql, pokud ho pouziji s nul, tak pri vytvoreni bude vlozeno aktualni datum a cas. Toto bude prepsano i s jakoukoliv operaci se zaznamem - update - coy nepotrebuji? Zatim ho vkladam pomoci aplikace pri insert do datetime.

PM


Konverze z unixu do dosu

[*] Macko Martin <martin.macko(zv)m-pro(tec)cz> - 14.5.2008 16:56:30


> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz
> [mailto:delphi-l-owner(zv)clexpert(tec)cz] On Behalf Of Petr Zahradnik
> Puvodni zprava ze dne 14.5.2008 od MaReK Penguin Olsavsky:
>
> > prevod souboru z Un*xu do DOSu
>
> > radek zustaly Un*xove.
>
> To je co jako to slovo s hvezdickou?
>
> Petr Zahradnik, pocitacovy expert
>

asi mu klavesnice misto maleho iiiiiiii pise hvezdicky
a nebo to myslel spis jako *nixove

8-)

M.M.

Konverze z unixu do dosu

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 14.5.2008 16:20:27

Puvodni zprava ze dne 14.5.2008 od MaReK Penguin Olsavsky:

> prevod souboru z Un*xu do DOSu

> radek zustaly Un*xove.

To je co jako to slovo s hvezdickou?

Petr Zahradnik, pocitacovy expert

==========================================================
Petr Zahradnik, Computer Laboratory


web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz

==========================================================


Konverze z unixu do dosu

[*] MaReK Penguin Olsavsky <orsm(zv)centrum(tec)cz> - 14.5.2008 15:54:24

Zdravim,
obracim se s malou prosbickou, potrebuji napsat programek, s GUI, pro
prevod souboru z Un*xu do DOSu, kodovani dostavame spravne, ale konce
radek zustaly Un*xove. Chtel jsem si napsat stupidni programek, ktery
staci jen spustit, vybrat soubor a (naprosto primitivne) nacist radky a
ulozit je do druheho. Bohuzel, kdyz jsem mel vstupni soubor vetsi, nez
1MB, dostal jsem na vystup prave ten 1MB.
Test 2 pres TFileStream (ted jsem je v Delphi potreboval poprve v
zivote) nevedl k cili:

inStream := TFileStream.Create(infile,fmOpenRead);
outStream := TFileStream.Create(outFile,fmCreate);
while(inStream.Read(inText,1)>0) do begin
if((inText^ <> #13) and (inText^ <> #10)) then begin
outStream.Write(inText,1);
end else begin
radek := #10#13;
outStream.Write(PChar(radek)^,Length(radek));
end;
end;
inStream.Free;
outStream.Free;

Zde zakopavam o to, ze "l" (male L) se mi rozlomi na 2 odradkovani a
teda opravdu nevim, proc.
Mate nejaky hint? Na net se z pocitace, kde je potreba delat konverze
nedostaneme (to bych to udelal na domacim BSD serveru), instalovat na PC
nesmime (takze jen spustitelna app) a sefstvo na to chce GUI.

Dekuji moc
-- MaReK Olsavsky
- --
MaReK "Penguin" Olsavsky
PHP Voodoo
private mail: orsm(zv)centrum(tec)cz
private web: http://blog.devlabs.biz
Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

dbExpress Error: Unknown Error Code '65535'.

[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 14.5.2008 14:54:19

Ahoj vsem,
zkusil jsem upgrade FB z 2.0 na 2.1 a aplikace mi u nekterych formularu s
kombinaci SQLDataSet -> DatasetProvider -> ClientDataSet (s lookup fieldy na
SimpleDataSety) zacala pri otevreni ClientDatasetu hazet hlasku dbExpress
Error: Unknown Error Code '65535'.

Nedari se mi vystopovat cim se lisi formulare, kde se to deje od tech co
jsou OK.
A nastava to jen v runtime, v designtime je vse v pohode.

Kdyz pokusne pouziji fbclient.dll z FB 2.0, tak to nedela, ale to samozrejme
neni reseni.

Nemel by nekdo nejaky tip, jak z toho ven?

Dik moc. PF.

D7E, CLX, DBExpress, WinXPProf, FB 2.1.0.17798


Konverze z unixu do dosu

[*] Dalibor Toman <dtoman(zv)fortech(tec)cz> - 14.5.2008 17:08:31

On Wednesday, May 14, 2008 4:20 PM ,
Petr Zahradnik <clexpert(zv)clexpert(tec)cz> wrote:

> Puvodni zprava ze dne 14.5.2008 od MaReK Penguin Olsavsky:
>
>> prevod souboru z Un*xu do DOSu
>
>> radek zustaly Un*xove.
>
> To je co jako to slovo s hvezdickou?

sice to sem nepatri a kazdy jiny by dostal od ADMINa vycineno - ale
kdyz s tim zacal sam - co takhle 3 vteriny s googlem?

http://cs.wikipedia.org/wiki/UN*X


D. Toman

Konverze z unixu do dosu

[*] MaReK Penguin Olsavsky <orsm(zv)centrum(tec)cz> - 14.5.2008 17:08:31

Macko Martin napsal(a):
> asi mu klavesnice misto maleho iiiiiiii pise hvezdicky
> a nebo to myslel spis jako *nixove
^^^Ano, je to tento zvyk, nicmene se stejnou frekvenci vidam obe verze
*nix a un*x. Fakt se moc omlouvam a pritom jsem nedavno nekde na
anglickem serveru cetl obsahly rozbor, ze nazev unix je spravne po
system splnujici Posix a dalsi standardy (z tohoto hlediska jsou i
nasledovnici WinNT unixem, ale u *BSD je to uz docela sporne).

-- MaReK
- --
MaReK "Penguin" Olsavsky
PHP Voodoo
private mail: orsm(zv)centrum(tec)cz
private web: http://blog.devlabs.biz
Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

Konverze z unixu do dosu

[*] dino(zv)atrey.karlin.mff.cuni(tec)cz - 14.5.2008 17:06:31

Zdar,
to omezeni na 1MB u prvniho zpusobu je divne, jak vypada zdrojak? Druhy
pristup k cili povede, zde je procedura, ktera mi udelala, co mela, a "l"
ji nevadilo:

procedure TForm1.Button1Click(Sender: TObject);
var inText:char;
inStream,outStream:TFileStream;
radek:array[1..2] of char;
begin
inStream := TFileStream.Create(Edit1.Text,fmOpenRead);
outStream := TFileStream.Create(Edit2.Text,fmCreate);
radek[1] := #10;
radek[2] := #13;
while(inStream.Read(inText,1)>0) do begin
if((inText <> #13) and (inText <> #10)) then begin
outStream.Write(inText,1);
end else begin
outStream.Write(radek,2);
end;
end;
inStream.Free;
outStream.Free;
end;

Ovsem je to dost pomale, cist a zapisovat po jednom bytu je velka brzda,
zvazil bych nacitani a ukladani vetsich bloku dat.

Jirka Koula
> Zdravim,
> obracim se s malou prosbickou, potrebuji napsat programek, s GUI, pro
> prevod souboru z Un*xu do DOSu, kodovani dostavame spravne, ale konce
> radek zustaly Un*xove. Chtel jsem si napsat stupidni programek, ktery
> staci jen spustit, vybrat soubor a (naprosto primitivne) nacist radky a
> ulozit je do druheho. Bohuzel, kdyz jsem mel vstupni soubor vetsi, nez
> 1MB, dostal jsem na vystup prave ten 1MB.
> Test 2 pres TFileStream (ted jsem je v Delphi potreboval poprve v
> zivote) nevedl k cili:
>
> inStream := TFileStream.Create(infile,fmOpenRead);
> outStream := TFileStream.Create(outFile,fmCreate);
> while(inStream.Read(inText,1)>0) do begin
> if((inText^ <> #13) and (inText^ <> #10)) then begin
> outStream.Write(inText,1);
> end else begin
> radek := #10#13;
> outStream.Write(PChar(radek)^,Length(radek));
> end;
> end;
> inStream.Free;
> outStream.Free;
>
> Zde zakopavam o to, ze "l" (male L) se mi rozlomi na 2 odradkovani a
> teda opravdu nevim, proc.
> Mate nejaky hint? Na net se z pocitace, kde je potreba delat konverze
> nedostaneme (to bych to udelal na domacim BSD serveru), instalovat na PC
> nesmime (takze jen spustitelna app) a sefstvo na to chce GUI.
>
> Dekuji moc
> -- MaReK Olsavsky
> - --
> MaReK "Penguin" Olsavsky
> PHP Voodoo
> private mail: orsm(zv)centrum(tec)cz
> private web: http://blog.devlabs.biz
> Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
> tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)
>
>

Konverze z unixu do dosu

[*] MaReK Penguin Olsavsky <orsm(zv)centrum(tec)cz> - 14.5.2008 17:04:31

Petr Zahradnik napsal(a):
> Puvodni zprava ze dne 14.5.2008 od MaReK Penguin Olsavsky:
>
>> prevod souboru z Un*xu do DOSu
>
>> radek zustaly Un*xove.
>
> To je co jako to slovo s hvezdickou?

^^^Zvyk, jednoduche, porad nemuzu odvyknout, ze uz je Unix povoleno
pouzivat (system splnujici Posixove standardy, uz nejde o produkt jedne
konkretni firmy). Moc se omlouvam.

-- MaReK
- --
MaReK "Penguin" Olsavsky
PHP Voodoo
private mail: orsm(zv)centrum(tec)cz
private web: http://blog.devlabs.biz
Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

MySQL timestamp

[*] Jiri Matejka <matejka(zv)stemmark(tec)cz> - 14.5.2008 08:39:49

Datovy typ timestamp ma v mysql tu vlastnost, ze se vzdy pri aktualizaci
zaznamu (i pri jeho vlozeni insertem) nastavi na aktualni datum a cas. Pokud
si to potrebujes ridit sam, tak pouzij datetime.

Jirka Matejka

> Trosku mi unika Timestamp u MySql, pokud ho pouziji s nul, tak pri
> vytvoreni bude vlozeno aktualni datum a cas. Toto bude prepsano i s
> jakoukoliv operaci se zaznamem - update - coy nepotrebuji? Zatim ho
> vkladam pomoci aplikace pri insert do datetime.
>
> PM


Synchronizace databaze WM6 (EDB) a mdb

[*] Vasek Zaruba <zaruba(zv)elastoform(tec)cz> - 14.5.2008 22:11:02

Bezchybneho kodu preji vsem,
Pustil jsem se do projektu, ktery ma za ukol porizovat data na PDA a ty pak
dal zpracovavat v PC.
Priznam se, ze platforma wm6 je pro mne pole neorane, tim spise C++, ale
nejak uz jsem spachal
prvni nastrel porizovaci APP. Tabulky mam ulozene v souboru *.EDB a nini
jsem se zasekl jak je
prenest do databaze delfinu blizke, idealne accessovske mdb.
Moc prosim o nasledujici:
1. Lze se nejak napojit na soubor *.edb?
2. Existuje nejaka knihovna pracujici s *.edb?
3. (trochu OFT) neresil jste nekdo tento ukol?

Diky
Vasek 8^)
zaruba(zv)elastoform(tec)cz
D7pro / 2007 XP (wm6 - Visual Studio 2008)

Konverze z unixu do dosu

[*] MaReK Penguin Olsavsky <orsm(zv)centrum(tec)cz> - 15.5.2008 07:21:45

dino(zv)atrey.karlin.mff.cuni(tec)cz napsal(a):
> Zdar,
> to omezeni na 1MB u prvniho zpusobu je divne, jak vypada zdrojak? Druhy
> pristup k cili povede, zde je procedura, ktera mi udelala, co mela, a "l"
> ji nevadilo:

klasicky to bylo:
while(not eof(inFile)) begin
readln(inFile, radek);
writeln(outFile, radek);
end;

A opravdu to vzdy skoncilo po 1 MB, take je mi to divne.

>
> Ovsem je to dost pomale, cist a zapisovat po jednom bytu je velka brzda,
> zvazil bych nacitani a ukladani vetsich bloku dat.

^^^Diky, takze koukam, ze pointery a praci s nimi zapominam, co jsem byl
premigrovan na C#.NET a Javu (krome toho, ze dost scriptim v
podivnostech PHP, Python a BASH).
Rychlost dulezita az tak neni. Kdyby radky mely stejnou delku, je to
snadnejsi, ale replacovat #10 za #10#13 nekde v delsim retezci by myslim
byl vetsi opruz :-).

-- MaReK
- --
MaReK "Penguin" Olsavsky
PHP Voodoo
private mail: orsm(zv)centrum(tec)cz
private web: http://blog.devlabs.biz
Jabber: Penguin_007(zv)jabber(tec)cz; MSN: orsm(zv)centrum(tec)cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

Konverze z unixu do dosu

[*] Jaroslav Pivonka <jpivonka(zv)centrum(tec)cz> - 15.5.2008 08:47:51

"MaReK Penguin Olsavsky" orsm(zv)centrum(tec)cz: Thursday, May 15, 2008 7:21 AM
> ^^^Diky, takze koukam, ze pointery a praci s nimi zapominam, co jsem byl
> premigrovan na C#.NET a Javu (krome toho, ze dost scriptim v
> podivnostech PHP, Python a BASH).
> Rychlost dulezita az tak neni. Kdyby radky mely stejnou delku, je to
> snadnejsi, ale replacovat #10 za #10#13 nekde v delsim retezci by myslim
> byl vetsi opruz :-).
>
> -- MaReK

A co takhle SysUtils.AdjustLineBreaks ?

Jarda

Konverze z unixu do dosu

[*] Roman L. <lunacek(zv)centrum(tec)cz> - 15.5.2008 09:19:58


Petre, ty si vazne trochu mamlas, vid? :)

RL

______________________________________________________________
> Od: clexpert(zv)clexpert(tec)cz
> Komu: delphi-l(zv)clexpert(tec)cz
> Datum: 14.05.2008 16:27
> Predmet: Re: Konverze z unixu do dosu
>
>Puvodni zprava ze dne 14.5.2008 od MaReK Penguin Olsavsky:
>
>> prevod souboru z Un*xu do DOSu
>
>> radek zustaly Un*xove.
>
>To je co jako to slovo s hvezdickou?
>
>Petr Zahradnik, pocitacovy expert
>
>==========================================================
>Petr Zahradnik, Computer Laboratory
>
>
>web: http://www.clexpert(tec)cz, e-mail: clexpert(zv)clexpert(tec)cz
>
>==========================================================

pobuzeni monitoru

[*] Pavel Simek <sw68(zv)seznam(tec)cz> - 15.5.2008 09:46:02

Zdravim vsechny..

Bojuji s programovym probuzenim monitoru. Mam na WinXP nastaven sporic na
treba 3 min. a dale mam v Napajeni obrazovky nastavenu moznost vypnout
monitor po dalsich 3 min.

At delam co delam, nedokazi monitor po vypnuti sporicem z programu zase
"nahodit".

Poradite nekdo jak na to?

Pavel



3100 (20080514)

dbExpress Error: Unknown Error Code '65535'.

[*] Pavel Fiser <fiserpavel(zv)gmail(tec)com> - 15.5.2008 09:36:01

Takze si odpovim sam, kdyby to nekdo potreboval:

Uvnitr dbexpint.dll pada dotaz na zjistovani informaci o indexech ze
syst.tabulek pri vyuziti DB indexu (v pripade pouziti SQL dotazu nad
jedinou tabulkou).
Takze jedinym resenim asi je mu vnutit, aby ty DB indexy nikdy
nepouzil a zaridil se stejne jakoby se jednalo o dotaz nad SP nebo
vice tabulkami:

SQLExpr.pas:
...
procedure TCustomSQLDataSet.AddIndexDefs(SourceDS: TCustomSQLDataSet;
IndexName: string = '');

function DontUseIndex: Boolean;
begin
//vypnuto pouziti indexu z DB vzdy - u FB2.1 to padalo pri
zjistovani informaci o indexech
Result := true;
exit;

Result := CommandType in [ctQuery, ctStoredProc];
if Result and (CommandType = ctQuery) then
Result := IsMultiTableQuery(CommandText);
if Result then FIndexDefsLoaded := True;
end;

const
IDX_NAME_FIELD = 'INDEX_NAME'; { Do not localize }
IDX_FLD_FIELD = 'COLUMN_NAME'; { Do not localize }
IDX_TYPE_FIELD = 'INDEX_TYPE'; { Do not localize }
IDX_SORT_FIELD = 'SORT_ORDER'; { Do not localize }
DescendingOrder = 'D'; { Do not localize }
var
DataSet: TCustomSQLDataSet;
TableName, IdxName, SortOrder, FieldNames: string;
IdxType: Integer;
Options: TIndexOptions;
IdxDef: TIndexDef;
begin
if FNoMetadata then FIndexDefsLoaded := True;
if not FGetMetadata then FIndexDefsLoaded := True;
if FIndexDefsLoaded then Exit;
if SchemaInfo.FType <> stNoSchema then Exit;
if DontUseIndex then Exit;
if FCommandType = ctTable then
TableName := FCommandText
else
TableName := GetTableNameFromSQL(CommandText);
...

Vypada to, ze to funguje bez dalsich vedlejsich efektu.
PF.

> aplikace mi u nekterych formularu s
> kombinaci SQLDataSet -> DatasetProvider -> ClientDataSet (s lookup fieldy na
> SimpleDataSety) zacala pri otevreni ClientDatasetu hazet hlasku dbExpress
> Error: Unknown Error Code '65535'.

Synchronizace databaze WM6 (EDB) a mdb

[*] Vaclav Halik <spravasd(zv)suz.cvut(tec)cz> - 15.5.2008 11:06:08

Na Netu pak toto:
http://blog.vyvojar(tec)cz/rene/archive/2004/09/12/1712.aspx

Vaclav Halik

Synchronizace databaze WM6 (EDB) a mdb

[*] Vaclav Halik <spravasd(zv)suz.cvut(tec)cz> - 15.5.2008 11:00:07

Zdravim,
je to dost OT, ale takto: C++ bych opravdu nepouzil. Zda se mi to zbytecne
komplikovane. Lepsi varianta je CF + C# a synchronizace SQL Server na PC a
SQL server na PDA pres ActiveSync. Predpokladam ze na PC budes pouzivat
apku v Delphi, pokud ti nevady MSSQL pak je to asi nejjednodusi cesta.

Mohlo by ti pomoct toto:
http://knihy.abz(tec)cz/prodej/programujeme-mobilni-aplikace-ve-visual-studiu-net

Je to tam v ukazce cele popsane. Da se jeste koupit ve vyprodejich.

Vaclav Halik


Vasek Zaruba napsal(a):
> Bezchybneho kodu preji vsem,
> Pustil jsem se do projektu, ktery ma za ukol porizovat data na PDA a ty pak
> dal zpracovavat v PC.
> Priznam se, ze platforma wm6 je pro mne pole neorane, tim spise C++, ale
> nejak uz jsem spachal
> prvni nastrel porizovaci APP. Tabulky mam ulozene v souboru *.EDB a nini
> jsem se zasekl jak je
> prenest do databaze delfinu blizke, idealne accessovske mdb.
> Moc prosim o nasledujici:
> 1. Lze se nejak napojit na soubor *.edb?
> 2. Existuje nejaka knihovna pracujici s *.edb?
> 3. (trochu OFT) neresil jste nekdo tento ukol?

pobuzeni monitoru

[*] Venca Zaruba <zaruba(zv)elastoform(tec)cz> - 15.5.2008 11:24:09

SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,-1);
Usne
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,2);

Bojuji s programovym probuzenim monitoru. Mam na WinXP nastaven sporic na
treba 3 min. a dale mam v Napajeni obrazovky nastavenu moznost vypnout
monitor po dalsich 3 min.

At delam co delam, nedokazi monitor po vypnuti sporicem z programu zase
"nahodit".

Poradite nekdo jak na to?

Pavel



3100 (20080514)

pobuzeni monitoru

[*] Pavel Simek <sw68(zv)seznam(tec)cz> - 15.5.2008 13:04:17

Ano, uspani :
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,2);

Ale probuzeni :
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,-1);
mi nefunguje.
Resp. pokud uspim monitor treba tlacitkem s
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,2);

Tak jej probudim tou -1.

Ale pokud mi monitor usne diky nastaveni "Napajeni" na karte "Sporic
obrazovky", tak jej neprobudim tou -1.

P.


3100 (20080514)

pobuzeni monitoru

[*] Petr Berek <sojokl(zv)seznam(tec)cz> - 15.5.2008 13:28:18

>
> Ale pokud mi monitor usne diky nastaveni "Napajeni" na karte "Sporic
> obrazovky", tak jej neprobudim tou -1.


Jen me tak napadlo, jestli ho nemuze probudit ten, kdo ho uspal. I kdyz je
to asi blbost.
Petr

pobuzeni monitoru

[*] Venca Zaruba <zaruba(zv)elastoform(tec)cz> - 15.5.2008 13:26:18

Tak ho timerem uspavej sam...


Ano, uspani :
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,2);

Ale probuzeni :
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,-1);
mi nefunguje.
Resp. pokud uspim monitor treba tlacitkem s
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,2);

Tak jej probudim tou -1.

pobuzeni monitoru

[*] Simek Pavel <p.simek(zv)svscr(tec)cz> - 15.5.2008 13:36:19

To by asi logiku melo.. ale co s tim?

> -----Original Message-----
> From: delphi-l-owner(zv)clexpert(tec)cz [mailto:delphi-l-owner(zv)clexpert(tec)cz] On
> Behalf Of Petr Berek
> Sent: Thursday, May 15, 2008 1:28 PM
> To: delphi-l(zv)clexpert(tec)cz
> Subject: Re: pobuzeni monitoru
>
> >
> > Ale pokud mi monitor usne diky nastaveni "Napajeni" na karte "Sporic
> > obrazovky", tak jej neprobudim tou -1.
>
>
> Jen me tak napadlo, jestli ho nemuze probudit ten, kdo ho uspal. I kdyz je
> to asi blbost.
> Petr
>
>
>
> 3100
> (20080514) __________
>
>
>
>



3100 (20080514)
__________



TAction

[*] Emil Dorner <emildor(zv)seznam(tec)cz> - 15.5.2008 13:40:20

Poradite mi nekdo, jak pridat a odebrat polozky z komponenty TActionList za
behu programu?

Jedna se mi priblizne o toto:



1. Vymazat vsechny Items z TActionList

2. For I := 0 to x do

Item := ?;

Item.Name := ,Name' + IntToStr(I);

Item.onExecute := ItemExecute;



Dekuji moc

Vista 64bit

[*] Jan Novak <delfin4(zv)volny(tec)cz> - 16.5.2008 07:01:42

> Predpokladam, ze tam Win32 aplikace funguji.

Vetsinou funguji, ale priprav se na nejake drobnosti. Treba pokud si
sam malujes ouska TabControlu, tak na to zapomen, na Vista64zustanou
bez popisek.

Anebo pokud si pocitas, jak velky mas udelat TMemo, aby v nem nemusely
byt scrollbary a mas povolene zalamovani, tak budes muset sirku o 1
zvetsit, protoze Vista64 by zacala jinak zalamovat, cim se konec textu
nezobrazi.

Doufam, ze se i ostatni sveri se svymi zkusenostmi.

ADO a zpracovani chyb z SQL serveru...

[*] lelicek(zv)volny(tec)cz - 16.5.2008 16:52:34

Ahoj,
SQL server rozlisuje zavaznost chyby,
pro chyby s nizkou zavaznosti neni ukonceno zpracovani procedury a ta
pokracuje dal. Nasledujici prikaz je OK a tak neni vracena chyba.


Od MSSQL2005 je vestavena obsluha chyb.
Doporucuji ji vrele vyuzivat.
Doplnit si dalsi parametry:
1. cislo chyby
2. chybove hlaseni
jako OUTPUT parametry a ty zpracovavat.

Jinak je mozno pouzit jeste "STARY" zpusob, po kazdem prikazu
se zeptat na hodnotu promenne (zv)(zv)ERROR, 0 - OK > 0 chyba.

Pozor na chyby s vysokou zavaznosti (neexistujici tabulka, sloupec)
procedura je ihned ukoncena a nedojde ke vraceni parametru ani transakci
!
(nestoval jsem na 2005, ale myslim, ze toto chovani pretrvava).

Jinak vsechna chybova hlaseni jsou schovana v kolekci, ale neprisel jsem
na zpusob jak vyloucit ta obslouzena v T-SQL.

Mimo:
Vytvareni tabulek s ## v procedure neprinasi zadny uzitek, docasne tabulky
neprezivaji COMMIT (ROLLBACK) transakce.

Pavel


> create procedure Kocour75
> as
>
> if object_id('tempdb..##A') is not null drop table
> ##A
>
> create table ##A (
> A varchar(5),
> B money
> )
>
> insert into ##A (A, B) select '1', 1
> insert into ##A (A, B) select cast(123 as money), '1'
> go
>
>
> Z klienta (pouzivam TADOStoredProc) zavolam tuto proceduru
> a jako vystup
> bych ocekaval chybove hlaseni na klientovi, protoze
> druhy insert vyhodi na
> SQL chybu. Ale ouha. Ono ne!
>
> Kdyz ale v procedure zakomentuji prvni insert, pak
> se mi na klientovi
> chybova hlaska z SQL serveru objevi.
>
> Nevite nekdo, proc to takhle funguje a proc se na klienta
> nedostanou vsechny
> chybove hlasky z SQL serveru.
> __________ Informace od ESET NOD32 Antivirus, verze
> databaze 3104 (20080516)
> __________
>
> .
>
>
>
>
>
>

FB domain

[*] Marek Dostal <konf(zv)agnis(tec)cz> - 16.5.2008 14:44:23

> ale aj tak.. tazko sa tu argumentuje
> nejakou vyhodou v prospech FB..

Pouzivame FB jiz nekolik roku a jako hlavni vyhody bych videl: stabilitu a
spolehlivost, vykon a rychlost zpracovani, jednoduchost udrzby, instalace i
nastaveni, neplati se za licence.

Marek Dostal
D7Prof, WinXP, FireBird 1.5, 2.0

ADO a zpracovani chyb z SQL serveru...

[*] Martin Srp <martin.srp(zv)volny(tec)cz> - 16.5.2008 12:20:10

Ahoj vsichni,

narazil jsem na jeden problem, na ktery se nemohu dopatrat odpovedi.
Ale verim, ze tady mi urcite nekdo poradi.

Pouzivam D7 a MS SQL 2005.

Mam ulozenou proceduru na SQL severu napr: Kocour75


create procedure Kocour75
as

if object_id('tempdb..##A') is not null drop table ##A

create table ##A (
A varchar(5),
B money
)

insert into ##A (A, B) select '1', 1
insert into ##A (A, B) select cast(123 as money), '1'
go


Z klienta (pouzivam TADOStoredProc) zavolam tuto proceduru a jako vystup
bych ocekaval chybove hlaseni na klientovi, protoze druhy insert vyhodi na
SQL chybu. Ale ouha. Ono ne!

Kdyz ale v procedure zakomentuji prvni insert, pak se mi na klientovi
chybova hlaska z SQL serveru objevi.

Nevite nekdo, proc to takhle funguje a proc se na klienta nedostanou vsechny
chybove hlasky z SQL serveru.


Diky moc za odpovedi.
Kocour75



3104 (20080516)
__________

.

FB domain

[*] Michal Simsaj <delphinpp(zv)atlas(tec)cz> - 16.5.2008 12:06:09

Marek Dostal wrote / napisal(a):
> Dalsi argument pro pouziti svych domen je ten, ze pokud pouziji nativni
> datove typy, tak interne se v databazi pro kazde pole s nativnim typem
> vytvari interni systemova RDB domena, kdezto pri pouziti me domeny se
> nadefinuje jen jednou a opakovane se pouzije. Takze kdyz budu mit ve
> strukturach 1000 x integer, tak v systemovych RDB tabulkach bude
>
ano, o tomto viem.. ale predsa len, vyskytuje sa podobna funkcionalita
aj na inych znamejsich DB serveroch? , t.j., ze ked pouzijem 1000 x ten
isty datovy typ namiesto 1 (domain alebo uzivatelsky typ) ma to za
nasledok urcite vykonnostne problemy ?
je viem, ze toto je pravdepodobne specialita FB a suvisi to
pravdepodobne s jeho architekturou, ale aj tak.. tazko sa tu argumentuje
nejakou vyhodou v prospech FB..

M. Simsaj

FB domain

[*] Marek Dostal <konf(zv)agnis(tec)cz> - 16.5.2008 11:32:06

Dalsi argument pro pouziti svych domen je ten, ze pokud pouziji nativni
datove typy, tak interne se v databazi pro kazde pole s nativnim typem
vytvari interni systemova RDB domena, kdezto pri pouziti me domeny se
nadefinuje jen jednou a opakovane se pouzije. Takze kdyz budu mit ve
strukturach 1000 x integer, tak v systemovych RDB tabulkach bude
vygenerovano 1000 internich domen, kdezto kdyz si vytvorim sbou domenu napr.
MUJINT a ve strukturach budu mit pouze tuto domenu, tak tam bude jen jednou.
Fungovat budou obe varianty, ale varianta s vlasni domenou vyrazne mene
zatizi rezii databaze, projevi se to na velikosti databaze i na rychlosti
(vlastni zkusenost).

> Nativni datove typy se samozrejme mohou pouzit. Pro me je hlavni
> vyhoda v tom, ze kdyz si jednou vymyslim, ze mnozstvi zbozi dMnozstvi
> je napr. numeric(14,4), tak je potom pro me pohodlnejsi takove policko
> vytvaret, protoze nemusim nosit v hlave, na kolik mist jsem se kdysi
> davno rozhodl mnozstvi sledovat.

Marek Dostal
D7Prof, WinXP, FireBird 1.5, 2.0


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