Autor Téma: Jak toto rozjet?  (Přečteno 646 krát)

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #15 kdy: 17-07-2022, 12:20:25 »
Ak máš dosť času a nervov.
Len taká pripomienka: ak nenapíšeš cestu, tak "prehľadá" kompletne všetky disky. Nemôže sa stať, že čosi vynechá. Ktovie, či to nie je Tvoj problém(?).

Ne ne, na to opravdu nervy nemám, abych si nechal skenovat všech 24 disků, nebo 36 nebo kolik jich je ani nevím.

Offline delirium

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
Re:Jak toto rozjet?
« Odpověď #16 kdy: 17-07-2022, 12:25:56 »
D7 mas?

Delphi 7 Architect
Delphi 7 Enterprise
Delphi 7 Professional
Delphi 7 Personal

m.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #17 kdy: 17-07-2022, 12:28:42 »
D7 mas?

Delphi 7 Architect
Delphi 7 Enterprise
Delphi 7 Professional
Delphi 7 Personal

m.

Personal. To je free verze.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6685
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Jak toto rozjet?
« Odpověď #18 kdy: 17-07-2022, 13:30:02 »
Na rozlúčku s Everything posledné poznámky ;) :
  • skenovanie diskov sa robí jediný krát
  • predtým si môžeš nastaviť čo sa nemá skenovať
  • v najhoršom prípade to necháš bežať v noci
  • potom beží na pozadí. Bez toho aby si to nejako pociťoval
  • nemám toho veľa. U mňa to skenovanie trvalo 11 minút
  • vytvára si vlastnú databázu
  • dnes som si nastavil zobrazenie počtu položiek. Mám ich vyše 3,8 mil. To ma poriadne prekvapilo
  • vždy mám okamžitú odozvu
  • najviac sa mi páči skutočnosť, že mám okamžitý výsledok zo všetkých diskov. Až dva fyzické :) . Prípadne tri, ak pripojím externý záložný
  • nemôžem na niečo zabudnúť
  • ak napíšem cestu, tak mám výsledky podľa nej
  • TC používam na hľadanie v malých adresároch. Vždy musím počkať
V minulosti sa dali pri kúpe, povýšení delphi na vyššiu verziu nainštalovať nižšie verzie. Už neviem po ktorú. Neviem či to platí, ale táto možnosť bola vždy časovo obmedzená

Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3435
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Jak toto rozjet?
« Odpověď #19 kdy: 17-07-2022, 14:21:06 »
Personal. To je free verze.
Njn, to je nejaka orezana "detska" verze tusim bez DataSetu a buhvi ceho jeste. Nejspis soucasti instalace nejsou ani zdrojovky. Ale to jsi mel uvest hned.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #20 kdy: 17-07-2022, 15:40:55 »
Personal. To je free verze.
Njn, to je nejaka orezana "detska" verze tusim bez DataSetu a buhvi ceho jeste. Nejspis soucasti instalace nejsou ani zdrojovky. Ale to jsi mel uvest hned.

Nějak jsem zapomněl, že existují ještě nějaké profi verze. Obvykle se uvádí jen základní verze D7 ... Nicméně možná jádro celého problému leží někde jinde.

Vyštrachal jsem na netu zapomenutý článek od Borlandu:

What ever happened to Proxies.pas?
Rating: Rating is 3.5 - 4.5     Ratings: 10     Rate it

    Abstract: This article illustrates a scheme for properly segregating runtime code from design-time code in Delphi. By Jeff Overcash.

One frequent question since Delphi 6 shipped has concerned the disappearance of Proxies.pas from the source.

This change is part of a larger trend.

Borland chose not to ship DsgnIntf.dcu with Delphi 5, apparently to force compliance with the Delphi and C++Builder license agreements. The design-time code had been inadvertently used at runtime by many components. In some ways Borland encouraged this behavior: If you use the new component wizard you will see that this wizard creates only one unit, putting both the component skeleton code (runtime) and the Register procedure (design-time) in the same unit.

With Delphi 6, Borland has taken the next step. Not only was DsgnIntf replaced with DesignIntf, but the property editors were also pulled out into DesignEditors, DesignMenus, DesignWindows and other design-time files. DesignEditors in particular uses another IDE file named Proxies. (The Proxies code resides in DesignIDE.bpl.) Needless to say, these changes can result in errors at compile time.

If your code is already segregated in terms of runtime versus design-time then the fix is very simple. Open up your design-time package, select the requires folder and hit the Add button. Type designide.dcp and hit OK. Recompile your package and the error should go away.

But how can this problem be fixed when design-time and runtime code has been mixed together? DesignIDE.bpl is not a redistributable package in Delphi. So even in situations where the "design-time only" package has the component's runtime code and only the component dcu is used, there can still be a problem.

...

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1087
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Jak toto rozjet?
« Odpověď #21 kdy: 17-07-2022, 16:41:18 »
Při převodu z D2/D3 je potřeba upravit původní kod, rozdělit ho na runtime a designtime části. V designtime se volá designIDE balíček kde jsou dislokovány designtime editory.
Pokud jsem to pochopil dobře, je potřeba prostě tyto úpravy v kódu udělat.
V D7 by to možná mohlo ještě fungovat, ale potřebuje to nějakou magii v projektovém souboru v sekci uses.
:)

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #22 kdy: 17-07-2022, 17:25:39 »
Při převodu z D2/D3 je potřeba upravit původní kod, rozdělit ho na runtime a designtime části. V designtime se volá designIDE balíček kde jsou dislokovány designtime editory.
Pokud jsem to pochopil dobře, je potřeba prostě tyto úpravy v kódu udělat.
V D7 by to možná mohlo ještě fungovat, ale potřebuje to nějakou magii v projektovém souboru v sekci uses.
:)

Čtu ale nerozumím. Nechápu pořádně rozdíl mezi runtime a designtime.

Např. jsem četl:
"The only place where there is a little confusion is if the property/component editor uses a form. If that form is available at runtime to the component, it belongs in the runtime package. If it is only available at design-time, it goes in the design-time package. A very common misperception is that the form itself is the editor, but it is not. It is the component editor that calls the form that is the design-time editor."

Nevím co si pod těmi pojmy (tučně) prakticky představit. Design time je to co je v .dfm? Formulář navržený v editoru? A co je pak to když se ten formulář otevře během spuštění aplikace. Např. 1) kliknu na menu otevřít soubor, 2) vyjede dialogové okno, 3) potvrdím 4) do obrázku se načte jpeg převedený TBitmap. Je to práce v runtime nebo v design time?

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1087
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Jak toto rozjet?
« Odpověď #23 kdy: 17-07-2022, 18:21:01 »
Designtime balíčk je BPL, které je nataženo do IDE (a jsou v něm formuláře, editory, registrace komponent, případně další pomocný kód, aktivní v IDE, který se ve finální aplikaci obvykle nevyskytuje). V runtime balíčku BPL je výkonný kód. Balíček se jako soubor přidává k aplikaci, která je sama přeložená s balíčky.
Toto funguje už od Delphi 3 (tam byly balíčky DPL, později přejmenované na BPL); balíček == DLL knihovna.
Aplikace přeložená s balíčky vypadá opticky menší, jelikož kód VCL a dalších podpůrných komponent je právě v DLL souborech (v těch BPL balíčcích). Prakticky je ale větší, jelikož potřebuje vlastní VCL balíčky a pak případné balíčky třetích stran.
Důvody, proč se to takto dělalo, byly různé, ale hlavní důvody byly ve své době distribuční (to se ovšem nepředpokládala nekompatibilita balíčků mezi jednotlivými verzemi a poměrně svižná obměnou Delphi co rok).
Takže shrnuto, runtime balíček je pro distribuci aplikace (přeložené s balíčky) a designtime pro běh v IDE Delphi prostředí.
Pokud se aplikace překládá bez balíčků jako monolit, tak se samozřejmě BPL soubory nedistribuují, ale i tak jsou potřebné pro správnou funkci IDE.
Snad jsem to řekl správně, když tak mě opravte... :|
« Poslední změna: 17-07-2022, 18:22:50 od JaroB »

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1087
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Jak toto rozjet?
« Odpověď #24 kdy: 17-07-2022, 18:25:34 »
1) kliknu na menu otevřít soubor, 2) vyjede dialogové okno, 3) potvrdím 4) do obrázku se načte jpeg převedený TBitmap. Je to práce v runtime nebo v design time?

Pokud je toto na nějaké property komponentě v IDE DElphi, tak je to designtime operace, jestliže je to za běhu aplikace tak runtime :)

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #25 kdy: 17-07-2022, 18:49:21 »
Aplikace přeložená s balíčky vypadá opticky menší, jelikož kód VCL a dalších podpůrných komponent je právě v DLL souborech (v těch BPL balíčcích). Prakticky je ale větší, jelikož potřebuje vlastní VCL balíčky a pak případné balíčky třetích stran.

Takže když udělám mini aplikaci, která využívá Image32 tedy GR32, tak musím k .exe souboru dodat i GR32 tedy pro Windows XP (jelikož kompiluji na Win XP). A pokud instalačku GR 32 pro Win 32 neseženu, tak to koncový uživatel vůbec nespustí? Nebo mohu zkopírovat soubory od GR32 a přidat je k aplikaci? To asi ne, to by mu nejelo, že? A blbé je, že on by musel tomu rozumět - odborně nainstalovat GR32. Jako koncový uživatel neví co potřebuje pro to, aby aplikace na ořezávání obrázku, úpravu světlosti a korekce barvy + např. algoritmus na detekci obličeje správně fungovala. A pokud bych například sehnal ty moduly DesignTime, DesignIDE nebo co všechno je třeba, zkompiloval je, tak je k tomu nejspíš nemohu přidat, protože nejspíš nejsou určeny pro samostatnou distribuci v runtime balíčku z licenčních důvodů.
Pokud je to tak složité pak proč vůbec používat externí knihovny/balíčky .bgl ... Třeba si někdo chce jen udělat vizualizaci - ekvalizér k audio přehrávači na knihovně z produkce Mitov, nebo cokoliv co potřebuje na zpracování signálu - obraz, audio, video, a narazí na problém - třeba, že aby to mohl dál distribuovat, musel by si koncový uživatel licenci koupit? Ale balíčky Mitov jsem normálně našel zdarma ke stažení, ale bez návodu a bez zdrojáku (takže asi k ničemu, protože za víc se platí).

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3435
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Jak toto rozjet?
« Odpověď #26 kdy: 17-07-2022, 18:55:57 »
Jeste to zkusim popsat jednoduse:

design-time: pracuje to ve spustenem Delphi IDE tj. v dobe, kdyz tahas komponenty z palet a v property editoru vyplnujes vlastnosti. Kdybys napsal nejakou vlastni komponentu a chtel bys umoznit nastaveni jejich parametru, musel bys k ni napsat jeji design-time editor.

run-time: to, co bezi po spusteni tvoji prelozene aplikace.

Uz si to moc nepamatuju, ale puvodne to bylo spolecne, takze jsi do run-time mohl/musel tahat veci z design-time tj. veci urcene jen do Delphi IDE. Oni to kdysi striktne rozdelili, takze se aplikace musely upravit tak, aby se run-time neodkazoval na design-time zalezitosti a naopak (to nedava ani smysl).

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1087
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Jak toto rozjet?
« Odpověď #27 kdy: 17-07-2022, 19:05:53 »
Pokud se jedná o mini aplikaci, tak je monolitická aplikace bez balíčků dobrá volba. Ale může využívat čistokrevné DLL třetích stran (třeba pro unRAR).
GR32 lze přilinkovat bez problémů, dělal jsem s ní před pár lety osciloskop (v Delphi 2007).
Pro distribuci je jednodušší jeden EXE než hafo knihoven, na to je pak už potřeba instalátor.
Balíčkovou app jsem dělal kdysi jenom jednu aplikaci s platebními moduly a to bylo hafo exe (asi 15) a změť DLL s BPL, pro pokladnu, pro terminál, pro server, CGI wraper, DB, FTP přístup... atp. atp. to už byla aplikace vetší a tam se vyplatilo distribuovat balíčky, ty se nainstalovaly jednou a už na hostitelských PC zůstaly, jen EXE se vyměňovaly pole oprav a požadavků.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6685
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Jak toto rozjet?
« Odpověď #28 kdy: 17-07-2022, 19:08:25 »
Presne tak som si to predstavoval aj ja:
design_time - tu musí byť všetko, čo potrebujem pre prácu v čase návrhu formulára
run_time - tu musí byť všetko, čo je potrebné pre správnu činnosť komponentu počas behu aplikácie
.
Nikdy som to nepotreboval a ani neriešil. Mojich pár komponentov je jednoduchých. To rozdelenie nebolo potrebné riešiť.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 422
  • Karma: 0
    • Verze Delphi: 7
Re:Jak toto rozjet?
« Odpověď #29 kdy: 17-07-2022, 19:20:57 »
Jeste to zkusim popsat jednoduse:

design-time: pracuje to ve spustenem Delphi IDE tj. v dobe, kdyz tahas komponenty z palet a v property editoru vyplnujes vlastnosti. Kdybys napsal nejakou vlastni komponentu a chtel bys umoznit nastaveni jejich parametru, musel bys k ni napsat jeji design-time editor.

No to je případ této knihovny bitview. Autor píše:
"
//=========================== *BIG* BITMAP VIEWER (Vydáno rok 97)
This component came about because I wanted to display 4000 x 4000 x 256 colour
// bitmaps (about 16MB in size).  Using a TBitmap and a TImage took ages to load
// the images as a whole load of disc-swap file activity took place."

Takže vím že je to komponenta.
Je k tomu přiložený soubor .dfm:
Kód: Delphi [Vybrat]
  1. object BitView: TBitView
  2.   Left = 249
  3.   Top = 192
  4.   Width = 544
  5.   Height = 375
  6.   Caption = 'Form1'
  7.   Color = clBtnFace
  8.   Font.Charset = DEFAULT_CHARSET
  9.   Font.Color = clWindowText
  10.   Font.Height = -11
  11.   Font.Name = 'MS Sans Serif'
  12.   Font.Style = []
  13.   OldCreateOrder = False
  14.   PixelsPerInch = 96
  15.   TextHeight = 13
  16. end
  17.  
A to je jako ten jeho vlastní editor... Ale říká se tomu komponenta. Tohle já dělám taky. Vytvářím vlastní aplikaci a formulář si navrhnu sám. Ale používá komponenty Delphi IDE. A tak teď tedy nevím jestli ta moje aplikace, když ji zkompiluji pojede samostantě bez Delphi na PC kde Delphi není.

Teď kousek z té komponenty Bitview.
Kód: Delphi [Vybrat]
  1. unit
  2.   BitView;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Classes,
  8.   Graphics, Controls, Forms, Dialogs,
  9.   DSIntf;
  10.   {
  11.   ddeReg,
  12.   dclstd,
  13.   designide,
  14.   DesignEditors}
  15.  
  16. //, DesignEditors
  17. //  RTLConsts, VCLEditors,
  18. //  DesignIntf,
  19. //   DesignEditors
  20.  
  21.   // DesignEditors
  22.   // DesignIntf
  23.   // DesignIDE
  24.   // DsgnIntf
  25.  
  26.  
  27. type
  28.   TBMPFilename = type string; // filename will have its owner property editor
  29.                               // Is this use for "type" documented anywhere?
  30. type
  31.   TBigBitmapViewer = class (TGraphicControl)
  32. ...
  33.  
Na konci je toto:
Kód: Delphi [Vybrat]
  1. // filename property editor .. fileopen dialog box
  2. type
  3.   TBMPFilenameProperty = class (TStringProperty)
  4.   public
  5.     procedure Edit; override;
  6.     function GetAttributes: TPropertyAttributes; override;
  7.   end;
  8.  
  9. procedure TBMPFilenameProperty.Edit;
  10. begin
  11.   with TOpenDialog.Create(Application) do
  12.   begin
  13.     Filename := GetValue;
  14.     Filter := 'Windows bitmaps (*.BMP)|*.BMP';
  15.     Options := Options + [ofPathMustExist, ofFileMustExist, ofHideReadOnly];
  16.     try
  17.       if Execute then
  18.         SetValue(Filename)
  19.     finally
  20.       Free
  21.     end
  22.   end
  23. end;
  24.  
  25. function TBMPFilenameProperty.GetAttributes: TPropertyAttributes;
  26. begin
  27.   Result := [paDialog, paRevertable]
  28. end;
  29.  
  30. procedure Register;
  31. begin
  32.   RegisterComponents ('My Controls', [TBigBitmapViewer]);
  33.   RegisterPropertyEditor (TypeInfo (TBMPFilename), nil, '', TBMPFilenameProperty);
  34. end;
  35.  
  36. end.
  37.  

Takže na konci je ten jeho editor a je tam registrační funkce. Tedy aby si zaregistroval ten svůj komponent.

Ale problém je, že používá TStringProperty k vytvoření toho sevého editoru ač je to jen jedno pitomé políčko a kvůli tomu to na svém D7 Personal nezkompiluji. To je ale absurdita.