Forum Delphi.cz

Databáze => Obecné => Téma založeno: karkojk 26-06-2020, 08:36:46

Název: Jak byste řešili malý prográmek
Přispěvatel: karkojk 26-06-2020, 08:36:46
Ahoj,
občas, teď více při přerovnávání dat odstraňuji diakritiku a někde zaměňuji znak mezery.
Jak byste řešili malý prográmek, který po spuštění toto provede ve schránce windows aby neměl 10MB ;-).
Je to primitivní dotaz :) , třeba už něco takového je a nějak mi s Delphi ujel vlak  :D ;D
děkuji
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Stanislav Hruška 26-06-2020, 09:27:17
Ak už ten program máš, tak si prejdi diskusiu a hľadaj "veľkosť exe". V češtine.  Sú tu nejaké rady ohľadom jeho zmenšenia.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 26-06-2020, 10:01:29
Děkuji za tip, nemám, dělal jsem to přes LibreOffice, je tam hezký doplněk, ale pokaždé to spouštět, když tu máme Delphi ;-).
Alespoň zapnu mozkové závity jiným směrem.
Koukám jak jsi tu pořád aktivní, to znamená, že jsi v pořádku, fajn.
Ještě jednou dík a měj se hezky
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Stanislav Hruška 26-06-2020, 10:10:18
To by sa malo dať spustiť z Delphi. Ale tu nepomôžem.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Stanislav Hruška 26-06-2020, 12:06:26
Pozrel so sa do akaše a našiel som tam toto. Možno je to to čo chceš.
Citace
Nejprve pro jistotu ještě jednou připomenu, že k používání třídy TClipboard (a tedy také funkce Clipboard) je nutné přidat do sekce uses v aktuálním modulu jednotku Clipbrd. Nejdůležitější vlastností třídy TClipboard je AsText. Ta reprezentuje obsah schránky jako text. Slouží k umístění textu do schránky nebo k vybrání textu ze schránky. Pokud by data nebyla textová, vyvolá se výjimka. Ke zjištění, obsahuje-li schránka textová data, lze s úspěchem použít funkci HasFormat s parametrem CF_TEXT – viz příklad (k jeho funkčnosti je nutné, aby v sekci uses byla uvedena jednotka Clipbrd):
Kód: [Vybrat]
procedure TfrmHlavni.btnTestClick(Sender: TObject);
begin
  if Clipboard.HasFormat(CF_TEXT) then
    Edit1.Text := Clipboard.AsText
  else
    MessageDlg(`Ve schránce není žádný text!`, mtInformation,
        [mbOK], 0);
end;
Čerpané z "Umíme to s Delphi" Autor Kadlec. Dá sa to stiahnuť z internetu. Prípadne upresni o čo Ti z programovej strany ide. Mám múdre knihy.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 28-06-2020, 10:18:30
Dám vědět Stando,
teď jsem od toho musel odskočit, také mám hodně knížek, jen to najít, hlava už tak neslouží, kde co bylo. Tak když je chvilka, listuji ;-). Chtělo by to vše v PDF, to se lépe hledá.
Zatím děkuji moc
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 14-07-2020, 17:36:47
Úplně jsem zapomněl to sem hodit, jak jsem to udělal, pro mazáky je to nuda.
Možná by se dalo řešit lépe, ani zmenšení výslednáho souboru jsem neřešil.

Kód: [Vybrat]
function odstranenidir(Str: string): string;
    var i: Integer;
    begin
    for i := 1 to Length(Str) do
    begin
     case Str[i] of
    'á': Result := Result + 'a';
    'Á': Result := Result + 'A';
    'č': Result := Result + 'c';
    'Č': Result := Result + 'C';
    'ď': Result := Result + 'd';
    'Ď': Result := Result + 'D';
    'é': Result := Result + 'e';
    'É': Result := Result + 'E';
    'ě': Result := Result + 'e';
    'Ě': Result := Result + 'E';
    'í': Result := Result + 'i';
    'Í': Result := Result + 'I';
    'ň': Result := Result + 'n';
    'Ň': Result := Result + 'N';
    'ó': Result := Result + 'n';
    'Ó': Result := Result + 'N';
    'ř': Result := Result + 'r';
    'Ř': Result := Result + 'R';
    'š': Result := Result + 's';
    'Š': Result := Result + 'C';
    'ť': Result := Result + 't';
    'Ť': Result := Result + 'T';
    'ú': Result := Result + 'u';
    'Ú': Result := Result + 'U';
    'ů': Result := Result + 'u';
    'Ů': Result := Result + 'U';
    'ý': Result := Result + 'y';
    'Ý': Result := Result + 'Y';
    'ž': Result := Result + 'z';
    'Ž': Result := Result + 'Z';
   else Result := Result + Str[i];
    end;
    end;
    end;



procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex = 0 then
begin
 if Clipboard.HasFormat(CF_TEXT) then
    Memo1.Text := Clipboard.AsText
  else
    MessageDlg('Ve schránce není text!', mtInformation,
        [mbOK], 0);
end;
    Memo2.Text:=odstranenidir(Memo1.Text);
    if CheckBox1.Checked = true then
         Clipboard.AsText := Memo2.Text;

end;
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: vandrovnik 14-07-2020, 21:30:34
Chybí tam ö, ü, ë, ĺ, ŕ, Â, Ç, ż apod.
Možná to udělat alespoň pro všechny znaky v sadě Windows 1250?

Jinak mnohem rychlejší je nahrazovat znaky v řetězci stylem Str[ i ] := 'x', než přidávat po jednom znaku do řetězce nového.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Jirka 15-07-2020, 11:03:31
Asi  překlep ..

    'ó': Result := Result + 'n';
    'Ó': Result := Result + 'N';
    'Š': Result := Result + 'C';



Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Jan Fiala 15-07-2020, 21:28:20
Úplně jsem zapomněl to sem hodit, jak jsem to udělal, pro mazáky je to nuda.
Možná by se dalo řešit lépe, ani zmenšení výslednáho souboru jsem neřešil.

Pokud bys to chtel nejak urychlit, tak muzes pouzit TEncode unitu implementovanou v Delphi a prevest to na CP 20127
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 22-10-2020, 19:46:58
Úplně jsem zapomněl to sem hodit, jak jsem to udělal, pro mazáky je to nuda.
Možná by se dalo řešit lépe, ani zmenšení výslednáho souboru jsem neřešil.

Kód: [Vybrat]
function odstranenidir(Str: string): string;
    var i: Integer;
    begin
    for i := 1 to Length(Str) do
    begin
     case Str[i] of
    'á': Result := Result + 'a';
    'Á': Result := Result + 'A';
    'č': Result := Result + 'c';
    'Č': Result := Result + 'C';
    'ď': Result := Result + 'd';
    'Ď': Result := Result + 'D';
    'é': Result := Result + 'e';
    'É': Result := Result + 'E';
    'ě': Result := Result + 'e';
    'Ě': Result := Result + 'E';
    'í': Result := Result + 'i';
    'Í': Result := Result + 'I';
    'ň': Result := Result + 'n';
    'Ň': Result := Result + 'N';
    'ó': Result := Result + 'o';
    'Ó': Result := Result + 'O';
    'ř': Result := Result + 'r';
    'Ř': Result := Result + 'R';
    'š': Result := Result + 's';
    'Š': Result := Result + 'S';
    'ť': Result := Result + 't';
    'Ť': Result := Result + 'T';
    'ú': Result := Result + 'u';
    'Ú': Result := Result + 'U';
    'ů': Result := Result + 'u';
    'Ů': Result := Result + 'U';
    'ý': Result := Result + 'y';
    'Ý': Result := Result + 'Y';
    'ž': Result := Result + 'z';
    'Ž': Result := Result + 'Z';
   else Result := Result + Str[i];
    end;
    end;
    end;



procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex = 0 then
begin
 if Clipboard.HasFormat(CF_TEXT) then
    Memo1.Text := Clipboard.AsText
  else
    MessageDlg('Ve schránce není text!', mtInformation,
        [mbOK], 0);
end;
    Memo2.Text:=odstranenidir(Memo1.Text);
    if CheckBox1.Checked = true then
         Clipboard.AsText := Memo2.Text;

end;
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: JaroB 22-10-2020, 20:21:39
používal jsem třeba toto
Kód: Delphi [Vybrat]
  1. function RemoveCSPDiacritics(const S: string): string;
  2.   {-odstrani CSP diakritiku CASE SENSITIVE}
  3.   {selective remove czech diacritics from text}
  4. const
  5.   dcsCSP = 'ŠŤŽŹšťžźńňďĽĹľĺÁÄČĆÉĚÍĎŇŃÓÔÖŘŮÚÜÝáäčćéěíďňóôöőřŕůúüűý';
  6.   rdcCSP = 'STZZstzznndLLllAACCEEIDNNOOORUUUYaacceeidnoooorruuuuy';
  7. var
  8.   I, E: Integer;
  9. begin
  10.   Result := S;
  11.   if Result = '' then Exit;
  12.   for I := 1 to Length(Result) do
  13.   begin
  14.     E := Pos(Result[I], dcsCSP);
  15.     if E > 0 then
  16.       Result[I] := Char(rdcCSP[E]);
  17.   end;
  18. end;
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: Jan Fiala 23-10-2020, 11:35:26
Hlavně to nedělej jako FORM aplikaci - nepotřebuješ to. Stačí konzolová aplikace, přečíst a zapsat do schránky zvládneš. A výsledek bude mnohem menší.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 23-06-2021, 14:41:16
Díky, ale k tomu se dostávám až teď i když na „konzoli" jsem to ještě nezkoušel/nedělal.
Stejně jako to „skloubit", aplikaci Form na jakousi předvolbu/nastavení a možnost to vykonat jen přes příkazový řádek. Nebo je lepší udělat dvě aplikace?
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: martinnr 25-06-2021, 13:24:47
kludne to moze byt aj apkka s formularom (aj ked tym padom bude vacsia, ale 10MB nie, na forme moze byt log, historia a pod), automaticky ju spustat po starte, minimalizovat do tray (odtial sa moze otvarat ten form), odchytavala by nejaku klavesovu skratku a na jej stlacenie by prebehlo tu upravenie obsahu schranky.
Název: Re:Jak byste řešili malý prográmek
Přispěvatel: karkojk 25-06-2021, 17:07:51
Ano, apku mám teď jako formulář, jen mě teď napadlo to pouštět přes pravé tlačítko myši, bez formuláře.
Přes příkazový řádek s tím zkušenost zatím nemám, tak nevím, zda se také nedá „nějakým" způsobem využít tento kód/převod, bez otevření formuláře nebo to jde jen "konzolovou aplikací". Teď otvírám formulář přes pravé tlačítko myši a ta velikost formuláře je cca. 2Mb.