Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



uložení souboru

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: uložení souboru

Autor: Wlk Wlezley

3:15:16 05.12.2010

Mě to funguje a hodně mi to pomohlo. Díky

Citovat příspěvek

 

Re: uložení souboru

Autor: JiriValerian

1:19:30 28.05.2010

[color=#008000]azet Napsal:
-------------------------------------------------------
> case IDM_SAVE:
> if(PopFileSaveDlg(hWnd, szFileName))
> if(!Ulozit(PathFindFileName(szFileName)))
> MessageBox(hWnd, TEXT("Uložení souboru se
> nezdařilo"), TEXT("Chyba při ukládání souboru"),
> MB_OK | MB_ICONWARNING);
> takhle mi to funguje, ale nevím proč.[/color]

Prostě máte buď něco vyhnilého v systému nebo máte nějakou jinou chybu někde
jinde v programu. Třeba hrabete někde v paměti a pak není divu, že se program
chová neočekávaně. Níže je kompletní zdroják příkladu, který mi funguje bez
problému. Vytvořte si nový prázdný projekt typu nativní Windows GUI aplikace
a pak si do něj přidejte jen tento zdroják a když si to přeložíte a bude
to fungovat bez problému, tak máte chybu někde jinde v tom vašem programu.
Pokud to fungovat nebude tak máte nejspíš něco vyhnilého v systému.

[size=14px][code][color=#0000FF]#include[/color] [color=#800080][/color]
[color=#0000FF]#include[/color] [color=#800080][/color]
[color=#0000FF]#include[/color] [color=#800080][/color]
[color=#0000FF]#include[/color] [color=#800080][/color]
[color=#0000FF]using[/color] [color=#0000FF]namespace[/color] std[color=#800000];[/color]

[color=#0000FF]#define[/color] APPNAME TEXT[color=#800000]([/color][color=#800080]"GuiTest"[/color][color=#800000])[/color]
[color=#0000FF]#define[/color] IDM_SAVE [color=#0000FF]1001[/color]
[color=#0000FF]#define[/color] IDM_EXIT [color=#0000FF]1002[/color]

[color=#0000FF]static[/color] OPENFILENAME ofn[color=#800000];[/color]
[color=#0000FF]static[/color] TCHAR szFileName[color=#800000][[/color]MAX_PATH[color=#800000]][/color][color=#800000];[/color]

[color=#0000FF]void[/color] PopFileInitialize [color=#800000]([/color]HWND hWnd[color=#800000])[/color]
[color=#800000]{[/color]
[color=#0000FF]static[/color] TCHAR szFilter[color=#800000][[/color][color=#800000]][/color] [color=#800000]=[/color] TEXT[color=#800000]([/color][color=#800080]"Geometrie Soubor (*.GEO)\0*.geo\0"[/color][color=#800000])[/color][color=#800000];[/color]
ZeroMemory[color=#800000]([/color][color=#800000]&[/color]ofn[color=#800000],[/color][color=#0000FF]sizeof[/color][color=#800000]([/color]OPENFILENAME[color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]
ofn[color=#800000].[/color]lStructSize [color=#800000]=[/color] [color=#0000FF]sizeof[/color][color=#800000]([/color]OPENFILENAME[color=#800000])[/color][color=#800000];[/color]
ofn[color=#800000].[/color]hwndOwner [color=#800000]=[/color] hWnd[color=#800000];[/color]
ofn[color=#800000].[/color]lpstrFilter [color=#800000]=[/color] szFilter[color=#800000];[/color]
ofn[color=#800000].[/color]nMaxFile [color=#800000]=[/color] MAX_PATH[color=#800000];[/color]
ofn[color=#800000].[/color]nMaxFileTitle [color=#800000]=[/color] MAX_PATH[color=#800000];[/color]
ofn[color=#800000].[/color]lpstrDefExt [color=#800000]=[/color] TEXT[color=#800000]([/color][color=#800080]"txt"[/color][color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

BOOL PopFileOpenDlg [color=#800000]([/color]HWND hWnd[color=#800000],[/color] TCHAR [color=#800000]*[/color]pstrFileName[color=#800000])[/color]
[color=#800000]{[/color]
ofn[color=#800000].[/color]hwndOwner [color=#800000]=[/color] hWnd[color=#800000];[/color]
ofn[color=#800000].[/color]lpstrFile [color=#800000]=[/color] pstrFileName[color=#800000];[/color]
ofn[color=#800000].[/color]Flags [color=#800000]=[/color] OFN_HIDEREADONLY [color=#800000]|[/color] OFN_CREATEPROMPT[color=#800000];[/color]
[color=#0000FF]return[/color] GetOpenFileName[color=#800000]([/color][color=#800000]&[/color]ofn[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

BOOL PopFileSaveDlg [color=#800000]([/color]HWND hWnd[color=#800000],[/color] TCHAR [color=#800000]*[/color]pstrFileName[color=#800000])[/color]
[color=#800000]{[/color]
ofn[color=#800000].[/color]hwndOwner [color=#800000]=[/color] hWnd[color=#800000];[/color]
ofn[color=#800000].[/color]lpstrFile [color=#800000]=[/color] pstrFileName[color=#800000];[/color]
ofn[color=#800000].[/color]Flags [color=#800000]=[/color] OFN_OVERWRITEPROMPT[color=#800000];[/color]
[color=#0000FF]return[/color] GetSaveFileName[color=#800000]([/color][color=#800000]&[/color]ofn[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

[color=#0000FF]bool[/color] Ulozit [color=#800000]([/color]TCHAR [color=#800000]*[/color]pstrFileName[color=#800000])[/color]
[color=#800000]{[/color]
[color=#0000FF]#ifdef[/color] UNICODE
wofstream save[color=#800000];[/color]
[color=#0000FF]#else[/color]
ofstream save[color=#800000];[/color]
[color=#0000FF]#endif[/color]

save[color=#800000].[/color]open[color=#800000]([/color]pstrFileName[color=#800000],[/color] ios[color=#800000]:[/color][color=#800000]:[/color]out [color=#800000]|[/color] ios[color=#800000]:[/color][color=#800000]:[/color]binary[color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]!save[color=#800000].[/color]is_open[color=#800000]([/color][color=#800000])[/color][color=#800000])[/color] [color=#0000FF]return[/color] [color=#0000FF]false[/color][color=#800000];[/color]
save [color=#800000]<[/color][color=#800000]<[/color] TEXT[color=#800000]([/color][color=#800080]"abc"[/color][color=#800000])[/color][color=#800000];[/color]
save[color=#800000].[/color]close[color=#800000]([/color][color=#800000])[/color][color=#800000];[/color]

[color=#0000FF]return[/color] [color=#0000FF]true[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

LRESULT CALLBACK MainWndProc [color=#800000]([/color]HWND hWnd[color=#800000],[/color]
UINT uMsg[color=#800000],[/color]
WPARAM wParam[color=#800000],[/color]
LPARAM lParam[color=#800000])[/color]
[color=#800000]{[/color]
[color=#0000FF]switch[/color] [color=#800000]([/color]uMsg[color=#800000])[/color] [color=#800000]{[/color]

[color=#0000FF]case[/color] WM_CREATE[color=#800000]:[/color]
PopFileInitialize[color=#800000]([/color]hWnd[color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]break[/color][color=#800000];[/color]

[color=#0000FF]case[/color] WM_COMMAND[color=#800000]:[/color]
[color=#0000FF]switch[/color] [color=#800000]([/color]LOWORD[color=#800000]([/color]wParam[color=#800000])[/color][color=#800000])[/color] [color=#800000]{[/color]
[color=#0000FF]case[/color] IDM_SAVE[color=#800000]:[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]PopFileSaveDlg[color=#800000]([/color]hWnd[color=#800000],[/color] szFileName[color=#800000])[/color][color=#800000])[/color] [color=#800000]{[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]Ulozit[color=#800000]([/color]szFileName[color=#800000])[/color][color=#800000])[/color] [color=#800000]{[/color]
MessageBox[color=#800000]([/color]hWnd[color=#800000],[/color]
TEXT[color=#800000]([/color][color=#800080]"Uložení souboru OK"[/color][color=#800000])[/color][color=#800000],[/color]
TEXT[color=#800000]([/color][color=#800080]"Info o uložení souboru"[/color][color=#800000])[/color][color=#800000],[/color]
MB_OK[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color] [color=#0000FF]else[/color] [color=#800000]{[/color]
MessageBox[color=#800000]([/color]hWnd[color=#800000],[/color]
TEXT[color=#800000]([/color][color=#800080]"Uložení souboru se nezdařilo"[/color][color=#800000])[/color][color=#800000],[/color]
TEXT[color=#800000]([/color][color=#800080]"Chyba při ukládání souboru"[/color][color=#800000])[/color][color=#800000],[/color]
MB_OK [color=#800000]|[/color] MB_ICONWARNING[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#0000FF]break[/color][color=#800000];[/color]
[color=#0000FF]case[/color] IDM_EXIT[color=#800000]:[/color]
DestroyWindow[color=#800000]([/color]hWnd[color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]break[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#0000FF]break[/color][color=#800000];[/color]

[color=#0000FF]case[/color] WM_DESTROY[color=#800000]:[/color]
PostQuitMessage[color=#800000]([/color][color=#0000FF]0[/color][color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]break[/color][color=#800000];[/color]

[color=#0000FF]default[/color][color=#800000]:[/color]
[color=#0000FF]return[/color] DefWindowProc[color=#800000]([/color]hWnd[color=#800000],[/color] uMsg[color=#800000],[/color] wParam[color=#800000],[/color] lParam[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

[color=#0000FF]return[/color] [color=#0000FF]0[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

HWND InitApp [color=#800000]([/color]HINSTANCE hInstance[color=#800000])[/color]
[color=#800000]{[/color]
WNDCLASSEX wc[color=#800000];[/color]

HMENU hMenu [color=#800000]=[/color] CreateMenu[color=#800000]([/color][color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]hMenu[color=#800000])[/color] [color=#800000]{[/color]
HMENU hSubMenu [color=#800000]=[/color] CreatePopupMenu[color=#800000]([/color][color=#800000])[/color][color=#800000];[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]hSubMenu[color=#800000])[/color] [color=#800000]{[/color]
AppendMenu[color=#800000]([/color]hSubMenu[color=#800000],[/color]MF_STRING[color=#800000],[/color]IDM_SAVE[color=#800000],[/color]TEXT[color=#800000]([/color][color=#800080]"&Uložit data"[/color][color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]
AppendMenu[color=#800000]([/color]hSubMenu[color=#800000],[/color]MF_STRING[color=#800000],[/color]IDM_EXIT[color=#800000],[/color]TEXT[color=#800000]([/color][color=#800080]"&Konec programu"[/color][color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]
AppendMenu[color=#800000]([/color]hMenu[color=#800000],[/color]MF_STRING[color=#800000]|[/color]MF_POPUP[color=#800000],[/color][color=#800000]([/color]UINT[color=#800000])[/color]hSubMenu[color=#800000],[/color]TEXT[color=#800000]([/color][color=#800080]"&Funkce"[/color][color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

ZeroMemory[color=#800000]([/color][color=#800000]&[/color]wc[color=#800000],[/color][color=#0000FF]sizeof[/color][color=#800000]([/color]WNDCLASSEX[color=#800000])[/color][color=#800000])[/color][color=#800000];[/color]

wc[color=#800000].[/color]cbSize [color=#800000]=[/color] [color=#0000FF]sizeof[/color][color=#800000]([/color]WNDCLASSEX[color=#800000])[/color][color=#800000];[/color]
wc[color=#800000].[/color]hbrBackground [color=#800000]=[/color] [color=#800000]([/color]HBRUSH[color=#800000])[/color][color=#800000]([/color]COLOR_BTNFACE [color=#800000]+[/color] [color=#0000FF]1[/color][color=#800000])[/color][color=#800000];[/color]
wc[color=#800000].[/color]hCursor [color=#800000]=[/color] LoadCursor[color=#800000]([/color]NULL[color=#800000],[/color]IDC_ARROW[color=#800000])[/color][color=#800000];[/color]
wc[color=#800000].[/color]hIcon [color=#800000]=[/color] LoadIcon[color=#800000]([/color]NULL[color=#800000],[/color]IDI_APPLICATION[color=#800000])[/color][color=#800000];[/color]
wc[color=#800000].[/color]hIconSm [color=#800000]=[/color] LoadIcon[color=#800000]([/color]NULL[color=#800000],[/color]IDI_APPLICATION[color=#800000])[/color][color=#800000];[/color]
wc[color=#800000].[/color]hInstance [color=#800000]=[/color] hInstance[color=#800000];[/color]
wc[color=#800000].[/color]lpfnWndProc [color=#800000]=[/color] MainWndProc[color=#800000];[/color]
wc[color=#800000].[/color]lpszClassName [color=#800000]=[/color] APPNAME[color=#800000];[/color]
wc[color=#800000].[/color]style [color=#800000]=[/color] CS_HREDRAW[color=#800000]|[/color]CS_VREDRAW[color=#800000];[/color]

[color=#0000FF]if[/color] [color=#800000]([/color]!RegisterClassEx[color=#800000]([/color][color=#800000]&[/color]wc[color=#800000])[/color][color=#800000])[/color] [color=#0000FF]return[/color] NULL[color=#800000];[/color]

[color=#0000FF]return[/color] CreateWindowEx[color=#800000]([/color]WS_EX_CONTROLPARENT[color=#800000],[/color]
APPNAME[color=#800000],[/color]APPNAME[color=#800000],[/color]
WS_OVERLAPPEDWINDOW[color=#800000]|[/color]WS_VISIBLE[color=#800000],[/color]
[color=#0000FF]100[/color][color=#800000],[/color][color=#0000FF]100[/color][color=#800000],[/color][color=#0000FF]350[/color][color=#800000],[/color][color=#0000FF]250[/color][color=#800000],[/color]
NULL[color=#800000],[/color]hMenu[color=#800000],[/color]hInstance[color=#800000],[/color]NULL[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]

[color=#0000FF]int[/color] APIENTRY _tWinMain [color=#800000]([/color]HINSTANCE hInstance[color=#800000],[/color]
HINSTANCE hPrevInstance[color=#800000],[/color]
TCHAR [color=#800000]*[/color]lpCmdLine[color=#800000],[/color]
[color=#0000FF]int[/color] nCmdShow[color=#800000])[/color]
[color=#800000]{[/color]
[color=#0000FF]if[/color] [color=#800000]([/color]InitApp[color=#800000]([/color]hInstance[color=#800000])[/color][color=#800000])[/color] [color=#800000]{[/color]
MSG Msg[color=#800000];[/color]
[color=#0000FF]while[/color] [color=#800000]([/color]GetMessage[color=#800000]([/color][color=#800000]&[/color]Msg[color=#800000],[/color]NULL[color=#800000],[/color][color=#0000FF]0[/color][color=#800000],[/color][color=#0000FF]0[/color][color=#800000])[/color][color=#800000])[/color] [color=#800000]{[/color]
TranslateMessage[color=#800000]([/color][color=#800000]&[/color]Msg[color=#800000])[/color][color=#800000];[/color]
DispatchMessage[color=#800000]([/color][color=#800000]&[/color]Msg[color=#800000])[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color]
[color=#0000FF]return[/color] [color=#0000FF]0[/color][color=#800000];[/color]
[color=#800000]}[/color][color=#800000];[/color][/code][/size]

Citovat příspěvek

 

Re: uložení souboru

Autor: JiriValerian

0:27:27 28.05.2010

[color=#008000]MedaPusik Napsal:
-------------------------------------------------------
> Taky jsem si všiml, vzpomínám., že když získám
> cestu z API fcí., třeba pro special folders, tak
> pokud použiji fci Replace pro vrácený string., kde
> lomítko nahradím dvěma, tak to není to pravé
> ořechové potom.., když chci soubor volat..nebo
> cestu k souboru spojovat..... To je ale takové
> podivné potom. Nechápu., proč není natvrdo pouze
> jedno lomítko. Toto nepovažuju za dobře pořešené.[/color]

Programuji s využitím C/C++ a Win API více než 15 let a nikdy v životě jsem nepotřeboval zdvojovat adresářová lomítka tak jak se to tady tazatel snažil tvrdit. Zdvojená adresářová lomítka tak jak je tu prezentoval tazatel nejsou potřeba. Takže má buď chybu někde jinde nebo má v systému něco hodně prohnilého.

Citovat příspěvek

 

Re: uložení souboru

Autor: azet

23:24:08 27.05.2010

[code]
case IDM_SAVE:
if(PopFileSaveDlg(hWnd, szFileName))
if(!Ulozit(PathFindFileName(szFileName)))
MessageBox(hWnd, TEXT("Uložení souboru se nezdařilo"), TEXT("Chyba při ukládání souboru"), MB_OK | MB_ICONWARNING);[/code]
takhle mi to funguje, ale nevím proč.

Citovat příspěvek

 

Re: uložení souboru

Autor: MedaPusik

23:19:41 27.05.2010

Taky jsem si všiml, vzpomínám., že když získám cestu z API fcí., třeba pro special folders, tak pokud použiji fci Replace pro vrácený string., kde lomítko nahradím dvěma, tak to není to pravé ořechové potom.., když chci soubor volat..nebo cestu k souboru spojovat..... To je ale takové podivné potom. Nechápu., proč není natvrdo pouze jedno lomítko. Toto nepovažuju za dobře pořešené.

Citovat příspěvek

 

Re: uložení souboru

Autor: JiriValerian

19:29:27 27.05.2010

azet Napsal:
-------------------------------------------------------
> // Naplneni struktury pro otvirani a ukladani
> souboru
> void PopFileInitialize(HWND hWnd)
> {
> static TCHAR szFilter[] = TEXT("Geometrie
> Soubor (*.GEO)\0*.geo\0");
>
> ofn.lStructSize =
> sizeof(OPENFILENAME);
> ofn.hwndOwner = hWnd;
> ofn.hInstance = NULL;
> ofn.lpstrFilter = szFilter;
> ofn.lpstrCustomFilter = NULL;
> ofn.nMaxCustFilter = 0;
> ofn.nFilterIndex = 0;
> ofn.lpstrFile = NULL; // Set in Open
> and Close functions
> ofn.nMaxFile = MAX_PATH;
> ofn.lpstrFileTitle = NULL;
> ofn.nMaxFileTitle = MAX_PATH;
> ofn.lpstrInitialDir = NULL;
> ofn.lpstrTitle = NULL;
> ofn.Flags = 0; // Set in Open
> and Close functions
> ofn.nFileOffset = 0;
> ofn.nFileExtension = 0;
> ofn.lpstrDefExt = TEXT("txt");
> ofn.lCustData = 0L;
> ofn.lpfnHook = NULL;
> ofn.lpTemplateName = NULL;
> }
>
> // Dialog pro otevreni souboru
> BOOL PopFileOpenDlg(HWND hWnd, PTSTR
> pstrFileName)
> {
> ofn.hwndOwner = hWnd;
> ofn.lpstrFile = pstrFileName;
> ofn.Flags = OFN_HIDEREADONLY |
> OFN_CREATEPROMPT;
>
> return GetOpenFileName(&ofn);
> }
>
> // Dialog pro ulozeni souboru
> BOOL PopFileSaveDlg(HWND hWnd, PTSTR
> pstrFileName)
> {
> ofn.hwndOwner = hWnd;
> ofn.lpstrFile = pstrFileName;
> ofn.Flags = OFN_OVERWRITEPROMPT;
>
> return GetSaveFileName(&ofn);
> }
>
> bool Ulozit(PTSTR pstrFileName)
> {
> using namespace std;
> ofstream save;
> save.open(pstrFileName, ios::out | ios::binary);
>
> if(!save.is_open())
> return false;
>
> ...
>
> save.close();
>
> return true;
> }
>
> static TCHAR szFileName;
>
> case IDM_SAVE:
> if(PopFileSaveDlg(hWnd, szFileName))
> if(!Ulozit(szFileName))
> MessageBox(hWnd, TEXT("Uložení souboru se
> nezdařilo"), TEXT("Chyba při ukládání souboru"),
> MB_OK | MB_ICONWARNING);
> bohužel, pokaždé chybová hláška
>
> jenže soubor s takto zadanou cestou se mi neotevře
> a tutíž se neprovede zápis. Pokud napevno zadám
> "dokument.dat" bez ohledu na cestu vrácenou dialogem,
> soubor se otevře, provede se zápis a uloží
> (kupodivu tam, kde jsem to určil dialogem uložení,
> ikdyž takto zadanou cestu vůbec nepředávám)

Mě tento příklad funguje bez problému a cesta, kterou vrací dialog pro ukládání
neobsahuje zdvojená lomítka a je např. tato:

C:\Dokumenty\soubor.dat

ofstream mi normálně uloží data do souboru.

Chybu tedy hledejte někde jinde.

Citovat příspěvek

 

Re: uložení souboru

Autor: azet

11:36:47 27.05.2010

[code]
// Naplneni struktury pro otvirani a ukladani souboru
void PopFileInitialize(HWND hWnd)
{
static TCHAR szFilter[] = TEXT("Geometrie Soubor (*.GEO)\0*.geo\0");

ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = NULL; // Set in Open and Close functions
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0; // Set in Open and Close functions
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT("txt");
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
}

// Dialog pro otevreni souboru
BOOL PopFileOpenDlg(HWND hWnd, PTSTR pstrFileName)
{
ofn.hwndOwner = hWnd;
ofn.lpstrFile = pstrFileName;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;

return GetOpenFileName(&ofn);
}

// Dialog pro ulozeni souboru
BOOL PopFileSaveDlg(HWND hWnd, PTSTR pstrFileName)
{
ofn.hwndOwner = hWnd;
ofn.lpstrFile = pstrFileName;
ofn.Flags = OFN_OVERWRITEPROMPT;

return GetSaveFileName(&ofn);
}

bool Ulozit(PTSTR pstrFileName)
{
using namespace std;
ofstream save;
save.open(pstrFileName, ios::out | ios::binary);

if(!save.is_open())
return false;

...

save.close();

return true;
}

static TCHAR szFileName[MAX_PATH];

case IDM_SAVE:
if(PopFileSaveDlg(hWnd, szFileName))
if(!Ulozit(szFileName))
MessageBox(hWnd, TEXT("Uložení souboru se nezdařilo"), TEXT("Chyba při ukládání souboru"), MB_OK | MB_ICONWARNING);[/code]
bohužel, pokaždé chybová hláška

Citovat příspěvek

 

Re: uložení souboru

Autor: azet

11:14:53 27.05.2010

jenže soubor s takto zadanou cestou se mi neotevře a tutíž se neprovede zápis. Pokud napevno zadám "dokument.dat" bez ohledu na cestu vrácenou dialogem, soubor se otevře, provede se zápis a uloží (kupodivu tam, kde jsem to určil dialogem uložení, ikdyž takto zadanou cestu vůbec nepředávám)

Citovat příspěvek

 

Re: uložení souboru

Autor: JiriValerian

10:47:29 27.05.2010

[color=#008000]azet Napsal:
-------------------------------------------------------
> dialogové okno ukládání mi při odlkliknutí OK
> vrátí cestu ve formátu
> C:/Dokumenty/soubor.dat, ale takto zadanou cestu
> mi nesebere funkce
> ofstream save(cesta,...)
> měla by být ve formátu C://Dokumenty//soubor.dat
> jak s tím bojovat?
> jinak, nevadí když místo typu PTSTR zadávám char* ?[/color]

To se pletete. Pokud je cesta získána např. z nějaké API funkce pak stačí toto:

[b]C:\Dokumenty\soubor.dat[/b]

Zdvojování adresářových lomítek se používá jen v případech když je cesta napsaná natvrdo
jako pevně definovaný konstantní řetězec přímo ve zdrojáku programu
tj. když je ve zdrojáku třeba toto:

[b]char *Cesta = "C:\\Dokumenty\\soubor.dat";[/b]

Pokud se cesta načítá třeba z nějakého souboru nebo se získává prostřednictvím nějaké API funkce apod.,
tak tam se adresářová lomítka nezdvojují a není to ani potřeba.

Citovat příspěvek

 

uložení souboru

Autor: azet

10:22:55 27.05.2010

dialogové okno ukládání mi při odlkliknutí OK vrátí cestu ve formátu
C:/Dokumenty/soubor.dat, ale takto zadanou cestu mi nesebere funkce
[code]ofstream save(cesta,...)[/code]
měla by být ve formátu C://Dokumenty//soubor.dat
jak s tím bojovat?
jinak, nevadí když místo typu PTSTR zadávám char* ?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: