DBGrid.Columns.SaveToFile

9 отговора 0 прегледа
#1

DBGrid.Columns.SaveToFile

Първо - малко личностна информация: доскоро влизах във форума като Ada - нерегистриран потребител. Но при регистрацията това име се оказа заето.

Сега по същество:
Използвам DBGrid.Columns.SaveToFile(<FileName>) от доста време и на много компютри без проблеми. Но на един компютър получавам съобщение
Can not create file <FileName>
Дирекорията е позволена за писане, когато създавам файл с AssignFile и rewrite всичко е OK.
try ... except е само аварийно решение, ще бъда благодарна за друга идея

Отговор
в отговор на Rumyana_RK #2

Re: DBGrid.Columns.SaveToFile

"Позволена за писане" е достатъчно общо. Програмите се пускат (ако не е зададено друго) с правата на потребителя който ги пуска.
Отиди на папката/файла в който пишеш, десен бутон, properties/security/advanced/Effective permissions
Там може да провериш потребителя има ли права и какви за тоя обект.

чети и дишай по-леко
Отговор
в отговор на Rumyana_RK #3

Re: DBGrid.Columns.SaveToFile

OS-а на компютъра какъв е?
Коя е папката?


Отговор
в отговор на Rumyana_RK #4

Re: DBGrid.Columns.SaveToFile

Задай предварително директория за записа и после име на файла. Можеш да пробваш с пропъртито.

Виж тук има пример. При мрн работи но има и .res файл.

Редактирано от Timo на

Отговор
в отговор на Rumyana_RK #5

Отговор на Pechenia и Naki

OS: Windows 7 Ultimate 32-bit
Програмата е инсталирана в поддиректория на Program Files, която се създава при инсталация, и също при инсталация давам на всички USER-и права за четене, писане, създаване на файлове и т.н. Проверих в Effective Permissions - наистина са дадени Permissions за всичко.

На същия компютър програмата, използвана от същия User, създава и модифицира файлове (Assignfile, reset, rewrite), редактира Paradox таблици, които са в същата поддиректория.

Тази програма работи коректно при монго потребители. Единствената особеност, която забелязах на този компютър, е, че стартирането на Task Manager е забранено.

Отговор
в отговор на Timo #6

Re: DBGrid.Columns.SaveToFile

Твоята бележка ми даде идея къде може да е проблемът: в някои редки (непредсказуеми) случаи конкатинацията не работи коректно. А аз пиша
MyDBGrid.Columns.SaveToFile(MyPath+'\'+MyFileName)
Ако напиша
ss:=MyPath+'\'+MyFileName;
MyDBGrid.Columns.SaveToFile(ss);
може и да проработи. Жалко, че засега не мога да експериментирам - вече изтормозих човека с TeamViewer-a.

Отговор
в отговор на Rumyana_RK #7

Re: DBGrid.Columns.SaveToFile

Със string-а SS няма да има промяна. Виж примера, ако не проработи порърси проблема в ОС

Отговор
в отговор на Rumyana_RK #8

IncludeTrailingPathDelimiter / IncludeTrailingB...

За да избегнеш подобни изненади, ползвай IncludeTrailingPathDelimiter или IncludeTrailingBackslash функциите:

MyDBGrid.Columns.SaveToFile(IncludeTrailingPathDelimiter(MyPath)+MyFileName);


Linux isn't free, it's worthless.


Отговор
в отговор на Rumyana_RK #9

Re: Отговор на Pechenia и Naki

В Program Files ли пишеш файловете с данни? Ако да, това е неправилно, пробвай друга папка.
Това, че самата програма (EXE) се намира във Program Files, не значи, че и данните трябва да са там.
Е, неправилно е според Microsoft, ти може да сеи решила, че е ОК де...


Редактирано от Naki на

Отговор
в отговор на Rumyana_RK #10

Re: Отговор на Pechenia и Naki

Писането в Program Files наистина не е добра идея. Дори да е разрешено в ОС, някои антивируси следят поведението на програмите и могат да отрежат даден запис на данни там, просто защото им се е строил подозрителен на база евристичен анализ. Други данни, записани в друг файл от същата програма могат и да минат и оттам почваш да се чудиш къде е проблема, особено ако антивируса е настроен да не пищи при всяка ситуация.

Mixy
Отговор