Anonymní profil gna – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil gna – Programujte.comAnonymní profil gna – Programujte.com

 

Příspěvky odeslané z IP adresy 213.211.51.–

gna
Visual Basic › Změna adresy buňky
před 16 hodinami   #389045

Parametry Cells (resp. Item) jsou asi naopak (řádek, sloupec)

gna
Visual Basic › Změna adresy buňky
před 17 hodinami   #389044

Ano, můžeš to hodit do cyklu a tu adresu "dynamicky vyrobit"

Range("g" & i)

Nebo rovnou použít něco, co bere čísla.

Cells(7, i)
gna
JavaScript, AJAX, jQuery › C# API pole obrázků do JS
23. 11. 2021   #389025

Máš tam console.log, tak vidíš, co ti v té odpovědi přichází. Zjevně je to objekt a ten do img.src prostě nedáš. Tak holt to při příjmu zpracuj podle toho, jak to formátuješ při odesílání.

gna
JavaScript, AJAX, jQuery › "Neinteraktivní" přepínač.
20. 11. 2021   #389022

Používej nějaký programátorský editor se zvýrazňováním syntaxe a automatickým odsazovaním. Pak by mělo být vidět, že ten kód nemáš v tagu skript, máš tam blbě závorky a uprostřed slov máš jakési neviditelné znaky (alespoň tedy v tom textu tady, nevím jak v originále).

gna
JavaScript, AJAX, jQuery › Externí .js soubor.
20. 11. 2021   #389021

 Ten skript se spouští před definicí elementu body, takže document.body a pak parametr rodic je null.

editor-tabulek.sj:82:vytvorTlacitkoAVlozHo("Přidat ř. nahoru", document.body).onclick = pridejRadekNahoru;

editor-tabulek.sj:32:function vytvorTlacitkoAVlozHo(popisek, rodic) {
editor-tabulek.sj:33:    let btn = document.createElement("button");
editor-tabulek.sj:34:    btn.textContent = popisek;
editor-tabulek.sj:35:    rodic.appendChild(btn);
gna
JavaScript, AJAX, jQuery › Chybová hláška
20. 11. 2021   #389020

Asi tam nějaký odkaz je, jinak by to prostě neřvalo.

gna
JavaScript, AJAX, jQuery › Callback v javascriptu...?
19. 11. 2021   #389014

Duplicita znamená zdvojení/opakování. Nic okatého tam nevidím. A callback je když nějaké funkci předáš jinou funkci, která se pak zavolá. Klasicky třeba s [].forEach. Nic takového tam nemáš, tak se v tom nemůžeš ztrácet ;-)

Takže text se zkrátí jen pokud je aspoň o 6 znaků delší než je uvedená délka. Při zkracování se vezme o 3 znaky méně, protože se pak přidají 3 tečky.

To je věc, kterou když nepochopíš, tak si ji prostě přečteš znova a neběžíš s tím na fórum.

gna
Python › Šifra ADFG(V)X
19. 11. 2021   #389013

Když v tom cyklu používáš i a j jako indexy do tabulky, tak pak radek a sloupec je to i a j. A pro zjištění kódu k nim nebudeš nic přičítat, ale zase je použiješ jen jako indexy. 

for i in range(0, len(Sifrovaci_Tabulka)):
    for j in range(0, len(Sifrovaci_Tabulka[i])):
        if hledanyZnak == Sifrovaci_Tabulka[i][j]:
            kr = Verze5[i]
            ks = Verze5[j]
            ZasifrovanyZnak = kr + ks

A možná to vyhoď do funkce a ještě bych ti poradil funkci zip na spojení dvou kolekcí. 

def enc(tabulka, znak):
    """C => RS"""
    for kr, radek_tabulky in zip("ADFGX", tabulka):
        for ks, znak_radku in zip("ADFGX", radek_tabulky):
            if znak_radku == znak:
                return kr + ks
    raise ValueError("Neznamy znak!")


def dec(tabulka, kod):
    """RS => C"""
    for kr, radek_tabulky in zip("ADFGX", tabulka):
        for ks, znak_radku in zip("ADFGX", radek_tabulky):
            if kr + ks == kod:
                return znak_radku
    raise ValueError("Neznamy kod!")
gna
Pascal › Lazarus linux myDate
14. 11. 2021   #388986

Já jsem čekal, že to třeba vrací čas v UTC a s clocale to aplikuje místní časovou zónu.

Ale když to zkusím u sebe (na desktopu, nemám malinu), tak Now vrací správný místní čas a přidání clocale jen změní názvy dnů na české.

Tak nevím, není možné, že to třeba spouštíš moc brzy, než se synchronizuje systémový čas a související info? Pokud se info o časové zóně a letním/zimním času změní za běhu programu, tak to FPC nezachytí (jde to aktualizovat funkcí ReReadLocalTime z unity unix).

gna
.NET › Jak udělat šachy.
13. 11. 2021   #388975

Potřebuješ nějak reprezentovat tu šachovnici. Ideálně asi jako dourozměrné pole a to je v principu celé.

Každá hodnota pak reprezentuje nějakou figuru nebo prázdné políčko. A nad tím pak postavíš pravidla hry. Kdo na daném políčku stojí, jak se může pohybovat, co mu stojí v cestě, jestli tím tahem něco sebere.

Je to jen práce s hodnotami v poli.

gna
Python › Řazení slov na styl slovního…
13. 11. 2021   #388974

#16 JerryM
Tady jde o to, ře se řešení dá najít jen vyzkoušením všech navazujících kombinací (v nejhorším případě) bez možnosti optimalizace. To v jaké struktuře bude mít ta slova je úplně šumák.

Tak si zastrč bimbase a běž zazimovat zahradu nebo něco jiného užitečného.

gna
Python › Řazení slov na styl slovního…
12. 11. 2021   #388970

Jasně, způsob uložení těch slov je to, v čem je tady problém...

gna
Python › Řazení slov na styl slovního…
11. 11. 2021   #388960

Já v tom vidím cyklický graf a takové úlohy nejde řešit rychle. 100 000 slov nestihneš před vyhynutím lidstva.

Nejsou tam ještě nějaká "optimalizující" omezení?

gna
Pascal › Lazarus linux myDate
10. 11. 2021   #388955
gna
MySQL › Mysql a timestamp
10. 11. 2021   #388954

Je to unixový timestamp a na tom odkazu od HU jsou dvě funkce -- FROM_UNIXTIME a UNIX_TIMESTAMP -- kterými si můžeš hodnoty zkonvertovat a pak libovolně porovnávat.

gna
Python › Řazení slov na styl slovního…
9. 11. 2021   #388946

Podle toho, co s tím chceš dělat. Můžeš si to třeba rozhodit do mapy:

slovnik = {
    "ak": ["akat", "akvarium", ...],
    "ba": ["babicka", "babovka", ...],
    ...
}
import random
import urllib.request


def main():
    with urllib.request.urlopen("https://pastebin.com/raw/7uPetKWh") as f:
        slova = f.read().decode().splitlines()

    # >>>
    slovnik = {}
    for slovo in slova:
        slovnik.setdefault(slovo[:2], []).append(slovo)
    # <<<

    def dalsi(slovo=None):
        key = random.choice(list(slovnik.keys())) if not slovo else slovo[-2:]
        moznosti = slovnik.get(key)
        return moznosti.pop() if moznosti else None

    for _ in range(10):
        slovo = dalsi()
        while slovo:
            print(slovo, end=" ")
            slovo = dalsi(slovo)
        print("<konec>")


if __name__ == "__main__":
    main()
gna
Pascal › Četnost zadaných slov - Typ…
7. 11. 2021   #388940

Nemužeš dostat úkol na něco, co vůbec neznáš. Napiš, co máš a co konrétně nevíš.

Budeš třeba mít záznam (record) se slovem a počtem výskytů. A pole těchhle záznamů.

Projdeš zdanou větu po slovech. Třeba hledáním mezery.

Pro každé slovo zjistíš jestli ho máš v poli. Pokud ne, tak ho přidáš. A nalezenému/přidanému záznamu pak navýšíš počet výskytů.

gna
Pascal › Součet dvou binárních čísel
7. 11. 2021   #388939

Protože počítáš ve dvojkové soustavě. Zbytek po dělení 2 je 0 nebo 1.

Zkus si ten součet představit binárně: 

div --, ,-- mod
      | |
      V V
   0: 0 0
   1: 0 1
   2: 1 0
   3: 1 1

Jestli tomuhle nerozumíš, tak si to napiš po svém, na tom nesejde.

gna
Pascal › Součet dvou binárních čísel
5. 11. 2021   #388936

No, vida, s tímhle už se dá pracovat.

Pro zjištění délky stringu mi přijde jasnější použití funkce Length, než technický detail, že na indexu 0 je délka.

Pro procházení těch stringů by se hodilo, aby měly stejnou délku, tak bych je zarovnal. A ještě bych na začátek přidal jednu 0, aby tam bylo místo pro případný poslední carry. Na tom úplně nesejde, ale přijde mi to jako takové přímočaré zjednodušení pro začátečníky.

To sčítaní samotné je pak sčítání tří hodnot (nebo dvakrát sčítání dvou hodnot). Dvě číslice z těch sčítaných stringů a carry z předchozího sčítání. To si myslím, že nemusíš vypisovat a můžeš použít matematické operace.

Takže nevím, v jakém Pascalu děláš, ale toto projde ve FreePascalu.

uses
    math, // max
    strutils, // addchar
    sysutils; // strtoint

// digit to integer
function d2i(c: char): integer;
begin
  d2i := ord(c) - ord('0');
end;

// integer to digit
function i2d(i: integer): char;
begin
  i2d := chr(ord('0') + i);
end;

var
    a, b, c: string;
    i, soucet, prenos: integer;

begin
    // vstup
    a := '111110';
    b := '1011';
    
    // priprava
    a := addchar('0', a, max(length(a), length(b)) + 1);
    b := addchar('0', b, length(a));
    c := addchar('0', '', length(a));
    prenos := 0;

    // vypocet
    for i := length(a) downto 1 do
    begin
        soucet := d2i(a[i]) + d2i(b[i]) + prenos;
        c[i] := i2d(soucet mod 2);
        prenos := soucet div 2;
    end;

    // kontrola
    writeln('  ', a, ' ', strtoint('%' + a));
    writeln('+ ', b, ' ', strtoint('%' + b));
    writeln('= ', c, ' ', strtoint('%' + c));
end.
gna
Pascal › Součet dvou binárních čísel
1. 11. 2021   #388914

Tak si uděláš proměnnou, ve které budeš mít tu hodnotu, co si chceš pamatovat.

gna
Pascal › Součet dvou binárních čísel
31. 10. 2021   #388909

Co konkrétně nevíš, jak udělat?

gna
.NET › Cizi Email komunikace na IIS…
30. 10. 2021   #388903

Jestli to aspone je aspone.cz, tak ti nabízejí službu Plánovač úloh, která umožňuje periodicky spouštět skripty.

gna
.NET › Prostřední hodnota.
30. 10. 2021   #388881

#19 Montezo

A] proč je to na blití.

C] moje řešení je primitivní, ale funkční.

Přesně proto. Tvůj lineární přístup je těžce neoptimální (dost možná to překladač dokáže vylepšit), ale znatelně čitelnější. Řešení BDS je optimální v počtu porovnávání, ale ve výsledku je to zase 6 větví pro všechny možností a kód je několikrát zanořený.

PS: tak co by teda bylo nejefektivnější postup? Nějaký pole nebo co? Tak mi teda řekněte, co se mám doučit

Technicky nejefektivnější řešení napsal BDS. Nevím teda, jestli náhodou v .NETu volání sortu nebude rychlejší než interpretace tří porovnání, ale to je detail.

Obecně na hledání prostřední hodnoty je potřeba hodnoty seřadit a nejlépe se řadí pole. U třech proměnných na tom úplně nesejde.

Algoritmy se naučíš za pochodu, prostě nepřestávej kódit :-)

gna
Java › Zahozeni hodnoty z mezipameti
29. 10. 2021   #388876

Trochu nerozumím tomu skákání do ifu. Když zadáš "JKL\n", tak:

// první znak
do zn se načte 'J'

// cyklus do konce řádku
do ignoruj se načte 'K'
a protože to není '\n', tak se cyklus opakuje

do ignoruj se načte 'L'
a protože to není '\n', tak se cyklus opakuje

do ignoruj se načte '\n'
a protože to je \n, tak cyklus končí

// vyhodnocení
až pak přijde na řadu ten if, jestli zn je správná odpověď.

gna
.NET › Prostřední hodnota.
29. 10. 2021   #388874

#17 BDS
To je, s prominutím, na blití.

gna
.NET › Prostřední hodnota.
29. 10. 2021   #388866

On hlavně Mutagen ten kód tady napsal, tak není, co hledat :-)

gna
.NET › Linked list next node
29. 10. 2021   #388854

Když v té funkci je jen jeden triviální příkaz, tak je jaksi zbytečná.

gna
.NET › Prostřední hodnota.
29. 10. 2021   #388853

Vím, že ta první hodnota je prostřední. Tak se podívám na podmínku, která by to měla chytit:

if (prvni >= druha && prvni <= treti)

Ta samozřejmě neplatí. Když chceš otestovat jestli X je mezi A a B, tak musíš otestovat dvě možnosti: 

A <= X <= B
B <= X <= A

A zatím všechno řešíš hrubou silou, zkoušením všech možností. To u třech čísel jde, ale představ si, že bys jich měl třeba 100...

gna
.NET › Linked list next node
28. 10. 2021   #388848

`aktualniNoda` není v tom listu, ale když ho nějak procházíš, tak ten aktuální node někde máš.

Jinak nevím, co ti na tom nefunguje. Pokud tam teda máš aspoň tři prvky a mimo toho, že C# je case-sensitive.

gna
.NET › Linked list next node
28. 10. 2021   #388845

Budeš muset více rozepsat, co přesně děláš. U standardního LinkedListu normálně Next a Previous funguje na všech uzlech (ale první samozřejmě nemá předchozí a a poslední nemá další).

gna
.NET › musím určit, jaká hodnota je…
28. 10. 2021   #388843

   

if (prvni > druha); //pokud je prvni vetší než druha
//// maš tady středník
//// to znamená prázný příkaz
//// další "skutečný" příkaz pak nemá nic společného s tímhle ifem

prvni = pomocna(); // uložím prvni do pomocna
//// to je volání funkce, 'pomocna' přece není funkce
//// a "ukládá" to opačným směrem: prvni <-- pomocna

Máš za těma ifama středník. To je jako prázdný příkaz.

gna
.NET › Tři čísla menší (?) než 10.
28. 10. 2021   #388841

Inkrementace je x++ ( ne x = ++ ). A myslím, že by ta metoda měla být public ( public static void Main(string[] args) ).

gna
Java › Zahozeni hodnoty z mezipameti
28. 10. 2021   #388840

   

dělej {
  znak = načti_znak();
} dokud (znak není '\n');

// '\n' je znak konce řádku
// čtení se opakuje dokud se nedojde na konec řádku
gna
Java › Zahozeni hodnoty z mezipameti
28. 10. 2021   #388837

Vstup toho programu je řádkový a ten znak zadáváš jako <znak><enter>. Případně jako <několik znaků><enter> a program zajímá jen první znak.

Takže ten program načte první znak a pak všechny další až do konce řádku ('\n'). To zahození spočívá v tom, že se s tím zbytkem nic nedělá, jen se to vytáhne ze vstupu, aby to tam neviselo.

A trochu se to rozbije, když zadáš prázdný řádek. Prvni read načte konec řádku a pak to čte a ignoruje data až do konce dalšího řádku.

gna
Java › Kod prvocisla
25. 10. 2021   #388834

Jen ještě taková drobnost. Java umí DivMod a jestli překladač postřehne, že může obě operace udělat jednou instrukcí, tak je řešení s dělením parádička.

gna
Java › Kod prvocisla
25. 10. 2021   #388832

Mě nejdříve ani nenapadlo, že by v tom "i/j" mohl být problém, i když i já jsem se nad tím musel zamyslet. Až z dalších komentářů mi došlo, že právě v tom asi je kámen úrazu.

Tak jsem matematicky i empricky osvětlil, co to dělá. Projde to `j` od 2 do odmocniny `i`. Tečka. Podle tebe jasná forma zakrývá význam nejasné formy, neumím upravovat nerovnice a jakásí ptákovina s nulou. OK

Nikomu necpu, že to musí být jinak, ale podlě mě je nesmysl psát neintuitivně, když to jde napsat jasně. Nejjasnější vyjádření odmocniny je odmocnina. 

for (j = 2; j <= sqrt(i); j++)

Samozřejmě je odmocnina výpočetně náročnější, ale stačí ji spočítat jen jednou a celý ten algoritmus může být efektivnější a blabla, ale o to původnímu autorovi zjevně nešlo, když se neobtežoval ani s breakem při zjištění výsledku.

gna
Java › Kod prvocisla
24. 10. 2021   #388830

#15 Kit
Já jsem to myslel ironicky   

gna
Java › Kod prvocisla
24. 10. 2021   #388828

Mně nějak nenapadá, jak jasně vyjádřit, že to zkouší jen čísla do odmocniny...   

gna
Java › Kod prvocisla
24. 10. 2021   #388826

Neříkám, že tam má být odmocňování. Jen vysvětluju, co to dělá.

A protože je evidentně strašný problém to pochopit, tak je nesmysl to dělat takhle "krypticky".

gna
Java › Kod prvocisla
22. 10. 2021   #388823

Chtěl jsi to matematicky zdůvodnit. Neříkám, že to má přepsat na násobení, jen jsem na tom ukázal, že ten limit je druhá odmocnina. Na tom není co řešit.

Žádná definice s i/j neexistuje. Je to neintuitivní způsob, jak nakonec narazit na tu odmocninu. Představ si to pro číslo 100: 

2 <= 50
3 <= 33
4 <= 25
...
10 <= 10
konec

Bum:

for (j = 2; j <= sqrt(i); j++)
gna
Java › Kod prvocisla
22. 10. 2021   #388812

Jede to dokud je "j <= i/j". Nebo naopak: skončí to, když "j*j > i". Takže limit pro `j` je druhá odmocnina `i`. Proč to tak nenapsat rovnou?

gna
Java › Kod prvocisla
22. 10. 2021   #388810

Pokud jde konkrétně o to "i/j", tak to je nesmysl. Nebo ono to teda "nakonec zafunguje", ale je nesmyl to formulovat takhle.

gna
.NET › int vysledek = n
21. 10. 2021   #388800

Asi už jsi pár přiřazení viděl. Viděl jsi někde "3 = i", nebo spíš "i = 3". Navíc je to věc, na kterou se nemusíš ptát, prostě si to zkus.

Samozřejmě má pravdu on. Je to "kam = co".

gna
Java › Kod prvocisla
21. 10. 2021   #388795

Nevím, co myslíš tím, že se podělí dvěma a upřesní modulem.

Modulo je zbytek po celočíselném dělení. Takže to zkouší jestli hodnota `i` je beze zbytku dělitelná hodnotou `j`. A zkouší to pro všechna `j` od 2 do i/j. Takže j++ tam samozřejmě má smysl.

gna
.NET › Problém s delegátem
12. 10. 2021   #388712

V principu to máš dobře, jen ten Join si neporadí s Array. Třeba takhle to funguje:

return String.Join(" ", (object[])a);

Nebo nepoužívej Array.

gna
MySQL › Rozdíl minima a maxima v kaž…
3. 10. 2021   #388696

Záznamy jde seskupit pomocí GROUP BY (a ty agregační funkce pak počítají v rámci každé skupiny).

Takže možná nějak takhle (nezkoušeno): 

SELECT ...
FROM ...
WHERE EXTRACT(YEAR_MONTH FROM created) > EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 1 YEAR)
GROUP BY EXTRACT(YEAR_MONTH FROM created)
gna
Python › Proměnný počet argumentů fun…
27. 9. 2021   #388680

Při definici funkce jde definovat výchozí hodnoty parametrů. Takové parametry pak není potřeba uvádět a v tom případě budou mít tu výchozí hodnotu.

def search(name=None, age=None):
    if name is not None:
        neco s name
    if age is not None:
        neco s age

Nebo jde parametr označit dvěmi hvězdičkami a pak to bude dict se všemi (pojmenovanými a explicitně nedefinovanými) parametry:

def search(**kwargs):
    kwargs["name"]
    kwargs.get("name")
    ...
gna
OS - GNU / Linux › Instalace Wine
26. 9. 2021   #388674

To nevypadá na Fedoru. Místo dnf zkus yum a celkově návody na instalaci Wine/.NET/Xserver pro RHEL. (Ale  moc bych od toho nečekal, možná spíš rovnou Mono).

gna
.NET › Window server - cloud
26. 9. 2021   #388673

Myslel jsem netstat, ale vypadlo mi z toho t. Jestli ta tvoje appka používá MySQL, které jsi nainstaloval až teď, tak si nedovedu představit, jak by bez toho mohla fungovat a k čemu se chceš připojovat.

gna
Java › Nefufngující kód - čteníí xlsx
26. 9. 2021   #388672

POI máš nainstalovaný a naimportovaný tak, jak je to v tom videu?

gna
.NET › Window server - cloud
25. 9. 2021   #388667

To by mělo stačit, aby ti provoz z Internetu prošel na ten server. A na něm ti pravděpodobně běží ještě Windows Firewall, který defaultně všechna příchozí spojení blokuje. Tak to povol ještě v něm (nebo ho úplně vypni).

A nakonec se ujisti, že ta tvoje appka přijímá spojení odkudkoliv. Třeba když dáš v příkazovém řádku "nestat -a", tak bys měl vidět něco jako "0.0.0.0:2500 LISTENING".

gna
.NET › Window server - cloud
24. 9. 2021   #388661

Tak je to v Security groups. Nevím teda jak ve Free, ale asi to bude podobně.

gna
.NET › Window server - cloud
24. 9. 2021   #388660

Firewal musíš nastavit primárně v nastavení toho serveru. A až pak případně ještě v tom hostovaném systému, pokud je to potřeba.

Nevzpomínám si kde to tam je, ale mám pocit, že to není označeno jako Firewall, ale jako nějaké Policies, nebo tak nějak.

gna
.NET › Window server - cloud
23. 9. 2021   #388653

Vyšší verze potřebuješ jen když chceš fungovat jako server. Klientská část by ve Windows Home měla být.

gna
.NET › Window server - cloud
22. 9. 2021   #388649

Nevím, jak teď, ale Amazon Free Tier kdysi býval docela použitelný.

gna
Python › Typ hodnoty uložené ve Třídě
22. 9. 2021   #388648

To přiřazení jsem teda napsal zjednodušeně, samozřejmě to můžeš rozepsat, tak ja to zkoušíš teď.

genint = GenClass[int]()
genint: GenClass[int] = GenClass()
genint: GenClass[int] = GenClass[int]()
gna
Python › Typ hodnoty uložené ve Třídě
22. 9. 2021   #388647

Jestli jsou v té třídě prostě inty, tak ty otypuješ jako inty; a typ instance třídy pak bude jen ta třída. 

class IntClass:
    def __init__(self) -> None:
        self.values: list[int] = []
        
    def add(self, value: int) -> None:
        self.values.append(value)


inty = IntClass()
inty.add(3)    # ok
inty.add('a')  # err

Pokud je to generická třída, tak ji tak musíš definovat a pak můžeš určovat konkrétní typ. 

from typing import Generic, TypeVar

T = TypeVar('T')


class GenClass(Generic[T]):
    def __init__(self) -> None:
        self.values: list[T] = []
        
    def add(self, value: T) -> None:
        self.values.append(value)


genint = GenClass[int]()
genint.add(3)    # ok
genint.add('a')  # err

genstr = GenClass[str]()
genstr.add('a')  # ok
genstr.add(3)    # err
gna
.NET › Dynamické rozložení ovládací…
16. 9. 2021   #388623

#21 JerryM
Ty a tvoje hormady odkazů. Nic z těch enginů nevyužije a o Vulkan nezavadí ani náhodou, ale to ty nemůžeš vědět, když nikdy ani netušíš o čem meleš.

gna
.NET › Hashování hesla
15. 9. 2021   #388598

Jen na serveru. Hashování u klienta nemá žádný smysl.

gna
.NET › C# SQL Databáze - INNER JOIN
9. 9. 2021   #388571

Tak jsem se tím trochu prokousal a ty položky asi budou typu DataRow, který nedefinuje .Equals, takže je asi budeš must porovnat sám. Nebo třeba v databázi definovat constraint na unikátnost.

gna
.NET › C# SQL Databáze - INNER JOIN
9. 9. 2021   #388570

Index tě vůbec nezajímá. Na to už jsi přišel, že je pořadové číslo položky. Jde o to co dát toho .Contains.

PrvniListbox.Items.Contains(DruhyListbox.SelectedItem)

V Items hledat Item by dávalo smysl, ale nevím jak to funguje. Jinak samozřejmě můžeš ty položky projít a porovnat sám, jak chceš.

gna
.NET › C# SQL Databáze - INNER JOIN
9. 9. 2021   #388568

A to SelectedItem jsi zkusil?

gna
.NET › C# SQL Databáze - INNER JOIN
9. 9. 2021   #388565

Nevím, jak funguje ten .Contains (resp. co je tam za objekty a jak implementují .Equals).

Zkusil bych SelectedItem místo SelectedValue.

gna
Python › Nejednoznačné chování kódu v…
9. 9. 2021   #388562

Jediný efekt toho printu je asi v tom, že je poměrně pomalý. Ale myslím, že není problém číst plnou rychlostí.

To, co se mi nelíbí je, že pro každé čtení vytváříš novou instanci MCP3008. Netuším, jak je ta třída implementovaná, ale v tom by mohl být problém. Tou pauzou v printu možná dáš Pythonu/systému čas něco pouklízet.

channel0 = MCP3008(channel=0)
channel1 = MCP3008(channel=1)

funkce:
    cyklus:
        val0 = channel0.value
        val1 = channel1.value
gna
Regulární výrazy › Získávání informací z webu
8. 9. 2021   #388558

#3 fix
PHP nemusíš spouštět přes web server.

gna
.NET › C# SQL Databáze - INNER JOIN
7. 9. 2021   #388555

#5 Learnt
To zni, jako bys čekal, že to nějak definuje vazbu s tím ListBoxem. Ne, to je řada příkazů, které se provedou a hotovo.

Pokud při změně výběru chceš něco provést, tak můžeš definovat funkci, která se při té události spustí.

Podle dokumentace má ListBox události SelectedIndexChanged a SelectedValueChanged. Na to by to mělo jít napíchnout.

gna
.NET › C# SQL Databáze - INNER JOIN
7. 9. 2021   #388553

Mezi b.MestoId a WHERE nemáš mezeru.

gna
.NET › Otevření souboru a zároveň u…
1. 9. 2021   #388524

#7 Amik98
No tak tam nedáš string natvrdo, ale to co uživatel vybral, ne? Máš to při načítání a pak při ukládání najednou nevíš?

private void button13_Click(object sender, EventArgs e)
{
    OpenFileDialog dialog = new OpenFileDialog();
    if (dialog.ShowDialog() == DialogResult.OK)
    { 
        richTextBox1.Text = File.ReadAllText(dialog.FileName);
    }
}

private void button14_Click(object sender, EventArgs e)
{
    // asi budeš chtít upravit některé vlastnosti toho dialogu
    // viz dokumentace
    SaveFileDialog dialog = new SaveFileDialog();
    if (dialog.ShowDialog() == DialogResult.OK)
    {
        File.AppendAllText(dialog.FileName, richTextBox1.Text);
    }
}
gna
.NET › Otevření souboru a zároveň u…
1. 9. 2021   #388517

Jako jak tam máš OpenFileDialog pro otevření, tak chceš variantu pro uložení? To je SaveFileDialog.

gna
.NET › Otevření souboru a zároveň u…
1. 9. 2021   #388515

Není mi jasné, na co se ptáš a o co se v tom kódu pokoušíš. Opakem ReadAllText je WriteAllText.

richTextBox1.Text = File.ReadAllText(soubor);
...
File.WriteAllText(soubor, richTextBox1.Text);
gna
Offtopic › Kolejné :)
30. 8. 2021   #388499

#4 fix
Koukám, že té ekonomice rozumíš asi tak stejně jako programování.

gna
C / C++ › C# výpis čísel dělitelné urč…
28. 8. 2021   #388492

Operátor += je přičítání k aktuální hodnotě (v připadě stringu sčítání znamená spojování). 

x += y;
// je vlastně jen zkratka pro:
x = x + y;

Ten text má jen jednu hodnotu, ale postupně se mění jako "to co tam je" + "přidat něco nového".

gna
C / C++ › C# výpis čísel dělitelné urč…
28. 8. 2021   #388490

   

int a = Convert.ToInt32(textBoxA.Text);
int b = Convert.ToInt32(textBoxB.Text);
...
int delitel = Convert.ToInt32(textBoxDelitel.Text);

textBoxVysledek.Text = "";
if (a % delitel == 0) textBoxVysledek.Text += a + " ";
if (b % delitel == 0) textBoxVysledek.Text += b + " ";
...

gna
.NET › C# řádek s nejnižším součtem
20. 8. 2021   #388471

Obecně minimum najdeš tak, že projdeš všechny prvky a pamatuješ si ten nejmenší.

minimum = prvniHodnota;
projit_zbyvajici_hodnoty {
  if (hodnota < minimum) {
    minimum = hodnota;
  }
}

A nebo cokoliv jiného tě napadne. Možná máš tu matici seřaditelnou, nebo něco: 

List<List<int>> matice ...;
List<int> minradek = matice.OrderBy(radek => radek.Sum()).First();
gna
.NET › Nesmyslný error
13. 8. 2021   #388421

Lobby je pravděpodobně privátní třída, tak ji nemůžeš vracet z veřejné metody. Udělej findLobby jako private , nebo Lobby jako public.

gna
.NET › libMPSSE.dll - opakované vol…
13. 8. 2021   #388409

Pokud je to toto, tak by opakované volání nemělo nic rozbít. Ale nespoléhal bych na implementační detaily a prostě zajistil volání jen jednou.

gna
JavaScript, AJAX, jQuery › Spouštění funkce vícekrát
13. 8. 2021   #388396

#5 fix 

$(datepicker).datepicker();

Ale na to se vykašli a udělej to jak psal peter. Přidej těm elementům class="datepicker" a použij selektor ".datepicker".

gna
.NET › C# ukazatelé
10. 8. 2021   #388366

Pokud není operátor == přetížený, tak dělá to, co chceš.

Stoprocentní způsob je Object.ReferenceEquals(obj1, obj2).

gna
.NET › Filozofie komunikace klient…
9. 8. 2021   #388351

   

list.Add(neco);
ListChanged(list);
gna
.NET › Zamíchání kolekce
7. 8. 2021   #388336

#5 JerryM
Náhodné zamíchání kolekce je naprosto běžná věc. Což ty samozřejmě nemůžeš vědět.

gna
.NET › Zamíchání kolekce
7. 8. 2021   #388334

Já C# až tak do hloubky neznám a nevím, co by na tom mohlo nefungovat. Jakou chybu ti to hlásí?

gna
.NET › Zamíchání kolekce
6. 8. 2021   #388332

Obecně se míchání dělá tak, že projdeš všechny prvky a prohodíš je s jiným náhodným prvkem ze zbytku.

S LINQ můžeš třeba prvky seřadit podle náhodné hodnoty.

Random random = new Random();
randomized = original.OrderBy(x => random.Next()).ToList();
gna
.NET › Internetová komunikace - pro…
21. 7. 2021   #388234

Statická proměnná existuje jenom jedna jediná, pořád. Instanční je samostatná pro každou instanci dané třídy. Takže třeba můžeš mít třídu Osoba a každá instance bude mít vlastní jméno a můžeš vytvořit Honzíka a Pepíka.

Ale když budeš z více vláken manipulovat s jednou osobou, tak pořád může dojít k souběhu.

Pokud nepotřebuješ ty proměnné (hodnoty) nějak "držet", tak jsem měl na mysli vyloženě lokální proměnné v metodě. Ty se vytvářejí při každém vyvolání metody (takže se vlákna nemají o co prát) a existují jen po dobu provádění té metody (s tím, že .NET pohlídá, když tu hodnotu někam předáš, tak se neztratí, ale smaže se, až když se opravu nikde nepoužívá)

void Metoda()
{
    TcpClient client = ...;
    NetworkStream networkStream = ...;
    ...
}
gna
.NET › Internetová komunikace - pro…
21. 7. 2021   #388232

No, máš tam proměnné jako atributy třídy, takže mohlo dojít k souběhu a to jsi vyřešil tim mutexem.

Nevím, jak máš zbytek kódu, ale tenhle fragment vypadá, že ty proměnné nikde jinde nepotřebuješ, takže by taky šlo je mít jako lokální proměnné v té metodě a různá vlákna by se o ně neprala.

gna
.NET › Internetová komunikace - pro…
21. 7. 2021   #388230

Ještě je potřeba zajistit, aby se třeba při vyjímce ten zámek odemknul. To ta varianta s lock dělá automaticky (nepoužívám C# aktivně, tak nevím, co jsem v tom příkladu napsal špatně). Jinak to musíš udělat sám (try-finally)

Pak ještě bych zamykal jen to co je opravdu potřeba. Tj. tu serializaci dal mimo zamčenou sekci.

A pak hlavně, když pokaždé otevíráš nové spojení, tak není potřeba nic zamykat. Tu synchronizaci bys potřeboval, pokud máš jeden "přetrvávající" socket a může ti na něj sahat více vláken. Tj. něco jako toto: 

void Connect() {
    socketLock.WaitOne();
    try {
        if (networkStream != null)
            throw new AlreadyConnected();

        client = ...;
        networkStream = ...;
    } finally {
        socketLock.ReleaseMutex();
    }
}

void Disconnect() {
    socketLock.WaitOne();
    try {
        if (networkStream == null)
            throw new NotConnected();

        networkStream.Close();
        networkStream = null;
        client.Close();
        client = null;
    } finally {
        socketLock.ReleaseMutex();
    }
}

void Communicate() {
    SerializeRequest();

    socketLock.WaitOne();
    try {
        if (networkStream == null)
            throw new NotConnected();

        networkStream.Write();
        networkStream.Read();
    } finally {
        socketLock.ReleaseMutex();
    }

    UnserializeResponse();
}
gna
.NET › Internetová komunikace - pro…
21. 7. 2021   #388228

Tomu se říká synchronizace a je potřeba ji použít u všeho na co "saháš" z více vláken.

Základem je zámek (mutex), který jde zamknout jen jednou a další pokus o zamčení se "zasekne", dokud ho původní "držitel" neodemkne. A pak to může být ještě složitější, ale s tímhle si vystačíš hodně dlouho.

V .NETu je na to třída Mutex:

private Mutex socketLock = new Mutex();
...
public void Metoda()
{
    socketLock.WaitOne()
    // tady je zamčeno
    // ...
    socketLock.ReleaseMutex()
    // tady už ne
}

A nebo klíčové slovo lock, které pro tebe asi bude vhodnější a pracuje s libovolným objektem: 

private object socketLock = new object();
...
public void Metoda()
{
    lock (socketLock)
    {
        // tady je zamčeno
        // ...
    }
    // tady už ne
}

Takže kolem všeho, co potřebuješ synchronizovat, přidáš zamykání. (Respektive ideálně implementaci komunikace budeš mít někde centralizovanou a jen jedna metoda bude potřebovat zámek.)

A logicky z toho vyplývá, že by bylo dobré ten zámek držet jen chvilinku, což při práci se sockety úplně nejde, ale budiž.

gna
C / C++ › Netbeans - rozdilne vysledky
19. 7. 2021   #388213

#11 Keyzio
To, že se stdout flushne při čtení ze stdin je asi implementačně závislé chování a standard to nevyžaduje. Takže to není úplně, že něco je správně a něco špatně. Pokud chceš mít jistotu, že se neodřádkovaný výstup vypíše, tak musíš použít explitní fflush nebo bufferovaní vypnout, jak psal Kit.

gna
C / C++ › Netbeans - rozdilne vysledky
18. 7. 2021   #388199

A vypíše to správně ten znak, který jsi zadal?

Ty příkazy nemůžou proběhnout v jiném pořadí. Při tom problému s bufferováním může dojít k tomu, že ti program visí ve scanfu, ale terminál ještě nevypsal výstup prvního printfu (ačkoliv už ho načetl do bufferu) a vypíše ho později (až bude mít více dat, nebo znak konce řádku, nebo program skončí, nebo něco).

Nevím jak NetBeans, ale různá IDE často neposkytují "terminál", ale jen zobrazují výstup programu a neumožňují zadávat vstup. A podle toho jak to mají udělané pak program čte vstup bůhvi odkud a ty ho nemůžeš zadat a donekonečna to visí ve scanfu, anebo je standardní vstup programu zavřený a scanf nic nenačte a okamžitě skončí s chybou. To druhé vypadá na tvůj případ.

gna
C / C++ › Pole s ukazateli na různé pr…
13. 7. 2021   #388109

#45 rjulius
Vždyť to říkám, každý je tu génius s miliónem variant řešení, ale jednoduchý dotaz na pointery nevyřeší nikdo.

Pointer skutečně je jen adresa, to jsi věděl. A můžeš ho libovolně přetypovat, to ses dozvěděl hned na začátku. JerryM tak nějak ze zásady nikdy netuší o čem je řeč a můžeš ho ignorovat, ostatní komentáře mi připadají přínosné.

gna
Příkazový řádek › Jak uložit výsledek operace…
8. 7. 2021   #388065

Nevím, jak v novějších verzích, ale kdysi dávno byl příkaz FOR jediný způsob, jak v baťáku zpracovat výstup jiného příkazu. Na trochu slušnější programování byl použitelný JScript, ale nevím, jestli to na Windows ještě existuje.

Každopádně je na všech podporovaných verzích Windows nainstalovaný PowerShell a ten by takové věci snad měl umět.

gna
.NET › Vhodný prvek na návrh deskto…
7. 7. 2021   #388051

To jsem jen nepochopil, jakou událost jsi myslel.

No, jsem na políčku 3, hodím 8, jdu na políčko 11. To je nějakého typu, někomu patří, mám nějaké možnosti nebo povinnosti. Ten kód musíš prostě napsat.

gna
.NET › Vhodný prvek na návrh deskto…
7. 7. 2021   #388049

Hele, takhle, já jsem hrál Monopoly asi dvakrát v životě a nepamatuji si, jak se to hraje. Předpokládám, že posun figurek by dělal program podle toho kolik hodíš na kostkách a není potřeba nic vybírat. Takže nepotřebuješ vstupní události z té desky. Klidně mě oprav.

Na té desce jsou jen obdélníky, to nakreslíš v kdečem :-)

gna
.NET › Vhodný prvek na návrh deskto…
7. 7. 2021   #388047

No prostě to, jak jdou ty políčka za sebou, jakého jsou typu a kdo na ních stojí bude nějaké pole objektů nebo něco. Ta zobrazená hrací deska tě v podstatě nezajímá.

gna
.NET › Vhodný prvek na návrh deskto…
7. 7. 2021   #388045

To záleží, jak to chceš dělat, ale rozložení té desky tě asi zajímá jen kvůli umisťování figurek. A to můžeš prostě třeba v kódu mít natvrdo souřadnice prostředku jednotlivých políček.

gna
.NET › Vhodný prvek na návrh deskto…
7. 7. 2021   #388043

Tu herní plochu udělej jako zobrazení předkresleného externího obrázku. Komponenta na to je myslím PictureBox.

gna
.NET › Vhodný prvek na návrh deskto…
6. 7. 2021   #388041

I kdybys to kreslil celé od A do Z, tak bys to dělal formou komponent/tříd a nakonec by to u deskové hry nebylo tolik práce.

Ujasni si jestli chceš tvořit hru, nebo herní engine. Já bych tipl to první, tak si prostě najdi už hotový engine. Třeba pro Godot (nebo cokoliv jiného) je na YouTube spousta tutoriálů a rychle budeš mít něco funkčního bez patlání se z programováním vnitřností.

gna
JavaScript, AJAX, jQuery › Okamžité zobrazenie vkladaný…
5. 7. 2021   #388034

Akorát mám pocit, že ten AJAX nepotřebuješ. 

var hodnota = input.value;
document.getElementById('vysledek').innerText = '10 + ' + hodnota + ' = ' + (10 + hodnota);
gna
JavaScript, AJAX, jQuery › Okamžité zobrazenie vkladaný…
5. 7. 2021   #388032

V těch onXXX atributech můžeš zadat JavaScriptový kód, který se při dané události má provést. Podobně jako už teď máš onkeypress. AJAX je pak v JavaScriptu načtení dat ze serveru.

<script>
function zpracujPrispevek(input, idVysledek) {
    var hodnota = input.value;
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (this.readyState == 4) {
            document.getElementById(idVysledek).innerText = this.responseText;
        }
    }
    request.open("GET", "prispevek.php?hodnota=" + encodeURIComponent(hodnota));
    request.send();
}
</script>
<input oninput="zpracujPrispevek(this, 'vysledek')">
<div id="vysledek">---</div>

prispevek.php:

<?php
if (isset($_REQUEST['hodnota'])) {
    echo 'Zpracoval jsem prispevek: ' . $_REQUEST['hodnota'];
}
?>
gna
Python › Shutil.copy - nefunguje v exe
30. 6. 2021   #388028

Obecně shutil v pyinstalleru funguje a shutil.copy při chybě háže vyjímku.

Takže buď se to zkopírovalo jinam, nebo se to nezkopírovalo a měl bys vidět chybový výpis. (pokud nemáš vypnutou konzoli nebo ten kód volaný někde, kde se vyjímky chytají a ignorují)

gna
Python › Shutil.copy - nefunguje v exe
29. 6. 2021   #388024

Co znamená, že přestane fungovat? Jakou chybu to hodí?

Co je zač ta funkce _getutempdir a jakou hodnotu ti vrací? Já jsem stejně pojmenovanou funkci našel na stackoverflow a ta je úplná krávovina.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý