DBGrid.Columns.SaveToFile
9 отговора
0 прегледа
DBGrid.Columns.SaveToFile
Първо - малко личностна информация: доскоро влизах във форума като Ada - нерегистриран потребител. Но при регистрацията това име се оказа заето.
Сега по същество:
Използвам DBGrid.Columns.SaveToFile(<FileName>) от доста време и на много компютри без проблеми. Но на един компютър получавам съобщение
Can not create file <FileName>
Дирекорията е позволена за писане, когато създавам файл с AssignFile и rewrite всичко е OK.
try ... except е само аварийно решение, ще бъда благодарна за друга идея
Сега по същество:
Използвам DBGrid.Columns.SaveToFile(<FileName>) от доста време и на много компютри без проблеми. Но на един компютър получавам съобщение
Can not create file <FileName>
Дирекорията е позволена за писане, когато създавам файл с AssignFile и rewrite всичко е OK.
try ... except е само аварийно решение, ще бъда благодарна за друга идея
Re: DBGrid.Columns.SaveToFile
"Позволена за писане" е достатъчно общо. Програмите се пускат (ако не е зададено друго) с правата на потребителя който ги пуска.
Отиди на папката/файла в който пишеш, десен бутон, properties/security/advanced/Effective permissions
Там може да провериш потребителя има ли права и какви за тоя обект.
чети и дишай по-леко
Отиди на папката/файла в който пишеш, десен бутон, properties/security/advanced/Effective permissions
Там може да провериш потребителя има ли права и какви за тоя обект.
чети и дишай по-леко
Re: DBGrid.Columns.SaveToFile
Задай предварително директория за записа и после име на файла. Можеш да пробваш с пропъртито.
Виж тук има пример. При мрн работи но има и .res файл.
Виж тук има пример. При мрн работи но има и .res файл.
Редактирано от Timo на
Отговор на Pechenia и Naki
OS: Windows 7 Ultimate 32-bit
Програмата е инсталирана в поддиректория на Program Files, която се създава при инсталация, и също при инсталация давам на всички USER-и права за четене, писане, създаване на файлове и т.н. Проверих в Effective Permissions - наистина са дадени Permissions за всичко.
На същия компютър програмата, използвана от същия User, създава и модифицира файлове (Assignfile, reset, rewrite), редактира Paradox таблици, които са в същата поддиректория.
Тази програма работи коректно при монго потребители. Единствената особеност, която забелязах на този компютър, е, че стартирането на Task Manager е забранено.
Програмата е инсталирана в поддиректория на Program Files, която се създава при инсталация, и също при инсталация давам на всички USER-и права за четене, писане, създаване на файлове и т.н. Проверих в Effective Permissions - наистина са дадени Permissions за всичко.
На същия компютър програмата, използвана от същия User, създава и модифицира файлове (Assignfile, reset, rewrite), редактира Paradox таблици, които са в същата поддиректория.
Тази програма работи коректно при монго потребители. Единствената особеност, която забелязах на този компютър, е, че стартирането на Task Manager е забранено.
Re: DBGrid.Columns.SaveToFile
Твоята бележка ми даде идея къде може да е проблемът: в някои редки (непредсказуеми) случаи конкатинацията не работи коректно. А аз пиша
MyDBGrid.Columns.SaveToFile(MyPath+'\'+MyFileName)
Ако напиша
ss:=MyPath+'\'+MyFileName;
MyDBGrid.Columns.SaveToFile(ss);
може и да проработи. Жалко, че засега не мога да експериментирам - вече изтормозих човека с TeamViewer-a.
MyDBGrid.Columns.SaveToFile(MyPath+'\'+MyFileName)
Ако напиша
ss:=MyPath+'\'+MyFileName;
MyDBGrid.Columns.SaveToFile(ss);
може и да проработи. Жалко, че засега не мога да експериментирам - вече изтормозих човека с TeamViewer-a.
Re: DBGrid.Columns.SaveToFile
Със string-а SS няма да има промяна. Виж примера, ако не проработи порърси проблема в ОС
IncludeTrailingPathDelimiter / IncludeTrailingB...
За да избегнеш подобни изненади, ползвай IncludeTrailingPathDelimiter или IncludeTrailingBackslash функциите:
Linux isn't free, it's worthless.
MyDBGrid.Columns.SaveToFile(IncludeTrailingPathDelimiter(MyPath)+MyFileName);
Linux isn't free, it's worthless.
Re: Отговор на Pechenia и Naki
В Program Files ли пишеш файловете с данни? Ако да, това е неправилно, пробвай друга папка.
Това, че самата програма (EXE) се намира във Program Files, не значи, че и данните трябва да са там.
Е, неправилно е според Microsoft, ти може да сеи решила, че е ОК де...
Това, че самата програма (EXE) се намира във Program Files, не значи, че и данните трябва да са там.
Е, неправилно е според Microsoft, ти може да сеи решила, че е ОК де...
Редактирано от Naki на
Re: Отговор на Pechenia и Naki
Писането в Program Files наистина не е добра идея. Дори да е разрешено в ОС, някои антивируси следят поведението на програмите и могат да отрежат даден запис на данни там, просто защото им се е строил подозрителен на база евристичен анализ. Други данни, записани в друг файл от същата програма могат и да минат и оттам почваш да се чудиш къде е проблема, особено ако антивируса е настроен да не пищи при всяка ситуация.
Mixy
Mixy