#7 MilanL
Však já neřikám, že to udělá za mě, já si pro to vytvořil vlastní třídy do který naplnuju data a ty chci právě uložit. Chtěl jsme to řešit že to napíšu vlastní format, ale když jsme se dočetl o serializaci tak se mi ve výsledku ulevilo, protože to udělá vše za mě jen si to vyčtu zpět do tříd a ty pak budu samosebou procházet a nastavovat všechny promenný. Jen sem prostě hledal nejlepší způsob jak uložit data... Vyřešil jsem to jinak, vytvořil jsem si spec. soubor že kterýho budu načítat informace do load menu a podle výběru si přiřadím file a ten načtu.
Příspěvky odeslané z IP adresy 89.190.91.–
#5 MilanL
Jedná se o ukládání progresu hry (Unity3D), tzv pozice objektů, stavy, jejich parametry, a tak dále. A hlavičku chci mít jako info do menu při zobrazování savů (gametime, datetime, úroveň a tak dále) prostě jen informace o progresu a dále mít v tom ten zbytek a že toho nebude málo.
Zdravím.
Rád bych zde poprosil o pomoc při řešení úlohy. Nevím jak docílit toho, aby mne program vypsal kolikátou v pořadí určitou (nejnižší) hodnotu našel.
Mám následující zadání:
Uživatel bude zadávat postupně teploty s přesností na desetinu stupně. Zadávání ukončí zadáním teploty přesahující 100° (tato teplota je ale také součástí dat!). Program zobrazí zadané teploty, minimální teplotu a kolikátá v pořadí tato teplota byla. A také průměr teplot.
Až na již zmíněný problém se zdá, že program funguje správně. Za případné nejasnosti, zmatky či chyby v kódu se předem omlouvám. Jsem začátečník. Úloha níže se má řešit pomocí. Do while s podmínkou na konci.
Jediné co se mi podařilo zjistit je, že pokud teploty zadávám postupně od nejvyšší po nejnižší tak program správně vypíše kolikátou v pořadí ji našel. To samé platí pokud postupně zadám nejnižší teplotu jako první či druhou v pořadí. Ovšem pokud vypíšu náhodně například 10 různých teplot, tak program není schopný správně určit v kolikátém pořadí nejnižší teplotu našel.
Za případné rady Vám předem děkuji.
Sub main()
Dim teploty As Single, minimalni_teplota As Single, teplota_sum As Single, prumer As Single
Dim poradi As Byte
Dim teploty_soucet as integer
Dim zahlavi As String
zahlavi = "#" + Chr(9) + "Teplota" + " (°)"
teploty_soucet = 0
minimalni_teplota = 100
teplota_sum = 0
Do
teploty = InputBox("Zadej teplotu vody (°)")
teploty_soucet = teploty_soucet + teploty
teplota_sum = teplota_sum + 1
zahlavi = zahlavi + Chr(10) + Str(teplota_sum) + Chr(9) + Str(teploty)
If teploty < minimalni_teplota Then
minimalni_teplota = teploty
poradi = poradi + 1
End If
Loop While teploty <= 100
prumer = teploty_soucet / teplota_sum
MsgBox zahlavi + Chr(10) + Chr(10) + "Nejnizsi teplota vody je" + Str(minimalni_teplota) + "°" + Chr(10) + "Minimalni teplota je" + Str(poradi) + " v poradi." + Chr(10) + "Prumerna teplota vody je:" + Str(prumer) + "°"
End Sub
#21 jerry
Já pořád nechápu co na tom nechápeš, psal jsem to nahoře jak to funguje, ale pro tebe ZNOVU...
Mam x desitek tisíc bitmap které si po 1 načítám do Bitmap objektu s tím, že mám jeden BinaryWriter(memorystream) a postupně ty bitmapy napisuju do binarywriteru ... kde na konci zípisu jednotlivé bitmapy vyprázdním bitmapu (= null) a v dalším cyklu opět načtu a takhle dokola s tím, že až doběhne poslední bitmapa tak se zapíše se .WriteTo(Filestream) a tím se vytvoří soubor o velikosti xmb (v mem případě něco okolo 300mb)...Už se chápem?
Nejsem začátečník jak si myslíš. To, že C# není muj hlavní jazyk je věc durhá, to, že jsme chtěl vědět pouze duvody proč to dělá, neznamená, že ten postup kterým to je napsaný je špatně! Proto hledám nějakou alternativu i jak by se to dalo jinak udělat a napadlo mě ten soubor vytvořit čistě na začátku a pak co bitmapa to zápis do souboru na konec.
Jak už jsem i psal, žen kod jsme nepsal přímo já, ale je převzat a já ho pouze upravuju pro vlastní potřeby, kde jsem už vyřešil i neskutečný využívání paměti (dřív se bitmapy načítaly, ale zustavaly neuvolněný, takže se to docela krásně dostalo s přehledem i na 2gb využití, kde teď to jede na 300mb po mých úpravách)
Chápeš, že já nenačítám do pamětí 350mb soubor ale čtu části souboru nebo přímo obrázek? Tzv si že souboru načtu jenom tu jednu bitmapu kterou potřbeuju a tu přeuložím zatím jen do memorystreamu kde na KONCI ten stream celej uložím.
NIkde jsem nepsal o 5Gb ale o cca 512mb ... A na to se celou dobu i ptám, proč mi nejde uložit do paměti 500mb i na 32bit systému, a napsal mi to gna a to mi stačí jako vysvětlení. Nepotřebuju rozsáhle teorie jak a co, sám vím dobře co potřebuju, to, že jsem se tu zeptal neni přece duvod mě tu urážet že jsme začátečník... Kdyby k tomu nebyl určitý postup jakl se to má ukládat tak to udělám úplně jinak a podle sebe, bohužel musí to mít tuhle strukturu tak s tím nic nenadělám.
PS. Vyvýjím pod 32bit a ne není to psaný pro 64bit, jen sem hledal duvod proč to dělá.
#22 gna
Už jsem to psal, postup ukládání je takový jaký má být, pouze upravuju a přemýšlím jak by se to dalo zlepšit.
#8 jerry
Jasně neumím programovat :))))) To, že se tu zeptám na důvody a jedinej kdo tu začal vyjíždět jsi byl ty. Oplátka stejnou mincí ...
Spamuj si jinde tady to nikoho nezajímá.
PS. Neukládám si bitmapy ale načítám, který právě v určitý struktuře naplnuju do bw, psal jsme to nahoře pokud neumíš číst. Ale ty nečteš vše, jen to co se ti hodi na hate :)
#5 jerry
Určitě mužu na 32bitu spustit 64bit ;) Pokud ses chtěl vyjádřit negativně jdi si kámošema co ti tohle trpěj a nevotravuj tady ... btw nastavíš velikost binary writeru dopředu aby se nezdvojnásoboval jakmile přeteče?
Jestli jsem se přepsal a tobě to vadí tak se jdi projevovat jinam, ostatní tu radí nemají připomínky a tvuj příspěvěk? Nulová hodnota.
#6 hlucheucho
Bohužel máš asi pravdu, snažím se co nejvíce eliminovat zůstavání objektu v paměti (jsme zvyklej uvolnovat pamět tak jak potřebuju já z delphi)...
Já vlastně načítám postupně x desítek tisíc bitmap a zapisuju do souboru podle určitý struktury. A jak řikáš, bordel tam může díky tomu zůstavat, spíš jestli to nejde nějak oblafnout aby to uvolnilo pamět hned.
#3 gna
No jasný to jsem nějak pochopil, že se to do paměti prostě nikam nevejde, ale jakej je rozdíl mezi konzolovou aplikaci a winformem, že jakmile to zavolám z winform tak automaticky to klekne, ale z konzole je to v pořádku? To se mi prostě nezdá že by winform alokoval pamět tak hrozně že se to prostě s prominutím posere.
Už takhle jsem to zredukoval protože si to ještě ukádalo do cache každou bitmapu i po zapsání ... Takže aspon že tohle jsem vyřešil vyprazdnováním a nedostanu se (RAM využítí) nad 350mb...
Když jsi to už načnul, jak u binarywriteru dopředu naalokuju pamět? protože +- vím kolik jí dohromady bude a vím, že to určitě 350000000 nepřesáhne ...
Napadlo mě to udělat tak, že bych to každých třeba 50mb vyprazdnoval tak že bych zapsal do souboru a pak zapsal na konec souboru další data, ale jelikož tento kod který právě zapisuje tak nejsem autor a jenom ho upravuji tak netuším zda by to mělo nebo nemělo vliv na výslednou funkčnost.