Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 041
от 16.07.2002, 03:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 82
Отправлено ответов: 104
Активность: 126.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Sanya
Статус: Начальный
Общий рейтинг: 125.71
[Подробней >>]
veei
Статус: Доверительный
Общий рейтинг: 130
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 115.41
[Подробней >>]
 
Necro
Статус: Начальный
Общий рейтинг: 128.57
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 122.32
URL: Пристанище неодинокого программиста
[Подробней >>]
ALastorZ
Статус: Доверительный
Общий рейтинг: 123.71
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 76. Здравствуйте! Меня интересует как при поиске файлов перемещаться по каталогам (на уровень ниже). ... (ответов: 1)
Вопрос № 77. Здравствуйте. Задача в следующем. Надо прочитать в переменную типа string, весь текстовой файл (файл... (ответов: 4)
Вопрос № 78. Привет эксперты! Возникла такая проблема: в Paradox7 мутил базу, но необходимо, чтобы одно из полей ... (ответов: 3)
Вопрос № 79. Здравствуйте. Вот Necro утверждает, цитирую: Длина переменой String ограничивается 255 символами(Wid... (ответов: 2)
Вопрос № 80. Уважаемые Эксперты ! Спасибо вам за недавний ответ на мой вопрос. Подскажите пожайлуста ,(ил... (ответов: 4)

Вопросов: 5, ответов: 14


 Вопрос № 76

Здравствуйте!
Меня интересует как при поиске файлов перемещаться по каталогам (на уровень ниже).
Какие процедуры при этом нужны.
Если FindFirst и FindNext (faDirectory-для поиска каталога), то пожалуйста рабочий пример
(обязательно проверте на своей машине, так у меня ничего "прктически" не получилось)
!!! Визуальные компоненты не использую. !!!



Вопрос отправлен: 12.07.2002, 11:49
Отправитель: Orlando (orlando@kaluga.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Sanya

Здравствуйте, 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;
...
Так вот. Не работает :( На последней строке вываливается, программа выполнила не допустимую операцию ... Подскажите, пожалуйста, в чем моя ошибка, или свой вариант решения задачи.



Вопрос отправлен: 12.07.2002, 15:48
Отправитель: Andy BitOff

[Следующий вопрос >>] [Список вопросов]

Отвечает veei

Приветствую Вас, 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



Вопрос отправлен: 12.07.2002, 21:02
Отправитель: Andrew (atma_manas@mtu-net.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Sanya

Доброе время суток, 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.
Рассудите кто прав?



Вопрос отправлен: 12.07.2002, 22:36
Отправитель: Andy BitOff

[Следующий вопрос >>] [Список вопросов]

Отвечает Necro

Доброе время суток, 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

Уважаемые Эксперты !
Спасибо вам за недавний ответ на мой вопрос.
Подскажите пожайлуста ,(или может знаете, Где в интернете можно скачать
учебный курс по Дельфи) каким оператором надо воспользоваться ,
для создания(и чтения) файла ,если можно с объяснением синтаксиса
его написания. И каким оператором можно выводить результат на принтер
в нужных позициях.



Вопрос отправлен: 13.07.2002, 01:28
Отправитель: Alexandr (alexkupr@takas.lt)

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Доброе время суток, Alexandr!

учебных курсов много, и уже на самом деле учитесь поисковиками пользоваться. Насчет открытия файла, так тут все то же, что и в обычном паскале : 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.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (44)
C / C++ (31)
Perl (10)
Delphi (18)
Pascal (30)
Basic / VBA (12)
Java / JavaScript (6)
PHP (6)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (31)
"Железо" (34)
Поиск информации (19)
Администратору
Windows NT/2000/XP (18)
Linux / Unix (16)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (7)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное