Autor Téma: Logovanie postupu zálohy do mema + progressbar  (Přečteno 3033 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Logovanie postupu zálohy do mema + progressbar
« kdy: 30-08-2020, 17:53:00 »

V návode čítam:
Citace
We use the -verify option to get a detailed trace of what gbak does and -y to pass it to a log file in another directory.
Ja by som to rád zobrazil v TMemo. K tomuProgressBar, ktorý by ukazoval stav procesu v %.
  • Ako sa dá riešiť výstup do TMemo? Čítať to zo súboru, do ktorého to je, predpokladám, priebežne ukladané?
  • Moja predstava je, že hodnoty pre ProgressBar by som odvodil od počtu tabuliek v DB a prebiehajúceho výpisu

W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #1 kdy: 30-08-2020, 18:28:20 »
Já kdysi použil TIBBackupService (je součástí IBX komponent, při instalaci Delphi je to myslím volitelná součást, tak nevím, zda je tam máš). Výhodou je, že není potřeba gbak, ale myslím, že tím není možné databázi ze serveru zazálohovat na lokál (záloha vznikne opět na serveru, což v mém případě bylo dobře, uživatel nemá mít možnost získat všechna data k sobě).

IBBackup: TIBBackupService;

Kód: [Vybrat]
   with IBBackup do begin
    Active:=false;
    Srv:=Config.d.DatabaseServer;
    while (Srv<>'')and(Srv[length(Srv)]=':') do Srv:=copy(Srv,1,length(Srv)-1);
    ServerName:=Srv;
    DatabaseName:=Config.d.DatabaseName;
    Params.Clear;
    Params.Add(Format('user_name=%s', [Config.d.DatabaseUser]));
    Params.Add(Format('password=%s', [Config.d.DatabasePassword]));
    Active:=true;
    try
     Verbose:=true;
     BackupFile.Add(cil);
     ServiceStart;
     while not EOF do begin
      eVysl1.Caption:=eVysl2.Caption;
      eVysl2.Caption:=eVysl3.Caption;
      eVysl3.Caption:=GetNextLine;
      Update;
     end;
    finally
     Active:=false;
    end;
   end;

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #2 kdy: 30-08-2020, 18:41:21 »
Ako sa dá riešiť výstup do TMemo? Čítať to zo súboru, do ktorého to je, predpokladám, priebežne ukladané?
To se delava tak, ze gbak spustis z vlastni aplikace a presmerujes mu standardni vystupy. Nekde na to byvala componenta (?DosCommand)


Citace
Moja predstava je, že hodnoty pre ProgressBar by som odvodil od počtu tabuliek v DB a prebiehajúceho výpisu
A spoustel jsi tu volbu -v na nejake naplnene databazi? Rekl bych, ze ten vypis je dost vzdaleny od tvych predstav.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #3 kdy: 30-08-2020, 19:18:53 »
Na tie DB komponenty som nepozeral. Možno má niečo aj FireDAC
Citace
A spoustel jsi tu volbu -v na nejake naplnene databazi? Rekl bych, ze ten vypis je dost vzdaleny od tvych predstav.
Nemám potuchy ako vyzerá. Tak som sa pozrel čo vypisuje môj DB manažér pri vytváraní zálohy. Je to nanič. A tie % sa z toho nedajú nijako odvodiť.
Idem študovať čo mám k dispozícii.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #4 kdy: 30-08-2020, 19:24:21 »
Název tabulky se tam určitě někde vyskytne... Ale taky by sis mohl pamatovat počet řádků, které byly na výstupu minule, počítat řádky teď a progress bar ukazovat podle toho (on se ten počet nijak dramaticky nemění a pokud už progress bar ukáže 100 % a přitom ještě bude pár položek dobíhat, uživatel si nejspíš stejně nevšimne).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #5 kdy: 30-08-2020, 19:30:06 »
Tých riadkov je len 5484 :)
Našiel som tieto komponenty: viď obrázok. Sú tam samostatne pre FB. Takže to je nádejné. Ten výpis a tie % nie sú dôležité. Uvidím po preštudovaní komponentov.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #6 kdy: 30-08-2020, 19:37:56 »
Hm, vo voľbách má len NoTriggers. To IB ich má podstatne viac. Nemyslím si, že zrovna to by malo vadiť.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #7 kdy: 30-08-2020, 20:34:08 »
Podľa toho čo som čítal, tak sa to nedá použiť pre embeded verzie (bez inštalovaného DB servera). Škoda.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #8 kdy: 04-09-2020, 19:07:06 »
Čítam a čítam, nič nepíšem :D
Mám jednu otázku. Rozhodol som sa na zálohu a obnovu použiť TFDIBBackup a TFDIBRestore. Dôvodc - zodpovedajúce komponenty FB majú k dispozícii jediný parameter. Popis k nim je dosť stručný. Vychádzam z opisu parametrov gbak pre FB. Jedná sa mi o obnovu DB. Vo FB sú
  • -c[reate_database] - obnoví databázu do nového súboru
  • -r[ecreate_database] - obnoví databázu...
  • -rep[lace_database] - obnoví databázu...
Druhý a tretí parameter sú označené ako "zabijaci DB". Neodporúčajú ich používať.
TFDIBRestore má parameter roReplace. Mám existujúcu DB, ktorú chcem obnoviť. Pre obnovu použijem názov existujúcej DB. Otázky znejú:
  • Postará sa tento komponent aj o to, že ak zlyhá obnova, ta neprídem o existujúcu DB?
  • Predpokladám, že nemám použiť roReplace
Ďakujem.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #9 kdy: 05-09-2020, 10:30:02 »
Zistil som, že mám právo pozrieť sa do jednotky :o Tak to idem urobiť.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #10 kdy: 05-09-2020, 12:00:09 »
Až na to, že je FireDAC zdrojáky nemám :'( , lebo mám ver. professional. Tak znovu prosím o odpoveď.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #11 kdy: 07-09-2020, 16:27:38 »
Záloha mi ide. Obnovenie DB nie
Kód: [Vybrat]
try
  dtmdBasic.conFoc.Connected := False;
  FDIBRestore1.Restore; // '[FireDAC][Phys][FB]could not drop database D:\Dokumenty\Delphi XE7\JasotSVB\Data\
                        // JASOTSVB.FDB (database might be in use)
                       // unknown ISC error 336330835
  dtmdBasic.conFoc.Connected := True //offchbBringDBOnline.Checked;
except
end;
Určite ju nemám otvorenú v inej aplikácii. Jedine v Delphi.
Čo s tým?
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #12 kdy: 07-09-2020, 16:31:13 »
Určite ju nemám otvorenú v inej aplikácii. Jedine v Delphi.
Čo s tým?

Zavřít ji v Delphi? ;-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #13 kdy: 07-09-2020, 16:43:17 »
A dtmdBasic.conFoc.Connected := False; robí čo? Žijem v tom, že ju odpojí od DBMS.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #14 kdy: 07-09-2020, 16:45:37 »
Jo, to by mělo odpojit. Taky ta Tvoje aplikace nesmí mít otevřené spojení (tj. ani běžící aplikace, ani Delphi v designtime).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #15 kdy: 07-09-2020, 16:46:19 »
Ak som zrušil pripojenie v design time, tak to funguje. Teraz už len zistiť prečo, ako to funguje?
Edit:
Už som na to prišiel.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #16 kdy: 07-09-2020, 16:51:22 »
A dtmdBasic.conFoc.Connected := False; robí čo? Žijem v tom, že ju odpojí od DBMS.
A nezapomeň počítat s tím že pokud bude aplikace běžet v síti nebude ti používaný postup vůbec fungovat.
Kvůli těmto problémům jsem kompletně přešel na gbak.exe a neobnovuji data napřímo ale přes pracovní "Restore" databázi

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #17 kdy: 07-09-2020, 16:58:42 »
A dtmdBasic.conFoc.Connected := False; robí čo? Žijem v tom, že ju odpojí od DBMS.
A nezapomeň počítat s tím že pokud bude aplikace běžet v síti nebude ti používaný postup vůbec fungovat.
Kvůli těmto problémům jsem kompletně přešel na gbak.exe a neobnovuji data napřímo ale přes pracovní "Restore" databázi
S tým počítam. Teraz to neriešim. Aj tak nemám sieťovú verziu FireDAC.
.
Hm, z môjho pohľadu je to postavené na hlavu. Pri vývoji aplikácie potrebujem byť pripojený k DB. Pred build či spustení v design time ju musím mať odpojenú.
Vyskúšal som v kóde CheckInactive, ale nezbralo.
To sa ako dá dosiahnuť? Lebo na to na 100 % zabudnem.
.
Pri testovaní používam roReplace. Ale toto i Rewrite nazývajú zabijakom DB. Uvažujem o nasledovnom postupe:
  • Premenujem svoju DB
  • Po úspechu ju zmažem
  • Pri neúspechu zmažem novo vytvorenú DB
  • Mojem DB vrátim pôvodný názov
Je to správny postup, alebo mám na to ísť ináč? Nebudem mať niekoľko GB databázu.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #18 kdy: 07-09-2020, 17:12:56 »
S tým počítam. Teraz to neriešim. Aj tak nemám sieťovú verziu FireDAC.

IMHO - pokud se nezmění distribuční podmínky Firedac - tak sitovou verzi dost těžko aplikuješ (cena nákupu licence   s porovnáním prodejní ceny softu)
Pak je samozřejmě otázkou zda JEN lokální verze bude pro budoucí uživatele použitelná v ostrém nasazení

Citace
. Uvažujem o nasledovnom postupe:
  • Premenujem svoju DB
  • Po úspechu ju zmažem
  • Pri neúspechu zmažem novo vytvorenú DB
  • Mojem DB vrátim pôvodný názov

Když už tak možná spíše takto
  • Obnovím DB z archivu
  • Po úspechu  přejmenuji původní DB
  • Obnovené DB vrátím původní nazev

Nebo celé přehození řeším pomocí aliasu



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #19 kdy: 07-09-2020, 17:22:40 »
Citace
IMHO - pokud se nezmění distribuční podmínky Firedac - tak sitovou verzi dost těžko aplikuješ (cena nákupu licence   s porovnáním prodejní ceny softu)
Pak je samozřejmě otázkou zda JEN lokální verze bude pro budoucí uživatele použitelná v ostrém nasazení
Do úvahy to prichádza len v prípade úspechu a zájmu o sieťovú verziu. Osobne tomu veľmi neverím. Najviac ma štve, že ma nútia kúpiť si veci o ktoré vôbec nestojím. Pri XE7 som si dokúpil len povolenie sieťovej verzie. Niečo cez 600 €. Aj preto som veľmi silne váhal s prechodom na ver. 10.4.
.
Načo mi po úspechu bude pôvodná DB? Za chvíľu ich tam budem mať nasekaných na desiatky. To už poriadne uberú miesto z disku. Veď predsa mám zálohy, ktoré sú podstatne menšie.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #20 kdy: 07-09-2020, 17:30:12 »

Načo mi po úspechu bude pôvodná DB? Za chvíľu ich tam budem mať nasekaných na desiatky. To už poriadne uberú miesto z disku. .

No nejsem si moc jistý , ale nestačilo by - po úspěšném provedení celé obnovovací operace, použít DeleteFile('BackUpDB.bak')

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #21 kdy: 07-09-2020, 17:46:44 »
Jednu kópiu beriem. Viac nie.
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #22 kdy: 07-09-2020, 18:53:57 »
Jednu kópiu beriem. Viac nie.
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
Svatá pravda - já myslel že řešíme obnovu a ne zálohy  ;)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #23 kdy: 07-09-2020, 18:55:14 »
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
Zalezi na aplikaci, ale leckde, kde se jede v realnem case a vedle obsahu DB existuje nezavisle na obsahu DB realny stav to zase s libovolnou obnovou dat neni jen tak :-)

Ja jsem treba naposledy u pilotniho projektu s MSSQL pouzil batch (a uz to tam zustalo), ktery spoustim z sluzby bezici na serveru (vynatek):
Kód: Text [Vybrat]
  1. :COMPOSE_FILENAME
  2.     call _GetISO8601DateTime.bat
  3.     set DATESTAMP=%_ISODATE:~0,4%%_ISODATE:~5,2%%_ISODATE:~8,2%T%_ISODATE:~11,2%%_ISODATE:~14,2%
  4.     set BACKUPFILENAME=%BACKUPPATH%\%DATABASENAME%_%DATESTAMP%_%STATUS%.bak
  5.     set ZIPFILENAME=%BACKUPPATH%\%DATABASENAME%_%DATESTAMP%_%STATUS%.zip
  6.     echo ... going to backup to %BACKUPFILENAME%
  7.  
  8. :: Execute backup
  9.     sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
  10.     %ZIP% -add "%ZIPFILENAME%" "%BACKUPFILENAME%"
  11.     %ZIP% -test "%ZIPFILENAME%"
  12.     if errorlevel 1 goto ERR_ZIP
  13.     if exist "%ZIPFILENAME%" DEL "%BACKUPFILENAME%"
  14.  
  15.  
  16. :: In this case, we are choosing to keep the most recent 50 .bak files
  17.     echo ... purging backup folder %BACKUPPATH%
  18.     for /f "skip=50 delims=" %%F in ('dir %BACKUPPATH%\*.zip /s/b/o-d/a-d') do del "%%F"
  19.     echo Done
  20.     echo .
  21.     goto :EOF
  22.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #24 kdy: 07-09-2020, 19:00:16 »
Citace
Svatá pravda - já myslel že řešíme obnovu a ne zálohy 
Ale to máš pravdu! Teraz naozaj riešim obnovu. Alebo nerozumiem ironickej poznámke ???  Ja som sa už so sebou dohodol.
U mňa to bude na 99 % jedno užívateľská aplikácia. Jedna DB na jedinom PC a prihlásený vždy len jediný užívateľ. Tým pádom mám najjednoduchší možný prípad.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #25 kdy: 07-09-2020, 20:16:21 »
Vraciam sa k pôvodnej otázke:
  • Ako sa dá riešiť výstup do TMemo? Čítať to zo súboru, do ktorého to je, predpokladám, priebežne ukladané?
Je to vôbec možné pri komponentoch TFDIBBackup a TFDIBRestore? Nemajú totiž parametre/vlastnosť na generovanie výpisu do súboru.

W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #26 kdy: 07-09-2020, 20:23:23 »
Pre istotu tú dávam svoj výtvor
Kód: [Vybrat]
procedure TfrmRestoreDB.RestoreDB;
var
  DataDir: string;
begin
  SetParams(DataDir);
.
  try
    if dtmdBasic.conFoc.InTransaction then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'Aktívna transakcia.', 'Musíte najprv ukončiť VŠETKY transakcie.',
        Exit;
    end;
.
    dtmdBasic.conFoc.Connected := False;
    if not DoRestoreDB(DataDir) then
      Exit;
.
  // 2 Po úspechu  přejmenuji původní DB
    if not RenameFile(DataDir + 'JASOTSVB.FDB', DataDir + 'JASOTSVB.BAK') then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.FDB', 'Zlyhalo premenovanie pôvodnéhe súboru.',
        Exit;
    end;
.
  // 3 Obnovené DB vrátím původní nazev
    if not RenameFile(DataDir + 'JASOTSVB1.FDB', DataDir + 'JASOTSVB.FDB') then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.FDB', 'Zlyhalo premenovanie nového súboru.',
        Exit;
    end;
.
    dtmdBasic.conFoc.Connected := True;
  except
  end;
end;
.
function TfrmRestoreDB.DoRestoreDB(var DataDir: string): Boolean;
begin
  // 1 Obnovím DB z archivu
  if FileExists(DataDir + 'JASOTSVB1.FDB') then
  begin
    if not DeleteFile(DataDir + 'JASOTSVB1.FDB') then
    begin
      TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB1.FDB', 'Zlyhalo zmazanie záložného súboru.',
      Exit(False);
    end;
  end;
.
  if FileExists(DataDir + 'JASOTSVB.BAK') then
  begin
    if not DeleteFile(DataDir + 'JASOTSVB.BAK') then
    begin
      TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.BAK', 'Zlyhalo zmazanie záložného súboru.',
      Exit(False);
    end;
  end;
.
  fdbrstrSVB.Restore;
  Result := True;end;
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #27 kdy: 08-09-2020, 07:28:54 »
Je to vôbec možné pri komponentoch TFDIBBackup a TFDIBRestore? Nemajú totiž parametre/vlastnosť na generovanie výpisu do súboru.
http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Phys.IBBase.TFDIBService.OnProgress

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #28 kdy: 08-09-2020, 07:31:51 »
... (DataDir + 'JASOTSVB.FDB', DataDir + 'JASOTSVB.BAK') ...
No fuuuj  :-[

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #29 kdy: 08-09-2020, 12:07:21 »
Ako to mám urobiť aby to nebolo fuj? V princípe, ak to dám ako konštanty, tak sa na tom nič nezmení. Alebo?
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #30 kdy: 08-09-2020, 23:40:35 »
Ako to mám urobiť aby to nebolo fuj? V princípe, ak to dám ako konštanty, tak sa na tom nič nezmení. Alebo?

Když to dáš jako konstanty, tak to budeš alespoň mít definované na jednom místě, takže se nestane, že se rozhodneš soubor přejmenovat, ale na polovinu výskytů zapomeneš.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #31 kdy: 09-09-2020, 09:42:32 »
Ako to mám urobiť aby to nebolo fuj?
Vicecetne porusujes zlate pravidlo, ze vsechno se definuje prave jednou...

- zacina to zminenou definici symbolu misto natvrdo, opakovane uvadene konstanty
- definice symbolu by mely byt atomicke a odvozeny jeden od druheho napr. pripojenim pripony .fdb ke kmenovemu jmenu (to plyne z "prave jednou")
- invarianty: proc bys mel nekde sestavit jmeno DataDir + 'JASOTSVB.FDB' a o par radku niz ho sestavovat znovu
- co kdyby kazdy zakaznik chtel pojmenovat DB soubor jinak
- co kdyby chtel kazdy zakaznik jinak znacit zalozni soubory, jeden .bak, jiny treba .~n~, melo by se delat nejspis pres ChangeFileExt() a ne tvrdou definici.
- s tim souvisi, co kdyby chtel kazdy zakaznik zalozni soubory pojmenovavat jinak, tj. DbCoreName+Suffix, kde jeden bych chtel ciselny suffix 1..n, jiny by nechtel zadny a n presunout do pripony, treti timestamp ve formatu ISO8601
- chtel bys nechavat v adresari poslednich k zaloh
- ...

Pokud budes muset sahnout pri nektere z uvedenych zmen na vic nez jedine misto, neni to remeslne dobre napsane a vytvaris tak spatne udrzovatelny soft. A pritom vytvorit kontext tem operacim a napsat to poradne znamena jen minimalni usili se zasadnimi dopady na udrzovatelnost a reusibilitu.



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #32 kdy: 09-09-2020, 12:03:13 »
Tak nejako som to tušil. Ďakujem.
Použil som to tak preto, že to používam len "tu". Opravím si to.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #33 kdy: 09-09-2020, 12:47:25 »
Myslel som si, že držať to niekde ako globálnu premennú nie je vhodné.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema progressbar
« Odpověď #34 kdy: 09-09-2020, 13:34:23 »
Myslel som si, že držať to niekde ako globálnu premennú nie je vhodné.
Nemusíš to držet jako globální proměnnou, ale stejně chceš psat do memo, takže budeš mít pravděpodobně extra formulář a tam to mohou být jeho member variable.

Kdyby to člověk chtěl udělat pořádně, tak by si udělal kontext např. IDbBackupRestoreContext, který bys vyloudil na nějaké factory customizaci podle konkrétního zákazníka a tam bys měl např. Property CurrentBackupFilename, ktere by obsahovalo elektivní jméno souboru, do kterého se zálohuje a ve zbytku aplikace by ses na něj odkazoval. A kdybys to chtěl měnit, tak sáhneš akorát do implementace kontextu. Dtto pro vše ostatní včetně odmazani nepotřebných starých záloh aj.
« Poslední změna: 09-09-2020, 13:36:14 od pf1957 »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #35 kdy: 09-09-2020, 13:44:47 »
O to factory som sa kedysi pokúšal, no nevyšlo to :'(  Všetky príklady sú v jave/HTML (hlavne moje knihy) alebo v inom jazyku. Len nie v Pascal-e. Niečo sa mi podarilo nájsť. Už si ani nepamätám o ktorý vzor/šablónu išlo. A ja to do Pascalu vo väčšine prípadov neviem dostať. Veď si mi aj napísal, že mi tie knihy budú nanič.
Tie extra formuláre naozaj mám. Klasicky mám ku každému formuláru samostatnú jednotku s objektmi preň. Tu som to neurobil, lebo som to považoval za tak jednoduché, že to nemá význam. Sekol som sa.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #36 kdy: 09-09-2020, 13:54:11 »
Nemyslím si, žeby som mal dať zákazníkom na výber názov súborov. V drvivej väčšine to budú (ak budú ;) ) BFU. U nich sa bude jednať o embedded verziu s inštaláciou do predvolených priečinkov - podľa MS. Bola by to pre nich zbytočná záťaž. Ja som dal možnosť editovania názvu zálohy. No teraz vážne rozmýšľam, že názov iba zobrazím bez možnosti úpravy.
Súčasťou názvu zálohy je dátum a čas na sekundy.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #37 kdy: 09-09-2020, 17:06:48 »
Nemyslím si, žeby som mal dať zákazníkom na výber názov súborov.
To byl jen priklad, dokreslujici pravidlo "prave jednou", protoze nikdy nevis, co za pozadavek ti muze spadnout na hlavu. A kdyz ne hned, tak u dalsi aplikace - prece nebudes kazdou aplikaci zacinat od nuly a znovu vymyslet kolo nebo donekonecna prepisovat s problematickym zachovanim zpetne kompatibility => proto je vhodne psat kod tak, aby byl reusable, coz vetsinou tak predstavuje, aby byl decouplovany tj. mel co nejmene implicitnich vazeb.


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #38 kdy: 09-09-2020, 17:15:30 »
Týchto vecí som si vedomý. Ale pri mojom veku a rýchlosti programovania sa na to môžem vy... ;D ;D 8) 8)
Nepredpokladám, že niekedy začnem nejaký nový projekt. Ale človek nikdy nevie...
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #39 kdy: 10-09-2020, 06:53:19 »
Týchto vecí som si vedomý. Ale pri mojom veku a rýchlosti programovania sa na to môžem vy... ;D ;D 8) 8)
Nepredpokladám, že niekedy začnem nejaký nový projekt. Ale človek nikdy nevie...
Treba ti mezitim dorostou programatori z vnuku  ;D

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #40 kdy: 10-09-2020, 08:25:49 »
14 ročný sa zaujíma o jazyky a pracuje na závislosti na hrách.
8 ročný vie z fleku dobre klamať. A je tak trochu zákerák. Ten bude politik!
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.