Вопрос № 121180: Мир вам, уважаемые эксперты!
Помогите добрым советом.
Передо мной стоит задача согласовать написанное на фортране ядро с оболочкой на Дельфи. Другими словами открыть файл записанный программой, написанной на фортране. (В приложении описано, к...Вопрос № 121217: Уважаемые Эксперты.
Как можно (если вообще возможно) использовать функцию(процедуру),
описанную в main_unit из фрейм юнита если известно, что рейм юнит
добавляется на main_form(main_unit).
Задача следующая - на форме должно быть от 1г...Вопрос № 121229: Как в программе например вычисление дискриминанта, задавать не целые цифры например 1-2-3 а 1.1 или 1.5 и тд. А то программа ругается при нажатии на кнопку вычислить.
'1.5' is not a valid integer value...Вопрос № 121273: Есть несколько картинок кнопок и картинка главного окна. Как "одеть" форму в такой "скин"?
З.Ы. У меня 7ой...
Вопрос № 121.180
Мир вам, уважаемые эксперты!
Помогите добрым советом.
Передо мной стоит задача согласовать написанное на фортране ядро с оболочкой на Дельфи. Другими словами открыть файл записанный программой, написанной на фортране. (В приложении описано, как фортран записывает нетипизированные файлы, если это кому интересно)
В настоящее время я решил задачу чтением файла "в сырую" вот так:
var f: file;
Reset(f,1);
BlockRead(f,i4,4);
BlockRead(f,i2,2);
BlockRead(f,r4,4);
...
Все работает, но проблема в том, что чтение происходит очень медленно (20МБ файл загружается свыше 10 секунд). То же самое наблюдается и при записи с помощью BlockWrite.
Можно ли как-нибудь ускорить этот процесс?
С уважением, Лука.
Приложение:
Отправлен: 01.02.2008, 13:49
Вопрос задал: Лука (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Selya
Здравствуйте, Лука!
Попробуйте читать файл используя TFileStream
Это работает значительно быстее, чем через чтение AssignFile(F, FileName) и т.д.
В справке всё доходчиво описано.
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 14:33 Оценка за ответ: 5 Комментарий оценки: Попробую. Просто я где-то читал, что именно доступ через BlockRead считается самым быстрым и надеялся, что мне подскажут как правильно пользоваться размером буфера. Думаю где-то в этой области закавыка.
Вопрос № 121.217
Уважаемые Эксперты.
Как можно (если вообще возможно) использовать функцию(процедуру),
описанную в main_unit из фрейм юнита если известно, что рейм юнит
добавляется на main_form(main_unit).
Задача следующая - на форме должно быть от 1го до (предположительно)
50ти частей одинаковой "структуры". Самое узкое (для меня) место
заключается в том, что в состав "структуры" входит кнопка.
Если у кого есть какие сооражения поделитесь, у меня очень сильное
ощущение того, что я выбрал неправильный путь.
Приложение:
Отправлен: 01.02.2008, 18:09
Вопрос задал: Mastela (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Selya
Здравствуйте, Mastela!
Очень сумбурно.
В модуле main_unit в секции uses надо прописать имя модуля, где у вас фрейм.
Затем просто используйте вашу процедуру (функцию). Если это метод какого-то класса, то так же:
unit MainUnit;
...
uses
Unit2;
...
Form2.SomeProcedure();
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 19:03 Оценка за ответ: 2 Комментарий оценки: Это работает в случиииспользования процедуры(функции) из фрейма. Задача стоит полностью противопроложная.
Вопрос № 121.229
Как в программе например вычисление дискриминанта, задавать не целые цифры например 1-2-3 а 1.1 или 1.5 и тд. А то программа ругается при нажатии на кнопку вычислить.
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Ибатуллин Дамир Дарвинович!
Используйте для коэффициентов уравнения тоже вещественные числа: A,B,C:real.
Для преобразования строки в вещественное число используйте функцию StrToFloat.
Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Специалист)
Ответ отправлен: 01.02.2008, 20:41 Оценка за ответ: 5
В своей процедуре Вы используете функцию IntToStr(), которая по переданной её строке возвращает соответствующее целое число. К сожалению, если аргумент содержит что-нибудь отличное от текстового представления целого числа, выбрасывается исключение. Для решения проблемы можно пользоваться функцией FloatToStr(), но это Вам уже посоветовали.
С уважением, DimonSoft.
Ответ отправил: DimonSoft (статус: 3-ий класс)
Ответ отправлен: 01.02.2008, 21:18 Оценка за ответ: 5
Отвечает: Genia007
Здравствуйте, Ибатуллин Дамир Дарвинович!
ВЫ используете функцию StrToInt(Edit1.Text), которая преобразует строку в целое число, где у вас и возникает ошибка, если вы вводите вещественное число. Используйте функцию StrToFloat, которая преобразует строку в вещественное число и у вас всё заработает.
Ответ отправил: Genia007 (статус: 5-ый класс)
Ответ отправлен: 02.02.2008, 12:53
Вопрос № 121.273
Есть несколько картинок кнопок и картинка главного окна. Как "одеть" форму в такой "скин"?
З.Ы. У меня 7ой
Почитайте http://delphiworld.narod.ru/base/skins.html,
должно помочь
Ответ отправил: Drbear (статус: 6-ой класс)
Ответ отправлен: 02.02.2008, 13:38 Оценка за ответ: 5 Комментарий оценки: Спасибо. Но хотелось бы сразу увидеть ответ, а не лазить по сайтам. В следующий раз будет 3.