Probel se zapisem do souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Probel se zapisem do souboru – C / C++ – Fórum – Programujte.comProbel se zapisem do souboru – C / C++ – Fórum – Programujte.com

 

LJ10240
Stálý člen
7. 6. 2009   #1
-
0
-

char get[MAX_PATH];
LRESULT polozek=SendDlgItemMessage(hwnd,IDLBplaylist, LB_GETCOUNT, 0, 0);
ofstream foutp("timer2.dat");
for(int i=0;i<polozek;i++){
Item = SendDlgItemMessage(hwnd, IDLBplaylist, LB_GETTEXT, i, (LPARAM)(LPCTSTR) get);
foutp << get << "\n";
}foutp.close();
kdyz to zkompiluju, tak to nic nezapise do toho souboru, nevi nekdo prosim, cim to je?

Nahlásit jako SPAM
IP: 85.132.191.–
LJ10240
Stálý člen
7. 6. 2009   #2
-
0
-

Ono to funguje, ale pokud pred tim zavolam GetOpenFileName(&ofn) tak uz mam smulu a do souboru nic neulozim..
Pomozte mi prosim nekdo!

Nahlásit jako SPAM
IP: 85.132.191.–
dannyk0
Věrný člen
7. 6. 2009   #3
-
0
-

Tak ukaz cely kod vcetne otevreni souboru a dialogu.Chyba bude asi nekde tam (spatne navratove hodnoty?, spatny handle na soubor?).

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
LJ10240
Stálý člen
7. 6. 2009   #4
-
0
-

OPENFILENAME ofn;
char szFileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "*.mp3\0*.mp3\0*.wma\0*.wma\0*.wav\0*.wav\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;
ofn.lpstrDefExt = "mp3";

if(GetOpenFileName(&ofn))
{
SendDlgItemMessage(hwnd,IDLBplaylist,LB_ADDSTRING,0,(LPARAM)(LPCTSTR) szFileName);
}


a když pak v úplně jiné f-ci zavolám

ofstream foutp;
foutp.open("t2.dat", ios::out);
foutp << "text" << endl;
foutp.close();
tak se nic nezapíše, pokud to udělám před výběrem souboru, všechno je OK...

Nahlásit jako SPAM
IP: 85.132.191.–
dannyk0
Věrný člen
7. 6. 2009   #5
-
0
-

1, pro sizeof bych pouzil nazev struktury OPENFILENAME a ne promenou ofn. Nejsem si tedka jisty, jestli to nuluje spravnou velikost.
2, Zkontroluj, jestli se ti nevytvoril soubor t2.dat ve slozce, odkud si vyberes ten zvukovy soubor pomoci te funkce GetOpenFileName. Ono totiz tahle funkce meni aktualni pracovani adresar programu. To znamena, ze kdyz spustis ten kod pro zapis do soubor t2.dat, tak se ten soubor vytvori ve slozce s exe. Pokud ale zavolas GetOpenFileName dialog a pak kod na zapis do souboru, tak se s velkou pravdepodobnosti vytvori soubor t2.dat ve slozce, kde byl vybran soubor k otevreni.

Jinak tady mas muj kod pro otevirani dialogu:



/**
* Zobrazi dialog pro otevreni souboru.
*
* \param lpFile out - uklada cestu souboru
* \param hwndOwner ktere okno ho otevrelo
* \param exedll - urcuje,jaky typ souboru se bude vybirat (true - exe, false - dll)
* \return pokud se vybere soubor,tak true,jinak false
*/
BOOL OpenDialog(LPTSTR lpFile, HWND hwndOwner,bool exedll)
{
OPENFILENAME ofn;
TCHAR chFile[_MAX_PATH];
lstrcpy(chFile, "");
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFile = chFile;
ofn.hwndOwner = hwndOwner;
ofn.nMaxFile = sizeof(chFile);

if (exedll)
{
ofn.lpstrFilter = TEXT("Soubory (*.EXE)\0*.exe\0");
} else {
ofn.lpstrFilter = TEXT("Soubory (*.DLL)\0*.dll\0");
}

ofn.nFilterIndex = 1;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if ( !GetOpenFileName(&ofn) )
return FALSE;
lstrcpy(lpFile, chFile);
return TRUE;
}

A tento kod ti zjisti aktualni adresar, ve kterem se nachazi spustene exe:


/**
* Vraci cestu slozky se spustenym programem a k teto ceste pripoji vybrany soubor.
* \param fileName - Nazev souboru, ktery se pripoji k retezci.
* \return - Vraci cestu (aktualne spustene exe + fileName -> napr. C:\Temp\neco.dll pokud je app.exe ve slozce C:\Temp)
*/
char* GetFilePathInCurrentDirectory(char *fileName) {
TCHAR appPath[_MAX_PATH];
GetModuleFileName(NULL,appPath,_MAX_PATH);
std::string currentDir(appPath);
size_t i = currentDir.rfind("\\", strlen(appPath));
currentDir.resize(i + 1);
currentDir.append(fileName);

ZeroMemory(appPath,strlen(appPath));
strcpy(appPath,currentDir.c_str());
return appPath;
}

Nepotrebne veci snad zvladnes dat pryc a upravit si to tak,jak bude potreba.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
LJ10240
Stálý člen
8. 6. 2009   #6
-
0
-

Moc diky - opravdu to ulozilo do ty slozky, ze ktery jsem si vybral pomoci toho dialogu nejaky soubor...
Opravdu jsi mi hodne pomohl (vcera jsem nad tim stravil asi 6 hodin..)

Nahlásit jako SPAM
IP: 85.132.191.–
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, 86 hostů

Podobná vlákna

Problémy se zápisem do db — založil kropac

Problemy se zapisem do db — založil silent

Problém se zápisem — založil cenda585

Problém se zápisem fopen — založil ProTom

Moderátoři diskuze

 

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