Mazání více editů ( delphi )



Prosím o radu, chtěl bych smazat asi 50 editů bez toho aniž bych to musel vypisovat.Zkoušel jsem :for x:=1 to 50 doedit[x].clear;ale bohužel error.Za odpověď předem děkuji.
Jestli chces k editum pristupovat jako k poli, tak je taky jako pole musis vytvorit.
<p>mám to!!!</p><p>zde je jednoduchý 100% funkční příklad:</p><pre><code>$form['delete'] = array( '#type' =&gt; 'submit', '#value' =&gt; t('delete'), '#attributes' =&gt; array('onclick' =&gt; 'if(!confirm("really delete?")){return false;}'), ); </code></pre><p>doufám, že to pomůže.</p><p>šťastný kódování :)</p> <p>vícenásobný výběr přetažením, ctrl-kliknutí a shift-kliknutí jsou přiměřeně použitelné, pokud uživatel obvykle vybere najednou pouze jeden objekt. mají slabou objevitelnost, ale jsou velmi efektivní pro uživatele. spolu s popisovanou metodou zrušení výběru jsou standardy, takže mnoho uživatelů již ví, jak to udělat, takže zjistitelnost není tak velkým problémem, jak by si člověk myslel. kromě toho je vícenásobný výběr obvykle zkratkou odborníka. ve většině aplikací může vše, co může uživatel dělat s vícenásobným výběrem, také s jednorázovým výběrem - bude to trvat jen déle, takže dostupnost není považována za požadavek. <em>odchylka</em> od standardu, na druhé straně, pravděpodobně zaměří mnoho vašich uživatelů.</p><p>jedním kliknutím vyberte, je dobré, když uživatel musí vybrat více položek, aby mohl úspěšně dokončit klíčovou úlohu. je to rychlejší než kliknutí ctrl, ale ne tak rychle jako kliknutí shift nebo přetažení pro větší počet přilehlých objektů. na druhé straně má mnohem lepší objevitelnost. umístění ovládacího prvku podobného zaškrtávacím políčkům vedle každé ikony účinně komunikuje, že každý výběr přetrvává prostřednictvím jediného kliknutí. možná budete potřebovat tlačítko vymazat pro vymazání všech výběrů.</p> <p>příkaz <code>merge</code> má složitou syntaxi a ještě složitější implementaci, ale v zásadě jde o spojení dvou tabulek, filtrování dolů na řádky, které je třeba změnit (vložit, aktualizovat nebo smazat), a poté provést požadované změny. vzhledem k těmto vzorovým údajům:</p><pre><code>declare @categoryitem as table ( categoryid integer not null, itemid integer not null, primary key (categoryid, itemid), unique (itemid, categoryid) ); declare @datasource as table ( categoryid integer not null, itemid integer not null primary key (categoryid, itemid) ); insert @categoryitem (categoryid, itemid) values (1, 1), (1, 2), (1, 3), (2, 1), (2, 3), (3, 5), (3, 6), (4, 5); insert @datasource (categoryid, itemid) values (2, 2); </code></pre><p><strong> cíl </strong></p><pre><code>╔════════════╦════════╗ ║ categoryid ║ itemid ║ ╠════════════╬════════╣ ║ 1 ║ 1 ║ ║ 2 ║ 1 ║ ║ 1 ║ 2 ║ ║ 1 ║ 3 ║ ║ 2 ║ 3 ║ ║ 3 ║ 5 ║ ║ 4 ║ 5 ║ ║ 3 ║ 6 ║ ╚════════════╩════════╝ </code></pre><p><strong> zdroj </strong></p><pre><code>╔════════════╦════════╗ ║ categoryid ║ itemid ║ ╠════════════╬════════╣ ║ 2 ║ 2 ║ ╚════════════╩════════╝ </code></pre><p>požadovaným výsledkem je nahrazení dat v cíli daty ze zdroje, ale pouze pro <code>categoryid = 2</code>. po výše uvedeném popisu <code>merge</code> bychom měli napsat dotaz, který spojuje zdroj a cíl pouze na klíče, a filtrovat řádky pouze v klauzulích <code>when</code>:</p><pre><code>merge into @categoryitem as target using @datasource as source on source.itemid = target.itemid and source.categoryid = target.categoryid when not matched by source and target.categoryid = 2 then delete when not matched by target and source.categoryid = 2 then insert (categoryid, itemid) values (categoryid, itemid) output $action, isnull(inserted.categoryid, deleted.categoryid) as categoryid, isnull(inserted.itemid, deleted.itemid) as itemid ; </code></pre><p>to dává následující výsledky:</p><pre><code>╔═════════╦════════════╦════════╗ ║ $action ║ categoryid ║ itemid ║ ╠═════════╬════════════╬════════╣ ║ delete ║ 2 ║ 1 ║ ║ insert ║ 2 ║ 2 ║ ║ delete ║ 2 ║ 3 ║ ╚═════════╩════════════╩════════╝ ╔════════════╦════════╗ ║ categoryid ║ itemid ║ ╠════════════╬════════╣ ║ 1 ║ 1 ║ ║ 1 ║ 2 ║ ║ 1 ║ 3 ║ ║ 2 ║ 2 ║ ║ 3 ║ 5 ║ ║ 3 ║ 6 ║ ║ 4 ║ 5 ║ ╚════════════╩════════╝ </code></pre><p>realizační plán je: <img src="https://i.stack.imgur.com/fovhu.jpg" alt="merge plan"></p><p>všimněte si, že jsou obě tabulky plně naskenovány. můžeme to považovat za neefektivní, protože pouze řádky, kde <code>categoryid = 2</code> bude ovlivněno v cílové tabulce. zde přicházejí varování v books online. jeden chybný pokus o optimalizaci, aby se dotkl pouze nezbytných řádků v cíli, je:</p><pre><code>merge into @categoryitem as target using ( select categoryid, itemid from @datasource as ds where categoryid = 2 ) as source on source.itemid = target.itemid and target.categoryid = 2 when not matched by target then insert (categoryid, itemid) values (categoryid, itemid) when not matched by source then delete output $action, isnull(inserted.categoryid, deleted.categoryid) as categoryid, isnull(inserted.itemid, deleted.itemid) as itemid ; </code></pre><p>logika v klauzuli <code>on</code> je použita jako součást spojení. v tomto případě je spojení úplným vnějším spojením (viz <a href="http://technet.microsoft.com/en-us/library/bb522522%28v=sql.105%29.aspx">tento záznam books online</a> proč). použití kontroly kategorie 2 na cílových řádcích jako součásti vnějšího spojení nakonec povede k odstranění řádků s jinou hodnotou (protože neodpovídají zdroji):</p><pre><code>╔═════════╦════════════╦════════╗ ║ $action ║ categoryid ║ itemid ║ ╠═════════╬════════════╬════════╣ ║ delete ║ 1 ║ 1 ║ ║ delete ║ 1 ║ 2 ║ ║ delete ║ 1 ║ 3 ║ ║ delete ║ 2 ║ 1 ║ ║ insert ║ 2 ║ 2 ║ ║ delete ║ 2 ║ 3 ║ ║ delete ║ 3 ║ 5 ║ ║ delete ║ 3 ║ 6 ║ ║ delete ║ 4 ║ 5 ║ ╚═════════╩════════════╩════════╝ ╔════════════╦════════╗ ║ categoryid ║ itemid ║ ╠════════════╬════════╣ ║ 2 ║ 2 ║ ╚════════════╩════════╝ </code></pre><p>kořenová příčina je ze stejného důvodu, proč se predikáty chovají v klauzuli vnější spojení <code>on</code> odlišně, než když jsou specifikovány v klauzuli <code>where</code>. syntaxe <code>merge</code> (a implementace spojení v závislosti na zadaných klauzulích) jen ztěžují vidět, že tomu tak je.</p><p> <a href="http://technet.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx">navádění v books online</a> (rozšířeno v položce <a href="http://technet.microsoft.com/en-us/library/cc879317%28v=sql.105%29.aspx">optimizing performance</a> ) nabízí navádění, které zajistí, že správná sémantika je vyjádřena pomocí syntaxe <code>merge</code>, aniž by uživatel nutně musel muset pochopit všechny podrobnosti implementace nebo zohlednit způsoby, kterými by optimalizátor mohl legitimně přeskupit věci z důvodů efektivnosti provádění.</p><p>dokumentace nabízí tři možné způsoby implementace časného filtrování:</p><p><strong> zadání podmínky filtrování v klauzuli <code>when</code> </strong> zaručuje správné výsledky, ale může znamenat, že více řádků je čteno a zpracováno ze zdroje a cíle tabulky, než je nezbytně nutné (viz první příklad).</p><p><strong> aktualizace prostřednictvím zobrazení </strong>, která obsahuje podmínku filtrování, také zaručuje správné výsledky (protože změněné řádky musí být přístupné pro aktualizaci prostřednictvím zobrazení), ale vyžaduje to vyhrazené zobrazení, které splňuje liché podmínky pro aktualizaci zobrazení.</p><p><strong> použití společného výrazu tabulky </strong> přináší podobné riziko při přidávání predikátů k klauzuli <code>on</code>, ale z poněkud odlišných důvodů. v mnoha případech to bude bezpečné, ale vyžaduje to odbornou analýzu prováděcího plánu, aby se to potvrdilo (a rozsáhlé praktické testování). například:</p><pre><code>with target as ( select * from @categoryitem where categoryid = 2 ) merge into target using ( select categoryid, itemid from @datasource where categoryid = 2 ) as source on source.itemid = target.itemid and source.categoryid = target.categoryid when not matched by target then insert (categoryid, itemid) values (categoryid, itemid) when not matched by source then delete output $action, isnull(inserted.categoryid, deleted.categoryid) as categoryid, isnull(inserted.itemid, deleted.itemid) as itemid ; </code></pre><p>výsledkem jsou správné výsledky (neopakované) s optimálnějším plánem:</p><p><img src="https://i.stack.imgur.com/tazmk.jpg" alt="merge plan 2"></p><p>plán čte pouze řádky pro kategorii 2 z cílové tabulky. to může být důležitým hlediskem výkonu, pokud je cílová tabulka velká, ale je příliš snadné tuto chybu získat pomocí syntaxe <code>merge</code>.</p><p>někdy je snazší zapsat <code>merge</code> jako samostatné operace dml. tento přístup může dokonce <strong> vést lépe </strong> než jediný <code>merge</code>, což je skutečnost, která lidi často překvapuje.</p><pre><code>delete ci from @categoryitem as ci where ci.categoryid = 2 and not exists ( select 1 from @datasource as ds where ds.itemid = ci.itemid and ds.categoryid = ci.categoryid ); insert @categoryitem select ds.categoryid, ds.itemid from @datasource as ds where ds.categoryid = 2; </code></pre> <p>ano, se 100% pokrytím budete psát několik testů, které nepotřebujete. bohužel jediným spolehlivým způsobem, jak určit, které testy nepotřebujete, je napsat je všechny a poté počkat asi 10 let, abyste zjistili, které z nich nikdy selhaly.</p><p>udržování mnoha testů není obvykle problematické. mnoho týmů má automatizovanou integraci a testy systému na 100% pokrytí testem jednotek.</p><p>nejste však ve fázi údržby testu, hrajete dohání. je mnohem lepší mít 100% vašich kurzů při 50% testovacím pokrytí než 50% vašich kurzů při 100% testovacím pokrytí a zdá se, že váš náskok se snaží přimět vás, abyste odpovídajícím způsobem přidělili svůj čas. poté, co máte tuto základní linii, pak dalším krokem je obvykle tlačení o 100% u souborů, které se v budoucnu změní.</p> ahoj davide, ty jo nepočítal jsem, reaplikuji si ho po každém mytí. dočistí mi okna a je to rychlovka. Šplíchnout, rozetřít, doleštit. <p>řekněme, že chcete spustit:</p><pre><code>rm *.txt </code></pre><p>můžete jen spustit:</p><pre><code>echo rm *.txt </code></pre><p>nebo dokonce jen:</p><pre><code>echo *.txt </code></pre><p>abyste viděli, které soubory <code>rm</code> by se smazaly, protože to shell rozšiřuje <code>*.txt</code>, ne <code>rm</code>.</p><p>jediný čas, kdy vám to nepomůže, je <code>rm -r</code>.</p><p>pokud chcete odstranit soubory a adresáře rekurzivně, můžete použít <code>find</code> místo <code>rm -r</code>, např.</p><pre><code>find . -name "*.txt" -print </code></pre><p>pak pokud to dělá, co chcete, změňte <code>-print</code> to <code>-delete</code>:</p><pre><code>find . -name "*.txt" -delete </code></pre> <p>nevidím způsob, jak okno smazat, ale zdá se, že to funguje.</p><p>okno ve wiresharku proto můžete vymazat jedním z následujících způsobů: </p><ul> <li>kliknutím na zelené žraločí ploutve vpravo od červeného tlačítka <code>stop</code></li> <li>kliknutí na <code>capture</code>&gt; <code>restart</code></li> <li>stisknutí <code>ctrl-r</code>.</li> </ul> Jaký je smysl má mnoho indexovaných stránek, které jsou odstraněny ihned? Dočasné stránky jsou bezcenné pro vyhledávače a jejich uživateli poté, co byly odstraněny. Takže bych jít nechat prohledávače vyhledávačů rozhoduje, zda stránka stojí indexování. Jen jim řekni adresy URL, která bude přetrvávat ... a realizovat některé seznam stránek (v případě, že nejsou dosud k dispozici), který umožní vaše stránky, které mají být procházeny jednodušší.


Poznámka pod: 6 sitemap soubory 5m URL? Pokud vím, soubor Sitemap může neobsahují více než 50k URL. <p>společným webovým rozhraním pro tuto úlohu je mít položky v seznamu, s možností prohledávat a třídit seznam. v pravém (posledním) sloupci je tlačítko pro úpravy, po klepnutí se řádek upraví a přepne se na dvě nová tlačítka - „uložit“ a „zrušit“.</p><p>po aktualizaci řádku nezapomeňte uživateli poskytnout zpětnou vazbu, pokud byla operace uložení úspěšná nebo ne.</p><p><img src="https://i.stack.imgur.com/g4nz0.png" alt="enter image description here"></p> Snížily se požadavky na přechod na vyšší level z 20+ lekcí na vyšších levelech na jen (například) 4. A započítaly se už splněné lekce. Někomu to může vyhovovat, ostatní ještě mohou doufat, že je to dočasný test.