Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - nosferatus

Stran: [1]
1
Hardware / Dlouho trvá start systému
« kdy: 28. 07. 2015, 09:29:34 »
Mám dva disky a na obou to samé. Deska 990FXa-GD80 s UEFI BIOSEM. Disky jsou na oddílů je jich tam na každém asi tak 20. Na prvním oddílu je systém. Včera jsem tam měl jen ten první, nainstaloval jsem tam Windows XP. Start a restart v pořádku. Pak jsem doinstaloval ovladače chipsetu apod. V noci jsem to vypnul, dosadil druhý disk a ráno zapnu a PC nenajíždí (detekce disků trvá dlouho, ani do BIOSu nejde najet).

Přitom zkušenost s druhým diskem je tato: dělalo to podobně, ale najelo asi po 5-10 minutách. Pak se to nějak záhadně samo opravilo a po restartu už disk najížděl normálně. To bylo asi tak před 14 dnama. Nyní po včerejšku, viz první odstavec, zapnu a nenajíždí. Nemá smysl čekat 20-30 minut nebo jak dlouho. Tak jsem to vypnul, odpojil disky, najel do BIOSU, dal jsem load defaults, připojil první disk, nepomohl. Zkouším druhý taky najíždí dlouho ale rozjede se asi po 5 minutách.

Čím myslíte že by to mohlo být? Hádám že je to zas dočasné, ale nevím co musím udělat pro to aby najížděl normálně. Projevuje se to tak, že nejdříve svítí červená kontrolka HDD celou dobu občas svítí intenzivněji. Čekám dokud nezhasne. To jsem poprvé čekal a myslím že zhasla, ale nic se nedělo. Když jsem pak zkoušel ten druhý disk samostatně, tak zhasla a pak se rozsvítila a slyšel jsem že data se načítají a OS se načítá a pak jsem najel. V případě toho prvního to buď trvá moc dlouho nebo to nepomáhá vůbec.

2
Zdravím, mám takový menší problém. Zazálohoval jsem si oddíl s Windows XP oddílem na prvním disku. Pak jsem přerozdělil celou partition table. Když jsem chtěl oddíl obnovit a porovnal jsem velikosti dostal jsem toto:

aktuální velikost oddílu: 9 663 672 320 bytů (vytvořeno v G-parted)
správná velikost má být:  9 663 676 416 bytů (tj. 9*1024)
záloha má:        9 664 667 648 bytů (přitom oddíl byl kdysi vytvořen taky v G-parted a měl mít 9*1024 bytů)

Z toho vyplývá, že záloha je o něco větší. Dá se obnovit záloha tak, aby se tam vešla? Jak zadat specifikace bs a count?
Zkoušel jsem toto:

Kód: [Vybrat]
dd if=L:\bottom_C_XP1.dd of=\\.\x:  bs=1M count=9216
9216+0 records in
9215+2 records out

A nevím co znamenají ty čísla hlavně +0 a +2? Vím že když by se to povedlo tak by tam bylo něco jako 9216+0 u obou.
Když teď kliknu na X: tak mi to píše hlášku že disketa není naformátovaná a nabízí možnost naformátovat oddíl (oddíl je typu raw).

3
Distribuce / Mageia 4.1 disk space requirements
« kdy: 16. 07. 2015, 19:31:45 »
Nevíte kolik místa je třeba na instalaci Mageia 4.1? Mám jedno DVD 64 bitovou verzi a rozmýšlím se že bych ji zkusil spolu s Windowsem, jen nevím jestli mi vyjde místo.

4
Vývoj / Měnitelná šířka comboboxu (VS)
« kdy: 05. 07. 2015, 17:54:46 »
Mám formulář ve kterém mám hodně combo boxů a aby se mi vešli na stránky tak jim potřebuju nastavit co nejmenší velikost, ale když na ně kliknu aby se rozbalil seznam položek tak aby byly vidět, tedy aby se automaticky přizpůsobyla šířka listboxu. Víte jak na to? Potřebuju to pro Visual Studio C++ 2010 Express.

5
Vývoj / Výběr listboxu v C++ Visual Studio
« kdy: 03. 07. 2015, 21:50:07 »
Visual Studio C++ 2010

Mám listbox s názvy térénu. Informace o druzích indexů a názvů jsou uloženy v objektu esdata.terrains a ve struktuře, která se zpřístupnňuje přes pointer tn. tn->cnst obsahuje index položky, která se zrovna zpracovává (index=id).

Problém je ten že funkce funguje jen když listbox není uspořádaný pomocí LBS_SORT.

Tyto funkce jsou v programu původní:

Kód: [Vybrat]
LinkListBox_Fill(GetDlgItem(dialog, IDC_TR_ID), esdata.terrains.head());

Kód: [Vybrat]
void LinkListBox_Fill(HWND listbox, Link *list)
{
for (; list; list = list->next())
LinkListBox_Add(listbox, list);
}
LRESULT LinkListBox_Add(HWND listbox, const Link *link)
{
// Fill value into the list box:
WPARAM index = List_AddStringW(listbox, link->name());
// With AOK link->id() returns result qual to index
// Associate index with the list box:
List_SetItemData(listbox, index, link);
return index;
}

Když položky nejsou uspořádané a jsou správně zobrazené, tak když změním hodnotu x,y v edit boxu, pak
správný terén je vybrán.

Kontroloval jsem to a dostal jsem tyto hodnoty:

Když je index 5 (tn->cnst == 5) je asociován s názvem "leaves" a index 10 je asociován s "forest". index 0 je "grass 1".
To je vše OK.


Problém nastává když se snažím položky uspořádak, pak se nevybere správná položka.
Vytvořil jsem novou funkci na kontrolu hodnot:
Kód: [Vybrat]
LRESULT LinkListBox_Add_ByID(HWND listbox, const Link *link)
{
WPARAM indexByID = (WPARAM) link->id();
LPCWSTR name = link->name();
WPARAM index = List_AddStringW(listbox, name);
List_SetItemData(listbox, indexByID, link);
return indexByID;
}

Do kukátka přidám name, index a indexByID a když to ladím tak dostanu nesprávný index, ale indexByID je správně.

takže když indexByID == 5 pak name == "leaves", když indexByID == 10 pak name == "forest" ...
A toto je vpořádku. Proto teď používám tu novější funkci, ale přesto se nevybere ta správná položka.

Pokračuji v ladění. Zobrazí se okno, položky už jsou v listboxu vytvořené a seřazené abecedně.
Do edit boxu musím zadat x,y ... 1 a 1. Pak se zpracuje příslušná zpráva a zavolá metoda co updatuje údaje. A má se vybrat ta správná položka v listboxu:

Kód: [Vybrat]
SendDlgItemMessage(dialog, IDC_TR_ID, LB_SETCURSEL, tn->cnst, 0);
V tomto momentu tn->cnst čili hodnota indexu je správně: unsigned char 0x05 . To odpovádá "leaves".
Toto volání bylo provedeno z LoadMap() poté co jsem volal Map_UpdateCoord(dialog, id).

Následně se zobrazí okno a vidím že se zobrazila nesprávná položka. Ne "leaves" ale "dirt 1" což je myslím index 3.
Nemohu tedy přijít na to jak je to možné že se zobrazuje nesprávná položka. Protože jak jsem to ladil při vytváření toho seznamu, tak všechny hodnoty s tou novou funkcí jsou správné, takže snad se měl ten listbox vytvořit správně. Napadá někoho z vás kde by mohl být zakopaný pes?

6
Vývoj / Jak fungují taby C/C++
« kdy: 29. 06. 2015, 14:21:10 »
Nevím jaké slovo se pro to používá, anglicky tabs, česky možná ouška na které klikáte v okně když chcete přepnout ze stránky na stránku.
Snažím se porozumět zdrojovému kódu jednoho programu. Našel jsem místo ve kterém se vytváří jednotlivé stránky a okno, ale co mě zajímá je jak to funguje když kliknu na "ouško" a prvky v okně se přepíší těmi aktuálními prvky. Nemohu totiž v tom kódu najít nic co by toto překreslování provádělo. Je tam akorád jedna smyčka která se spouští jen jednou při iniciaci okna.

http://codepaste.net/184rjv

Našel jsem:

Kód: [Vybrat]
/* Each editor's property page proc (in order of Dialog ID). */
DLGPROC procs[NUM_PAGES] =
{
&IMsgsDlgProc,
&PlyDlgProc,
&VictDlgProc,
&DisDlgProc,
&MapDlgProc,
&UnitDlgProc,
&TrigDlgProc
};

Sheet_HandleCommand - handles all commands routed to property sheet

A funkce na vytváření sheetu:
Kód: [Vybrat]

/*
MakeSheet: Creates the main property sheet window.

Parameters:
HINSTANCE app: Handle to the application loading the sheet.

Note: Called once and only once by WinMain().
*/
HWND MakeSheet(HINSTANCE app)
{
PROPSHEETHEADER header;
HPROPSHEETPAGE pages[NUM_PAGES];
PROPSHEETPAGE pg; //used to create each page
HWND sheet;

//create pages

pg.dwSize = sizeof(PROPSHEETPAGE);
pg.dwFlags = PSP_DEFAULT;
pg.hInstance = app;

for (int i = 0; i < NUM_PAGES; i++)
{
pg.pszTemplate = MAKEINTRESOURCE(IDD_MSGS + i); //template IDs are in display order
pg.pfnDlgProc = procs[i];
pg.lParam = 0;
pages[i] = CreatePropertySheetPage(&pg);
}

//create sheet

header.dwSize = sizeof(header);
header.dwFlags = PSH_MODELESS | PSH_USECALLBACK |
PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP | PSH_USEICONID;
header.hwndParent = NULL;
header.hInstance = app;
header.pszIcon = MAKEINTRESOURCE(IDI_LOGO);
header.pszCaption = szTitle;
header.nPages = NUM_PAGES;
header.nStartPage = 0;
header.phpage = pages;

header.pfnCallback = &PropSheetProc;

sheet = (HWND)PropertySheet(&header);

//add status bar here (can't be done in PropertySheetProc)
propdata.statusbar = CreateWindow(STATUSCLASSNAME, welcome,
WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
sheet, (HMENU)IDS_MAIN, aokts, NULL);

return sheet;
}

Všechno by přitom mělo být v tomto souboru, protože je to hlavní soubor a ten obsahuje vše podstatné k hlavnímu oknu.

7
Vývoj / C/C++ Editování položky stromu ve Windows
« kdy: 27. 06. 2015, 13:38:10 »
Snažím se porozumět jednomu zdrojovému kódu a přijít na to kde vzniká chyba a jak ji vyřešit. Je to takový editor na scénáře ve hře. Je tam strom ve kterém si vytváříte jakoby "složky" (triggery) ve kterých jsou efekty a podmínky. Položku ve stromě mohu přejmenovat nebo zkopírovat a vložit jako nový trigger. Chyba která tam vzniká je, že při vložení jsou na konci divné nečítelné znaky, ne moc ale jen několik, třeba dva, ale jak zkopíruju už zkopírovanou položku tak se to násobí. A tak potřebuju poradit na co bych se měl zaměřit když hledám tu chybu.

trigger.cpp
http://paste.ofcode.org/sin2HzidN6eagza3s4sAt
triggeredit.cpp
http://p.ahkscript.org/?p=ee985b
Procházel jsem to laděním a narazil jsem jen na to jak se tam otevírá nebo kopíruje schránka. Takže nemohu přijít na to jak tu chybu opravit.

Stran: [1]