Здравствуйте! Меня интересует как при поиске файлов перемещаться по каталогам (на уровень ниже). Какие процедуры при этом нужны. Если FindFirst и FindNext (faDirectory-для поиска каталога), то пожалуйста рабочий пример (обязательно проверте на своей машине, так у меня ничего "прктически" не получилось) !!! Визуальные компоненты не использую. !!!
Здравствуйте, Orlando! Всё прально используй эти функции, не вижу причин что-бы что-то не получилось! Исполбзуй также SetCurrentDir для перехода в подпапку! Пример рабочий дать немогу ибо не стоит у меня сейчас(всмысле Delphi на машине ;-))! Ответ отправлен: 15.07.2002, 02:44 Отправитель: Sanya
Вопрос № 77
Здравствуйте. Задача в следующем. Надо прочитать в переменную типа string, весь текстовой файл (файл < 1Mb). Вот, что я написал: var ... OpisFile:string; opfi:PChar; begin ... Hf:= FileOpen(selfile,fmOpenRead or fmShareDenyWrite); size:=GetFileSize(Hf,nil); GetMem(opfi,size); FileRead(hf,OpFi,size); OpisFile:=OpFi; ... Так вот. Не работает :( На последней строке вываливается, программа выполнила не допустимую операцию ... Подскажите, пожалуйста, в чем моя ошибка, или свой вариант решения задачи.
Приветствую Вас, Andy BitOff! Попробуй так (у меня работает): procedure GetStringFile(const FileName : string) : string var fh : integer; s : string; begin result := ''; try fh := FileOpen(FileName, fmOpenRead); SetLength(s, GetFileSize(fh, nil)); FileRead(fh, pointer(s)^, GetFileSize(fh, nil)); FileClose(fh); result := s; except result := ''; end; end;
Ответ отправлен: 13.07.2002, 06:39 Отправитель: veei Отвечает vitya
Доброе время суток, Andy BitOff! отвечаю в который раз: надо пользоваться Win32API, в данном случае отображаемыми в память файлами: весь набор функций следующий: 1. CreateFile() 2. CreateFileMapping() 3. MapViewOfFile 4. UnmapViewOfFile 5. CloseHandle() После вызова MapViewOfFile ты сразу получшь свой PCHAR Ответ отправлен: 12.07.2002, 16:00 Отправитель: vitya Отвечает Necro
Добрый день, Andy BitOff! Длина переменой String ограничивается 255 символами(WideString, вроде бы, 65535). Если тебе нужен посимвольный доступ к файлу, то сделай массив символов - будет проще, тем более, что PChar и есть указатель на такой массив. Ответ отправлен: 12.07.2002, 16:43 Отправитель: Necro Отвечает Sanya
Добрый день, Andy BitOff! Гм... насколько я знаю функция FileOpen() возвращает значение типа integer, т.е. дискриптор файла или -1 в случае ошибки! Удачи! Ответ отправлен: 15.07.2002, 02:53 Отправитель: Sanya
Вопрос № 78
Привет эксперты! Возникла такая проблема: в Paradox7 мутил базу, но необходимо, чтобы одно из полей (текстовое) было >255 символов, ну в районе ~3K. Как это реализовать пока не понял. Были идеи попробовать на других БД - та же самая фигня :(( Если есть у кого какие идеи, - поделитесь плз. Спасибо! Andrew aka Atma Manas
Доброе время суток, Andrew! Не вижу другого выхода кроме как юзать несколько полей, хотя конечно могу ошибаться, я юзаю SQL2000, там ограничение в 1кб, попробуй его!
Ответ отправлен: 15.07.2002, 03:21 Отправитель: Sanya Отвечает Артём Шегеда
Здравствуйте, Andrew! Для таких целей обычно используют тип Memo, если тебе, конечно не нужно индексирование по этому полю. А присваивать данные также просто, как и обычному типу Alpha - через AsString. Отображать в сетке DBGrid просто - напиши обработчик события OnGetText для этого поля Memo:
Приложение: Ответ отправлен: 15.07.2002, 13:15 Отправитель: Артём Шегеда Отвечает ALastorZ
Приветствую Вас, Andrew! Попробуй BLOB поле...Им может быть что угодно... Ответ отправлен: 13.07.2002, 02:22 Отправитель: ALastorZ
Вопрос № 79
Здравствуйте. Вот Necro утверждает, цитирую: Длина переменой String ограничивается 255 символами(WideString, вроде бы, 65535). А у меня другая информация. ShortString - 255 AnsiString - ~2Gb String - или 255b или ~2Gb Родовым является тип String, который имеет разный смысл в зависимости от директивы компилятора $H. Если она включена (по умолчанию так и есть), то String интерпретируется компилятором как AnsiString, а если выкл., то как ShortString. Рассудите кто прав?
Доброе время суток, Andy BitOff! Чувствую себя полным идиотом... Да, ты прав. Это у меня дока косая, в книжке написано как у тебя... Ответ отправлен: 12.07.2002, 23:30 Отправитель: Necro Отвечает veei
Здравствуйте, Andy BitOff! Действительно, при использовании директивы {$H+}, Delphi использует по умолчанию длинные строки (до 2Gb), при {$H-} - соответственно до 255b. По умолчанию используется {$H+}. Из этого вытекает, что Necro не прав, в отличие от тебя. А вообще посмотрите вместе хелп на досуге: там об этом сказано. Ответ отправлен: 13.07.2002, 06:41 Отправитель: veei
Вопрос № 80
Уважаемые Эксперты ! Спасибо вам за недавний ответ на мой вопрос. Подскажите пожайлуста ,(или может знаете, Где в интернете можно скачать учебный курс по Дельфи) каким оператором надо воспользоваться , для создания(и чтения) файла ,если можно с объяснением синтаксиса его написания. И каким оператором можно выводить результат на принтер в нужных позициях.
учебных курсов много, и уже на самом деле учитесь поисковиками пользоваться. Насчет открытия файла, так тут все то же, что и в обычном паскале : assign, reset, rewrite, close. Правда, насколько я помню, в делфи некоторые из этих функций пишутся assignfile, closefile. Можно Win32API, открыть файл: CreateFile() и соответствующие Ответ отправлен: 13.07.2002, 08:54 Отправитель: vitya Отвечает veei
Здравствуйте, Alexandr! Для создания используй CreateFile(FileName), где FileName - имя нового файла. Функция возвращает -1, если ничего не получилось. Для открытия используй FileOpen(FileName, Mode), где Mode - режим открытия файла fmOpenRead - только для чтения, fmOpenWrite - только для записи, fmOpenReadWrite - для чтения и записи. Функция возвращает дескриптор файла, который тебе следует сохранить в переменной типа Integer. Для чтения, соответсвенно FileRead(FileHandle, Buffer, Count), где FileHandle - это дескриптор файла, Buffer - буфер в который будет читаться файл, Count - число байт которые нужно прочитать. Функция возвращает кол-во байт ФАКТИЧЕСКИ прочитанных. На принтер можно выводить используя функцию Printer : TPrinter. Ну а вообще, посмотри дельфийский хелп. Там все это есть и описано получше. Ответ отправлен: 13.07.2002, 06:42 Отправитель: veei Отвечает ALastorZ
Здравствуйте, Alexandr! Маленький коммент, оператор это штучка которая ставится меж двух обьектов и означает действие над ним производимое, таковыми являются + - * / and or xor и.т.д. Ответ отправлен: 13.07.2002, 02:32 Отправитель: ALastorZ Отвечает Sanya
Приветствую Вас, Alexandr! Создание файла: FileCreate(FileName:String):Integer возвращает дескриптор файла иди -1 в случае ошибки, Создание и открытие файла(в случае существования такого файла старый уничтожается): Rewrite(Var F:File [:Recize:Word]) F-переменная файлового типа, Recsize- устонавливает длину записи в байтах(для нетипизированных файлов), по умолчанию 128. Чтение: FileRead(Handle:Integer;Var Buffer; Count:Integer):Integer Handle - Дескриптор файла; Buffer - Буфер, в который выполдняется чтение; Count - Размер буфера, Read(F,V1[,V2,...,Vn]); F-переменная файлового типа V1,...,Vn - список ввода, переменные, которым присваеваются определённые значения. Это только для примера ибо много их всяких разных функций для чтения! У объекта принтер есть свойство canvas с которым можно работать как с обычным canvas! Ответ отправлен: 15.07.2002, 04:07 Отправитель: Sanya
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.