Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-85848
samsam
2002-12-05 17:05
2002.12.26
Востановление удаленной записи


6-86062
Pithon_kaa
2002-10-31 10:47
2002.12.26
Что рекомендует Borland для использования вместо TServerSocet


14-86176
biss
2002-12-06 13:50
2002.12.26
Как стать мастером


1-85973
Black Tiger
2002-12-15 15:05
2002.12.26
Файлы


7-86192
BJValentine
2002-09-13 18:14
2002.12.26
USB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский