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

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


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

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

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

Выпуск № 261
от 10.10.2005, 18:33

Администратор:Калашников О.А.
В рассылке:Подписчиков: 251, Экспертов: 45
В номере:Вопросов: 3, Ответов: 12


Вопрос № 27263: Здравствуйте ! 1. У меня есть программа по вычислению матриц, после вычислений она сохранят результаты в файл см пр. Подскажите каким способом можно прочитать весь этот файл и записать результаты обратно в массив, размерность матриц различна...
Вопрос № 27269: Как при помощи idFTP узнать сущетвует ли данный файл на сервере или нет. Я пробовал использовать вызовы метода List() и последующим ковырянием в коллекции DirectoryListing, но это очень медленно работает, поэтому данный метод совершенно не подходит....
Вопрос № 27279: Здравствуйте. Как можно изменить разрешение рисунка. Например у меня есть два рисунка 800*600 и 1024*768, мне нужно загнать оба в размеры 800*600 и сравнить. Если открывать рисунки при помощи image1.picture, то невозможно получить пиксели канвы. Как ...

Вопрос № 27.263
Здравствуйте !
1. У меня есть программа по вычислению матриц, после вычислений она сохранят результаты в файл см пр. Подскажите каким способом можно прочитать весь этот файл и записать результаты обратно в массив,
размерность матриц различная.
2. Какая функция преобразует строку в массив?
3. В языке VBasic есть оператор 'with', есть ли аналог ему в Delphi?
Если есть, тот каков его синтаксис?

Приложение:

Отправлен: 05.10.2005, 11:46
Вопрос задал: 007Makc (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lector
Здравствуйте, 007Makc!
1.
AssignFile(F, OpenDialog1.FileName); { File selected in dialog }
Reset(F);
Readln(F, S); { Read first line of file }
Edit1.Text := S; { Put string in a TEdit control }
CloseFile(F);
В вашем случае следует использовать цикл по условию eof(F) для определения конца файла.
2. Для этого можно использовать свойство Commatext класса TStringList и его свойство CommaText для преобразования в массив строк строку с запятыми или его же свойство DelimetedText с значению Delimeter, равным вашему разделителю.
3. Есть. Синтаксис такой:
with something do
begin
end;
она импортирует пространство имен выбранной вами переменной или нескольких переменных в следующий за ним логический блок.

---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 4-ый класс)
Отправлен: 05.10.2005, 12:50

Отвечает: Delphin
Здравствуйте, 007Makc!
1. Вопервых непонятно что вы написали!! {} - Это ведь коментарии!!! Или настройки компилятора.
Потом на каком языке вы написали??? Рассылка по Delphi.
Всмысле сохранить??? Как вы сохраняете??
2. Может скопировать посимвольно?
3. А что надо сделать??? Вот допустим смотри пр.

Из всего этого следует:
Вы неописали проблему. Вы написали "Помогите мне я не знаю как сделать то незнаю что"

Приложение:

---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: delphinster@gmail.com

Ответ отправил: Delphin (статус: Студент)
Отправлен: 05.10.2005, 13:39
Оценка за ответ: 2

Отвечает: sir henry
Здравствуйте, 007Makc!
1. Точно таким же способом, каким Вы записывали в файл. Только вместо оператора Write использовать Read.
2. Нет таких функций. Потому что строка это и есть массив - массив символов. Убедиться Вы сможете так:
const
s = 'Это строка!';
Begin
WriteLn('Выводится в консоль вся строка: ', s);
WriteLn('Выводится пятый символ строки: ', s[5]);
End.
3. В Дельфи есть точно такой же оператор. Использование его ограничивается программными скобками Begin ... End, так же как в Бэйсике With ... EndWith.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 05.10.2005, 14:47
Оценка за ответ: 3

Отвечает: Татьяна
Здравствуйте, 007Makc!
1. Прочитать можно с помощью read, либо, если вы хотите совсем просто, с помощью объекта TStringList.
2. Для преобразования строки в массив из контекста именно вашей задачи можно использовать тот же TStringList (см. пример в приложении)

Приложение:

---------
Нет ничего невозможного!!!

Ответ отправила: Татьяна (статус: 3-ий класс)
Отправлен: 05.10.2005, 18:42
Оценка за ответ: 4
Комментарий оценки:
Понятно, спасибо.

Отвечает: Romodos
1)Пример чтения матриц их файла в приложении (надо доработать)
2)А строка - это и так массив
3)Есть функция with - не знаю такая же как в бейсике али нет.
Например есть объект object, у него есть св-ва x и y
with object do begin
x:=1;
y:=2;
end;
То же самое, что
object.x:=1;
object.y:=2;

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: 9-ый класс)
Отправлен: 05.10.2005, 19:41
Оценка за ответ: 5
Комментарий оценки:
Удачное решение, спасибо.

Отвечает: Warrior
Если размерность матриц разная, то необходимо использовать динамический масив.
Я подправил ответ Татьяны, исправил ошибку.
Теперь этот кусок программы:
1. Определяет динамический масив;
2. Считывает файл, определяет количество строк в файле.
3. Считывает Каждую строку и заполняет динамический массив.
Таким образом теперь не надо задумываться о размерности матрицы.

Процедура проверена и рабочая.



Приложение:

Ответ отправил: Warrior (статус: 1-ый класс)
Отправлен: 05.10.2005, 21:00


Вопрос № 27.269
Как при помощи idFTP узнать сущетвует ли данный файл на сервере или нет. Я пробовал использовать вызовы метода List() и последующим ковырянием в коллекции DirectoryListing, но это очень медленно работает, поэтому данный метод совершенно не подходит.
Отправлен: 05.10.2005, 13:25
Вопрос задал: Валерий Кравцов (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: sir henry
Здравствуйте, Валерий Кравцов!
"медленно работает" - в каком смысле? Вы медленно получаете данные для TStrings? Или медленно идет поиск в TStrings?
С первым ничего поделать нельзя. Скорость зависит от скорости соединения.
Со вторым - надо знать методику поиска, которую Вы применяете.
Если для хранения списка Вы используете объект типа TStringList, то у него есть метод Find(), которым можно искать строку в списке. Только список должен быть предварительно ОТСОРТИРОВАН - TStringList.Sort.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 05.10.2005, 15:08

Отвечает: Delphin
Здравствуйте, Валерий Кравцов!
Есть 2 теории:
1. Получить список файлов и смотреть есть ли в нем нужный тебе файл/папка.
2. Попробовать начать загрузку файла и потом оборвать. Если файла нету то тебе скажут ошибку.
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: Студент)
Отправлен: 05.10.2005, 22:20

Отвечает: Bob Johnson
Здравствуйте, Валерий Кравцов!
Протокол FTP подробно описан в RFC 959. И насколько я понимаю, там ЕСТЬ возможность получить информацию по одному конкретному файлу. Вот выдержка из RFC на команду LIST:
LIST (LIST)

This command causes a list to be sent from the server to the
passive DTP. If the pathname specifies a directory or other
group of files, the server should transfer a list of files
in the specified directory. If the pathname specifies a
file then the server should send current information on the
file
. A null argument implies the user's current working or
default directory. The data transfer is over the data
connection in type ASCII or type EBCDIC. (The user must
ensure that the TYPE is appropriately ASCII or EBCDIC).
Since the information on a file may vary widely from system
to system, this information may be hard to use automatically
in a program, but may be quite useful to a human user.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 07.10.2005, 01:50


Вопрос № 27.279
Здравствуйте. Как можно изменить разрешение рисунка. Например у меня есть два рисунка 800*600 и 1024*768, мне нужно загнать оба в размеры 800*600 и сравнить. Если открывать рисунки при помощи image1.picture, то невозможно получить пиксели канвы. Как мне поступить?
Отправлен: 05.10.2005, 16:41
Вопрос задал: Schmak (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Schmak!
В смысле изменить размеры?
Для уменьшения - см. приложение 1.
Для увеличения - см. приложение 2.

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 05.10.2005, 17:06
Оценка за ответ: 5
Комментарий оценки:
Это действительно то, что мне было нужно. Огромное спасибо!!

Отвечает: Силантьев Евгений Александрович
Здравствуйте, Schmak!
Вот два исходника:
Приложение 1 для bmp
Приложение 2 для jpeg
Успехов!

Приложение:

---------
The world is mine! :)

Ответ отправил: Силантьев Евгений Александрович (статус: 6-ой класс)
Отправлен: 05.10.2005, 19:09
Оценка за ответ: 5
Комментарий оценки:
Это действительно то, что мне было нужно.
Особенно пригодилась процедура StretchDraw. Огромное спасибо!!

Отвечает: Denisss
Здравствуйте, Schmak!
Приблизительный пример того, как сравнивать я привел в приложении. Особо его не тестировал, но на тех изображениях, на которых тестировал получил хорошие результаты.

Единственное, о чем хочу предупредить: к пикселам канвы я не обращался, т.к. это очень медленно (дело в том, что обращение к пикселам канвы {TCanvas.Pixel[x,y]} идет через библиотеку gdi32.dll, что заметно увеличивает время доступа к пикселам изображения). Вместо этого я обращался напрямую к пикселам изображения (BMP.ScanLine).

Удачи!

Приложение:

Ответ отправил: Denisss (статус: Практикант)
Отправлен: 08.10.2005, 13:11
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Мне это помогло.


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное