For Each chyba – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

For Each chyba – .NET – Fórum – Programujte.comFor Each chyba – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
malda
~ Anonymní uživatel
6 příspěvků
18. 7. 2011   #1
-
0
-

Nedávno jsem se pustil do programování her v C# podle knihy Programuje hry v jazyce C# od Toma Millera a mám tam problém. V jednom kódu jsem měl použít příkaz for each, jenže mi to vyhazuje chybu. Nejsem žádný odborník, takže prosím o radu.

Zde je kód, který mi ukazuje chybu. Zvýrazněné slova jsou ty, které mám podtržené v programu jako chybu. Používám Microsoft C# 2005 HomeEdition.

public HerniJadro(Framework f)
    {
        // uloží konstrukci
        sampleFramework = f;

        for each (AdapterInformation (ai in Manager.Adapters)
        {
            EnumAdapterInformation adapterInfo = new EnumAdapterInformation();
            // Uložíme nějaké informace.
            adapterInfo.AdapterOrdinal = (uint)ai.Adapter;      // pořadí
            adapterInfo.AdapterInformation = ai.Information;    // informace

            // Získáme seznam všech obrazových režimů daného adaptéru.
            // Vytvoříme dočasný seznam všech obrazových formátů daného adaptéru.
            adapterInfoFormatList.Clear();

            // Nyní zkontrolujeme, které formáty jsou podporovány.
            for(int i = 0; i < allowedFormats.Lenght; i++)
            {
                // Prověříme, zda každý podporovaný obrazový režim odpovídá tomuto formátu.
                for each(DisplayMode (dm in ai.SupportedDisplayModes[allowedFormats[i]])
                {
                    if ( (dm.Width < minimumWidth) || (dm.Height < minimumHeight) || (dm.Width > maximumWidth) || (dm.Height > maximumHeight) || (dm.RefreshRate < minimumRefresh) || (dm.RefreshRate > maximumRefresh))
                    {
                        continue;   // formát není správný
                    }

                    // Přidáme obrazový režim do seznamu.
                    adapterInfo.displayModeList.Add(dm);

                    // Přidáme tento formát do seznamu, pokud v něm ještě není.
                    if (!adapterFormatList.Add(dm.Format))
                    {
                        adapterFormatList.Add(currentAdapterMode.Format);
                    }
                }
            }
	}
Nahlásit jako SPAM
IP: 79.127.206.–
malda
~ Anonymní uživatel
6 příspěvků
18. 7. 2011   #2
-
0
-

Vždy za příkazem for each je chybné ai in. Toto je poslední verze po všech pokusech o zbavení tohoto problému.

Nahlásit jako SPAM
IP: 79.127.206.–
Peppy0
Stálý člen
18. 7. 2011   #3
-
+1
-
Zajímavé

Pre C# je tu fórum .NET.

Nahlásit jako SPAM
IP: 85.135.161.–
Qt, QML, C++
malda
~ Anonymní uživatel
6 příspěvků
18. 7. 2011   #4
-
0
-

A nejde to nějak přesunout?

Nahlásit jako SPAM
IP: 79.127.206.–
nervak0
Věrný člen
18. 7. 2011   #5
-
0
-

Tu knihu odlož a nejdřív se nauč základy C#. Máš tam nesmyslnou závorku.

(AdapterInformation ( ai in Manager.Adapters)

Nahlásit jako SPAM
IP: 213.211.51.–
malda
~ Anonymní uživatel
6 příspěvků
18. 7. 2011   #6
-
0
-

#5 nervak
Já vím, že tam je k ničemu. Ale nevypisuje mi to tolik chyb. Je to alespoň přehlednější. Základy C# náhodou mám a velké zkušenosti z Visual Basic.

Nahlásit jako SPAM
IP: 79.127.206.–
nervak0
Věrný člen
19. 7. 2011   #7
-
0
-

Ne k ničemu, je úplně špatně a základy ani zkušenosti evidentně nemáš a bez nich ty zastaralé a chybné příklady nerozchodíš.

Nahlásit jako SPAM
IP: 213.211.51.–
malda
~ Anonymní uživatel
6 příspěvků
20. 7. 2011   #8
-
0
-

Zkušenosti s C# opravdu nemám, proto jsem psal sem, ať mi poradíte. Ta závorka. Vím, že je špatně, ale mně to smazalo jednu chybu v ErrorListu, proto sem ji tam nechal. Je to přehlednější.

Zde je originál podle knihy. Něco jsem vypustil, to co jsem nechal pravděpodobně není důležité, ale co kdyby.

for each(AdapterInformation ai in Manger.Adapters)
{
	for(int i = 0; i < allowedFormats.Length; i++)
	{
		for each(DisplayMode dm in ai.SupportedDisplayModes[allowedFormats[i]]
		{
			if (("Porovnávání parametrů obrazů")
			adapterInfo.displayModeList.Add(dm);
		if (!adapterFormatList.Contains(dm.Format))
		{
			adapterFormatList.Add(dm.Format);
		}
	}
}
Nahlásit jako SPAM
IP: 79.127.206.–
Řešení
20. 7. 2011   #9
-
0
-
Vyřešeno Nejlepší odpověď

#8 malda
To, že někam plácneš závorku a tím zmizí chyba ještě neznamená, že jsi našel řešení.


  1. foreach se píše bez mezery.
  2. před "Porovnávání parametrů obrazů" nemá být závorka
  3. za [allowedFormats[i]] má být závorka
  4. není uzavřenej vnitřní foreach

Pak to bude syntakticky správně. Jestli i logicky, to netuším. Obecně se mi to celý nelíbí a jestli je to z knížky, tak je čas ji vyhodit / vrátit nebo tak něco.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
malda
~ Anonymní uživatel
6 příspěvků
20. 7. 2011   #10
-
0
-

Konečně někdo, kdo poradí. Tou závorkou jsem nechtěl přímo odstranit chybu, ale je v tom lepší přehled, Je lepší mít zobrazené 4 chyby než osm a vše to ukazuje stejně. Tato malá chybička oprava a děkuji. Něco tak obyčejného mně nenapadlo, jako že to má být dohromady.

Tím "Porovnávání parametrů obrazů" jsem si pouze ušetřil psaní a celý ten kód je v mém prvním příspěvku.
Tento druhý kód jsem psal na rychlo a toto je pouze nepozornost. To uzavírání jsem tam opravdu zapomněl napsat.

Nahlásit jako SPAM
IP: 79.127.206.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Podobná vlákna

Chyba C++ — založil AnonImouS

Chyba io — založil Tom@sQo

Chyba v IE — založil Spectator

Chyba — založil Racak94

 

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