Autor Téma: Jak byste řešili malý prográmek  (Přečteno 1200 krát)

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Jak byste řešili malý prográmek
« kdy: 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
« Poslední změna: 26-06-2020, 08:38:59 od karkojk »
Programování pro radost, prý to bystří mysl ;-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5919
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:Jak byste řešili malý prográmek
« Odpověď #1 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Jak byste řešili malý prográmek
« Odpověď #2 kdy: 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
Programování pro radost, prý to bystří mysl ;-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5919
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:Jak byste řešili malý prográmek
« Odpověď #3 kdy: 26-06-2020, 10:10:18 »
To by sa malo dať spustiť z Delphi. Ale tu nepomôžem.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5919
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:Jak byste řešili malý prográmek
« Odpověď #4 kdy: 26-06-2020, 12:06:26 »
Excellent
Rated 1 time
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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Jak byste řešili malý prográmek
« Odpověď #5 kdy: 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
Programování pro radost, prý to bystří mysl ;-)

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Jak byste řešili malý prográmek
« Odpověď #6 kdy: 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;
Programování pro radost, prý to bystří mysl ;-)

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1249
  • Karma: 51
    • Verze Delphi: 10.3
Re:Jak byste řešili malý prográmek
« Odpověď #7 kdy: 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.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 429
  • Karma: 9
    • Verze Delphi: XE2
Re:Jak byste řešili malý prográmek
« Odpověď #8 kdy: 15-07-2020, 11:03:31 »
Asi  překlep ..

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




Offline Jan Fiala

  • Plnoletý
  • ***
  • Příspěvků: 223
  • Karma: 2
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Jak byste řešili malý prográmek
« Odpověď #9 kdy: 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

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Jak byste řešili malý prográmek
« Odpověď #10 kdy: 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;
Programování pro radost, prý to bystří mysl ;-)

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1062
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Jak byste řešili malý prográmek
« Odpověď #11 kdy: 22-10-2020, 20:21:39 »
Excellent
Rated 2 times
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;

Offline Jan Fiala

  • Plnoletý
  • ***
  • Příspěvků: 223
  • Karma: 2
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Jak byste řešili malý prográmek
« Odpověď #12 kdy: 23-10-2020, 11:35:26 »
Excellent
Rated 1 time
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ší.

Offline karkojk

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Jak byste řešili malý prográmek
« Odpověď #13 kdy: 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?
Programování pro radost, prý to bystří mysl ;-)

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Jak byste řešili malý prográmek
« Odpověď #14 kdy: 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.