Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.27;
Скачать: CL | DM;

Вниз

Windows 7 + сохранение в %TEMP%   Найти похожие ветки 

 
pushkin42 ©   (2010-03-06 23:18) [0]

Здравствуйте, уважаемые господа программисты!

У меня тут вопросик возник:

Я пишу код:

 try
     GetEnvironmentVariable("TEMP", FOutDir, 256);
   RetrieveFN :
     GetTempFileName(FOutDir, "sxs", 256, FOutFile);
     while FileExists(FOutFile) do
       goto RetrieveFN;
     ZBDFileName := StrPas(FOutFile);
     ZBDTemporary := True;
   finally
     FreeMem(FOutDir);
     FreeMem(FOutFile);
   end;


отрабатывает нормально, возвращает путь вида %DISK%\Users\бла-бла\Local\...\Temp

пытаюсь потом записать туда файл и он не пишется в эту директорию!!! в любую другую - пишется, а в %TEMP% - нет! В чем могут быть грабли?

D2010, Windows 7 Ultimate x86
Название профиля на русском языке (если это имеет значение)
Возвращаемый функцией полный путь существует, запись из проводника в эту папку доступна.


 
DVM ©   (2010-03-06 23:23) [1]

%DISK%\Users\бла-бла\Local\...\Temp

этот путь надо сначала преобразовать в нормальный.

function ExpandEnvironment(const CmdLine: string): string;
var
 Buff: array[0..MAX_PATH - 1] of Char;
 Ret: DWORD;
begin
 Ret := ExpandEnvironmentStrings(PChar(CmdLine), Buff, MAX_PATH);
 if Ret = 0 then
   Result := CmdLine
 else
   SetString(Result, Buff, Ret);
end;


 
DVM ©   (2010-03-06 23:27) [2]

Хотя погоди, %DISK% - это ты сам подписал?


 
Игорь Шевченко ©   (2010-03-07 00:44) [3]

пишет

procedure TForm1.Button1Click(Sender: TObject);
var
 FileName: string;
begin
 FileName := GetEnvironmentVariable("TEMP")+"\foo.bar";
 Memo1.Lines.SaveToFile(FileName);
end;


Windows 7, D2010


 
Германн ©   (2010-03-07 01:15) [4]


> Я пишу код:
>
>  try
>      GetEnvironmentVariable("TEMP", FOutDir, 256);
>    RetrieveFN :
>      GetTempFileName(FOutDir, "sxs", 256, FOutFile);
>      while FileExists(FOutFile) do
>        goto RetrieveFN;
>      ZBDFileName := StrPas(FOutFile);
>      ZBDTemporary := True;
>    finally
>      FreeMem(FOutDir);
>      FreeMem(FOutFile);
>    end;
>

Вот оно зло goto! :)


 
Игорь Шевченко ©   (2010-03-07 02:39) [5]


>    RetrieveFN :
>      GetTempFileName(FOutDir, "sxs", 256, FOutFile);
>      while FileExists(FOutFile) do
>        goto RetrieveFN;


Круто

Изучай конструкцию

repeat..until


 
Германн ©   (2010-03-07 03:01) [6]


> Игорь Шевченко ©   (07.03.10 02:39) [5]

Автору это не поможет. :)


 
pushkin42 ©   (2010-03-07 09:58) [7]

> Игорь Шевченко ©   (07.03.10 02:39) [5]
Ну не надо, не надо :)

Вот смотрите: http://img19.imageshack.us/img19/5232/bug001.png
Путь выводится правильно!

А вот почему после этого туда ничего не пишется - вот вопрос...
Может быть, UAC виноват?


 
pushkin42 ©   (2010-03-07 10:00) [8]

И да, имеет ли значение, что данный код выполняется в контексте RunDLL?


 
pushkin42 ©   (2010-03-07 10:16) [9]

Add: Пишет из программы в любой из вышестоящих каталогов (tempfile001.tmp к примеру пишет), temp/file001.tmp - не пишет....


 
Игорь Шевченко ©   (2010-03-07 13:23) [10]


> А вот почему после этого туда ничего не пишется - вот вопрос.
> ..


Потому что тебе хочется потрепаться. Если бы тебе была нужна помощь, ты бы давно уже показал ошибку, возникающую при записи.
А пустой треп ради привлечения внимания к своей персоне приведет к тому, что ветка будет закрыта.


 
pushkin42 ©   (2010-03-07 19:16) [11]

Спасибо за помощь.



Страницы: 1 вся ветка

Текущий архив: 2013.10.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
15-1368477002
Юрий
2013-05-14 00:30
2013.10.27
С днем рождения ! 14 мая 2013 вторник


2-1359632987
SSS
2013-01-31 15:49
2013.10.27
Перерисовка компонентов


6-1269852337
Сварт
2010-03-29 12:45
2013.10.27
Нужен программист за деньги на 10 минут


1-1316775192
denkop
2011-09-23 14:53
2013.10.27
Помогите с отрисовкой текста на TImage


1-1317227566
sniknik
2011-09-28 20:32
2013.10.27
Ситуация... Citrix and TPrinter поддержка "отображаемых"