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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 644
от 08.11.2006, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 396, Экспертов: 63
В номере:Вопросов: 7, Ответов: 14


Вопрос № 61027: Здравствуйте! Потребовалось создать простой ftp client. Использую компонент idFtp Indy 10.1.1. При вызове IdFTP.Get(FileSource, FileDst); дает ошибку Destination file already exists, хотя файла такого у меня нет. FileExists(FileDest) дает false. ...
Вопрос № 61045: Товарищи эксперты! У меня проблема. На форме размещены PageControl, DataSource и Table из закладки BDE. Так вот, при переходе на каждую закладку у меня меняется файл базы(students.db->admin.db). Только при этом переходе получается ошибка "DbE...
Вопрос № 61067: Здраствуйте Уважаемые эксперты, Помогите пожалуйста решить проблему, как мне можно зделать так чтобы в определённую переменную можно былобы зачунуть значение 127^113. Посмотрите пожалуйста в приложении, там переменная p должна принимать макси...
Вопрос № 61095: Здраствуйте, я пишу файловый менеджер, написал рекурсивную процедуру поиска файлов. procedure InsertFiles(From:string); var sr:TSearchRec; begin Application.ProcessMessages; if FindFirst(From+'*.*,faAnyFile,sr)=0 ...
Вопрос № 61098: Здравствуйте,уважаемые эксепрты! Помогите, пожалуйста, с созданием динамического двухмерного массива. Проблема в том, что я не могу определить размер его "второго измерения". В приложении кусок кода, который у меня уже есть, но ...
Вопрос № 61100: Уважаемые эксперты прошу вас ответить на такой вопрос Создаю таблицы в Database Desktop все в прядке но при открытии в BDE Administrator нажимаю на плюсик чтобы посмотреть наличие их там нет хотя путь указан правильно Что можете подсказать....
Вопрос № 61109: Здравствуйте. У меня следующая задача: нужно изменить размер jpg-а. То есть я открываю, скажем, файл file.jpg (c высотой 1000 и шириной 2000 пикселей) и мне нужно уменьшить высоту до 640, ширину до 480 и сохранить. Казалось бы нет ничего про...

Вопрос № 61.027
Здравствуйте!
Потребовалось создать простой ftp client. Использую компонент idFtp Indy 10.1.1. При вызове IdFTP.Get(FileSource, FileDst); дает ошибку Destination file already exists, хотя файла такого у меня нет. FileExists(FileDest) дает false. Что у меня неправильно?

Приложение:

Отправлен: 02.11.2006, 13:55
Вопрос задал: dobroman (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PaVeL_Ekt
Здравствуйте, dobroman!

Попробуй
IdFTP.Get(FileSource, FileDst, True);

Или лучше сделай
...
if SaveDialog1.execute then
if FileExists(savedialog1.filename
if MessageDlg('Rewrite File',MtConfirmation,[mbYes,mbNo],0)=mrNo then Exit else
begin
...
IdFTP.Get(FileSource, SaveDialog1.FileName, True); // True - перезаписывать если уже существует !!!
end;

И пробуй разные каталоги и файлы

Приложение:

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL

Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 02.11.2006, 14:18


Вопрос № 61.045
Товарищи эксперты! У меня проблема. На форме размещены PageControl, DataSource и Table из закладки BDE. Так вот, при переходе на каждую закладку у меня меняется файл базы(students.db->admin.db). Только при этом переходе получается ошибка "DbEdit27: P_chten not found". DbEdit27 это текстовое поле с одной из форм, она использует как раз students.db(P_chten - одно из полей). Ошибка происходит сразу же после Table1.Active:=true. Помогите пожалуйста.
Отправлен: 02.11.2006, 16:48
Вопрос задал: EZ1k (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PaVeL_Ekt
Здравствуйте, EZ1k!

возможно в Table1 не добавленно данное поле, двойной клик по таблу добавить все поля.
очень легко проверить добавь DBGrid Прилинкуй и увидеш какие поля грузяться, а какие нет.

а без кода трудно сказать в чем проблема, может в коде !!!
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 03.11.2006, 07:10


Вопрос № 61.067
Здраствуйте Уважаемые эксперты,
Помогите пожалуйста решить проблему, как мне можно зделать так чтобы в определённую переменную можно былобы зачунуть значение 127^113.
Посмотрите пожалуйста в приложении, там переменная p должна принимать максимальное значение 127^113.
з.ы Я знаю что лонгинт для етого будет мало.

Приложение:

Отправлен: 02.11.2006, 21:40
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: DeVampir
Здравствуйте, Станислав!
Никаким стандартным способом этого не сделать. Придется реализовывать "длинную" арифметику. Ее суть в том, что число (возьмем десятичную СС) разбивается на разряды (т.е. на цифры - можно по 2 или больше) и каждый разряд записывается в отдельную ячейку массива. Массив разумеется должен быть динамическим (иначе он будет ограничен по вместимости) и нулевой его элемент может обозначать количество разрядов (длину массива). Затем нужно реализовать процедуры сложения длинных чисел (складываем каждый разряд и если сумма больше, добавляем единицу в старший разряд) и умножения на число (такой же принцип - каждый разряд умножаем на число). После этого придется еще сделать перемножение двух длинных чисел, возведение в степень и нахождение остатка от деления (через вычитание или умножение). Потом можно, оперируя созданным типом, легко решить Вашу задачу. Удачи!!!
---------
Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 03.11.2006, 05:49

Отвечает: PaVeL_Ekt
Здравствуйте, Станислав!

а зачем такое громадное значение ???
даже самый большой инт это Int64 = 2^63-1

во вторых в приложении p сперва записывается как константа, а затем
в обработчиках обоих кнопок переприсваиваеться.

а работать с очень большими числами можно примерно так:
предварительно перед умножением двух чисел после которого получаеться число выходящее за рамки эти числа делить на определенное число,
а когда нужно, умножать.

можно еще попробовать работать через стринг, но анализ нужен очень большой.
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 03.11.2006, 06:59

Отвечает: chikanok
Здравствуйте, Станислав!
Вам уже дали ответ на ваш вопрос, я лишь хочу дать вам линк на модуль по работе с мультиразрядными числами. Вы реализуете шифрование и он вам подойдёт, но в нём к сожалению нет функции mod. Сейчас работаю над этим.
Удачи!

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 03.11.2006, 19:58
Оценка за ответ: 5
Комментарий оценки:
Спасибо :)


Вопрос № 61.095
Здраствуйте, я пишу файловый менеджер,
написал рекурсивную процедуру поиска файлов.

procedure InsertFiles(From:string);
var
sr:TSearchRec;
begin
Application.ProcessMessages;
if FindFirst(From+'*.*,faAnyFile,sr)=0 then
repeat
if(sr.Name<>'.')and (sr.Name<>'..') then
if (sr.Attr=faDirectory) then begin
//FormMain.Memo1.Lines.Add(From+sr.name);
InsertFiles(from+sr.Name+'\');
end
else
FormMain.Memo1.Lines.Add(from+sr.name);
until FindNext(sr)<>0;
FindClose(sr);
end;

Проблема в том что она не находит файлы в каталогах на дисках. То есть: она находит файлы в корневом каталоге диска, находит сами папки (закоментированная строчка), но она в них не заходит.
При этом если задать поиск на жестком диске то все работает отлично.
Отправлен: 03.11.2006, 06:01
Вопрос задал: Yujin (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Monah
Здравствуйте, Yujin!
Вы поставили слишком много слешей. И зачем такая конструкция "+'' " Почему слешь перед кавычками то! Поставте точку прерывания на строку
InsertFiles(from+''+sr.Name');
И проверяйте значение S

Приложение:

---------
festina lente

Ответ отправил: Monah (статус: 6-ой класс)
Ответ отправлен: 03.11.2006, 06:48

Отвечает: PaVeL_Ekt
Здравствуйте, Yujin!

Вообщем делай так, я проверил - работает
токо мемо на листбокс поменял, и добавил кнопку отмены поиска !!!

Приложение:

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL

Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 03.11.2006, 07:22

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Yujin!
Ага! Я, похоже, догадался, в чем дело.
Папки на CD отличаются от папок на HDD только одним: они ReadOnly, также, как и все остальные файлы.
И sr.Attr для них будет (faDirectory or faReadOnly).
Вообще, писать вот так:
if (sr.Attr=faDirectory) then begin
не очень корректно. Посмотрите примеры в справке (на TSearchRec) - там (внизу) делается маскирование, а не сравнение -
if ((sr.Attr and faDirectory) <> 0) then begin

В общем, исправьте, как я сказал - должно заработать.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 03.11.2006, 09:56
Оценка за ответ: 5
Комментарий оценки:
спасибо работает, проблема в этом и оказалась


Вопрос № 61.098
Здравствуйте,уважаемые эксепрты!
Помогите, пожалуйста, с созданием динамического двухмерного массива.
Проблема в том, что я не могу определить размер его "второго измерения".
В приложении кусок кода, который у меня уже есть, но он определяет только одно "измерение".
Заранее благодарен.

Приложение:

Отправлен: 03.11.2006, 07:10
Вопрос задал: Delphi (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PaVeL_Ekt
Здравствуйте, Delphi!

Делай так SetLength(mas, 100, 100);
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 03.11.2006, 07:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Как раз то что нужно!

Отвечает: Олекса aka SoW
Здравствуйте, Delphi!
Чтобы задать всем столбцам одинаковый размер можна зделать так:

SetLength(mas,100);
for i:=1 to 100 do SetLength(mas[i], 100);

Для динамических массивов можно также задавать разные диапазоны одного измерения.

SetLength(mas,100);
for i:=1 to 100 do SetLength(mas[i], i);

В результате выполнения получится массив, в котором 100 строк, первый столбец имеет 1 елемент, второй 2 и т.д.
---------
Вiк живи - вiк учись.
Ответ отправил: Олекса aka SoW (статус: 2-ой класс)
Ответ отправлен: 03.11.2006, 07:43
Оценка за ответ: 5
Комментарий оценки:
Спасибо!
Нужно создать "квадратный" массив.

Отвечает: Юрий Викторович
Здравствуйте, Delphi!
после 100 через запятую указывай размер второго измерения.
В 6-м делфи работает. Пример в приложении.

Приложение:

Ответ отправил: Юрий Викторович (статус: 1-ый класс)
Ответ отправлен: 03.11.2006, 14:47
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Sattar
var
mas : array of array of real;
i:integer;
begin
SetLength(mas,100);
for i:=0 to 100-1 do
SetLength(mas[i],100);
end;
Ответ отправил: Sattar (статус: 2-ой класс)
Ответ отправлен: 05.11.2006, 13:48


Вопрос № 61.100
Уважаемые эксперты прошу вас ответить на такой вопрос
Создаю таблицы в Database Desktop все в прядке но при открытии в BDE Administrator нажимаю на плюсик чтобы посмотреть наличие их там нет хотя путь указан правильно
Что можете подсказать. Хочу создать локальную базу данных но таблицы не прописываются в проекте и DBGril не может открыть заголовков таблиц почему
Отправлен: 03.11.2006, 07:15
Вопрос задал: Zatyahnyh A.A. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PaVeL_Ekt
Здравствуйте, Zatyahnyh A.A.!

При создании локальных баз я пользовался такой фишкой:

при использовании Table
в свойство TableName прописываем название файла таблицы, вместе с путем.
(пример: c: empase1.dbf)
при нахождении файла базы данных вместе с EXE файлом путь указывать не нужно.

при использовании Query
в свойство DataBaseName прописываем директорию где храняться файлы базы данных.

попробуй так, минуя BDE Administrator
если не поможет
попробуй переустановить DBE (движок БД)
в инете помоему так и называеться.

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 03.11.2006, 07:34


Вопрос № 61.109
Здравствуйте.
У меня следующая задача: нужно изменить размер jpg-а. То есть я открываю, скажем, файл file.jpg (c высотой 1000 и шириной 2000 пикселей) и мне нужно уменьшить высоту до 640, ширину до 480 и сохранить.
Казалось бы нет ничего проще, но не выходит каменный цветок.
Отправлен: 03.11.2006, 09:19
Вопрос задал: Rusland (статус: Специалист)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Rusland!
Алгоритм следующий:
1. Загружаем изображение в TJPEGImage1
2. копируем через буфер в TBitMap1
3. Масштабируем: (в TBitMap2)
Учитывая, что вам все-таки придется использовать неравномерное масштабирование, то просто CopyRect может не хватить. А может и хватить - попробуйте. Иначе - билинейная/бикубическая интерполяция ждет вас с распростертыми объятиями.
4. Копируем через буфер в TJPEGImage2 и сохраняем в файл.

При желани, можно уменьшить кол-во используемых переменных (изображений).
А еще подумайте, зачем вам такая программа. Не проще ли будет это реализовать через Photoshop Scripting?

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 03.11.2006, 09:33


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное