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

Вниз

MkDir???   Найти похожие ветки 

 
Bedny ©   (2002-12-12 22:33) [0]

Люди, похелпте, плиз! Хочу закончить и сюда вывалить изменённый fmxutils.pas, но не хватает для него всего нескольких строк, чтобы создать новый путь на диске (любой, по выбору пользователя). Кто в курсе, как это делается, напишите, буду очень благодарен! =) P. S. MkDir создаёт только ОДИН подкататалог, да ещё если тот не существует, а надо целый путь, возможно, включающий уже существующие папки.


 
Song ©   (2002-12-12 22:40) [1]

ForceDirectories()


 
Георгий Бедный   (2002-12-13 15:04) [2]

Сенкс! А я думал, тут сто лет надо ответа ждать. I love this fuckung world! :):):):):):)


 
Георгий Бедный   (2002-12-13 20:10) [3]

Не хотел беспокоить, но какие-то баги наблюдаются: когда задаёшь путь, длиннее существующего меньше, чем на 2 папки, файл сохраняется под именем последнего каталога (без расширения). Не в курсе, почему так?


 
Anatoly Podgoretsky ©   (2002-12-13 20:22) [4]

Покажи код


 
Георгий Бедный   (2002-12-13 22:22) [5]

function CopyFile(const FileName, DestName: TFileName; Egression: Boolean): Boolean;
var
CopyBuffer: Pointer; { буфер для копирования }
BytesCopied: Longint; {размер копируемых данных}
Source, Dest: Integer; { handles }
Destination: TFileName; { имя каталога, куда копируется файл }
const
ChunkSize: Longint = 8192; { размер отрезков для копирования }
label 1;
begin
Destination:=ExpandFileName(DestName); { абсолютный путь }
if Egression then ForceDirectories(Destination); {новый каталог}
if HasAttr(Destination, faDirectory) then { если это каталог,.. }
{ ...дописать имя конечного файла }
Destination:=Destination+"\"+ExtractFileName(FileName);
GetMem(CopyBuffer,ChunkSize); { распределить буфер }
Source:=FileOpen(FileName, fmShareDenyWrite); { открыть существующий файл }
if Source<0 then goto 1;
Dest:=FileCreate(Destination); { создать конечный файл; перезаписать существующий }
if Dest<0 then goto 1;
try
repeat
BytesCopied:=FileRead(Source, CopyBuffer^, ChunkSize); { прочитать отрезок }
if BytesCopied > 0 then { если отрезок считан,.. }
FileWrite(Dest, CopyBuffer^, BytesCopied); { ...записывать отрезки,.. }
until BytesCopied < ChunkSize; { ...пока они есть }
finally
FileClose(Dest); { закрыть конечный файл }
end;
FileClose(Source); { закрыть исходный файл }
FreeMem(CopyBuffer, ChunkSize); { освободить буфер }
Result:=True;
1:end;


 
sniknik ©   (2002-12-13 22:45) [6]

ошибка (возможно не единственная)
Destination:= ExpandFileName(DestName); { абсолютный путь }
потом ForceDirectories(Destination);
вместо ExpandFileName надо ExtractFilePath (для ForceDirectories нужна директория а не файл).


 
Георгий Бедный   (2002-12-14 10:18) [7]

А ExtractFilePath всегда возвращает абсолютный путь?


 
Георгий Бедный   (2002-12-14 10:18) [8]

А ExtractFilePath всегда возвращает абсолютный путь? А в главном модуле я везде задаю директорий.


 
sniknik ©   (2002-12-14 15:43) [9]

ExtractFilePath выделяет путь из из полного путь\файл.

и вообще чего так сложно? есть стандартный CopyFile. вся твоя процедура делается в 2 строки.

function MyCopyFile(SourceName, DestName: string): Boolean;
begin
ForceDirectories(ExtractFilePath(DestName));
result:= CopyFile(PChar(SourceName), PChar(DestName), FALSE);
end;

//вызов
if not MyCopyFile("D:\TEST.TXT", "D:\terrst\test.txt") then {см. GetLastError}


 
Георгий Бедный   (2002-12-15 19:04) [10]

Сенкс! Вообще-то, так часто бывает с русским человеком - через Сибирь в Харьков!


 
Юрий Зотов ©   (2002-12-15 20:41) [11]

> Хочу закончить и сюда вывалить изменённый fmxutils.pas

> чего так сложно? есть стандартный CopyFile. вся твоя процедура
> делается в 2 строки.

> Вообще-то, так часто бывает с русским человеком - через Сибирь
> в Харьков!

Что ж, в связи с процитированным очень интересно будет взглянуть на этот "изменённый fmxutils.pas" после того, как он будет "вывален" для всеобщего пользования.



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
14-86088
Aristarh
2002-12-04 23:20
2002.12.26
Когда выйдет Терминатор 3 ?


1-85975
AFrolov
2002-12-15 10:12
2002.12.26
Как узнать GUID объекта который лежит например в .exe ?


1-86004
AFrolov
2002-12-15 10:10
2002.12.26
Как зная GUID узнать имя файла где объект с этим GUID находится?


1-85909
Le!
2002-12-17 07:30
2002.12.26
Простые формы!


7-86200
ocean
2002-10-21 19:44
2002.12.26
Версия Windows