Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: kkuuhhaa
Дата сообщения: 26.07.2011 12:24
karakut2

Что называется: и на том спасибо. искал, как же без этого.
В Compaq фортране это как-то можно решить (useropen), но у меня не этот диалект

bomzzz

разницы нет, но фортран системный дескриптор не показывает, [cenzored]
Автор: bomzzz
Дата сообщения: 26.07.2011 13:22
открой файл в ассемблерной вставке, будет дескриптор
Автор: kkuuhhaa
Дата сообщения: 26.07.2011 14:20
Так его можно и createfile открыть, но будет ли он читать в фортране. Попробую, спасибо, хотя верится с трудом
Автор: bomzzz
Дата сообщения: 26.07.2011 14:43
скорее всего будет. хендл универсальное значение, процесс один и тот же. зависит от особенности компилятора

Добавлено:
таки читай его ассемблером. на фиг тебе вообще этот фортран, им только вычисления удобнее делать. так и в ассемблере это не так уж и сложно. один раз сделать потом всегда считать
Автор: akaGM
Дата сообщения: 26.07.2011 14:49
kkuuhhaa
все эти суматошные вопросы/ответы возникают из-за того, что ты не хочешь чётко сформулировать задачу, а всё: "открыть", "надо читать", "надо доступ" етц...

вот ответь лично мне (ну уважь уж):

1) на Си "надо читать" _после_ того как отработает фортрановский ввод/вывод или в параллель?

и

2)Си и Фортран сосуществуют вместе в коде или нет?
т.е. программа -- это один отдельный исполняемый файл или пара разных и независимых?
Автор: bomzzz
Дата сообщения: 26.07.2011 14:50
я тоже до конца не понял, сишные вставки что ли? не слыхал про такое. может дллки на си написаны...
Автор: kkuuhhaa
Дата сообщения: 26.07.2011 14:52
Никак без него. Там уже многое чего сделано один раз и навсегда. Библиотека Intel MKL и подобное. Шагу не ступить без опыта старших товарищей. Асм исключительно для ускорения простых преобразований в большом обьёме помогает.
Кроме того, один раз не получится. Надо искать, постоянно переделывать, так что... Впрочем уже офтоп.
Как справедливо заметил karakurt2 это разные числа. Будем искать.

Добавлено:
akaGM

Извините, ребята, но у меня действительно не получается сформулировать так, что бы всем и сразу стало понятно, но вроде писал с самого начала про единый модуль

На оба вопроса ответ ДА. Опять же, похоже, karakurt2 понял сразу.
Обьектные модули, написанные на Си используются как подпрограммы Фортрана. И тему открыл именно для СИ. Фортран тут и ни при чём.


Добавлено:
Есть модуль Си, который знает имя файла, но не знает хендл. Как его найти
Автор: akaGM
Дата сообщения: 26.07.2011 15:50
kkuuhhaa

Цитата:
Есть модуль Си, который знает имя файла, но не знает хендл. Как его найти

простейшее решение:
держать в головном модуле переменную
global_filename = 'cупер_крутой_файл.dat';
и передавать/разделять его в/между Ф&Си
о хендлах забыть...
Автор: bomzzz
Дата сообщения: 26.07.2011 19:14
может фортран какой то древний. номер устройства это перфокарты, типа такого. я когда фортран учил не было никаких файлов, может просто не учили
Автор: akaGM
Дата сообщения: 26.07.2011 22:08
bomzzz
я уверяю тебя, что бОльшего статуса ты не получишь... и не поможешь, -- это факт,
лично я пошёл мурзилку читать, угомонись?
Автор: akaGM
Дата сообщения: 27.07.2011 03:22
kkuuhhaa

Цитата:
1) на Си "надо читать" _после_ того как отработает фортрановский ввод/вывод или в параллель?

Цитата:
На оба вопроса ответ ДА.
это говорит о том, что я не умею задавать вопросы
что "ДА" ?
1) параллель?
2) _после_ того, как фортран сделал своё "чёрное дело"?
ответь, плиз, цифрой: 1) или 2)...
Автор: bomzzz
Дата сообщения: 27.07.2011 07:19

Цитата:
Сейчас закрываю файл в Фортране, что бы открыть его в Си.

раз в фортране нет флагов. может попробовать сначала открыть файл в Си с флагами совместной записи\чтения, а потом он откроется в фортране?

Добавлено:
а файл большой? может его один раз открыть считать в память... дальше понятно

Добавлено:
можешь написать специальную программу, просканировать всю память процесса и найти где фортрановский екзешник хранит хендлы файлов. все равно самое простое написать ассемблерную вставку заменяющую в фортране работу с файлами
Автор: karakurt2
Дата сообщения: 28.07.2011 01:07
kkuuhhaa
вот в compaq fortran раньше была функция getfd. для intel fortran аналога не смог найти, но есть другой способ, заключающийся в использовании косвенного вызова, как описано на этой странице.
Автор: bomzzz
Дата сообщения: 28.07.2011 02:00
а в инете до фига спрашивают как использовать loadlibrary и getprocaddress в фортране
чета им отвечают
http://forum.ru-board.com/forum.cgi?action=filter&forum=33&filterby=topictitle&word=%F4%EE%F0%F2%F0%E0%ED
Автор: akaGM
Дата сообщения: 28.07.2011 14:04
кто бы мне объяснил зачем надо одновременно открывать файл в двух модулях?
Автор: karakurt2
Дата сообщения: 28.07.2011 16:48
насколько я понял, проблема состоит в том, чтобы продолжить обработку файла в модуле, написанном на каком-либо другом языке не закрывая его после вызова древней фортрановксой процедуры
Автор: akaGM
Дата сообщения: 28.07.2011 17:19
З А Ч Е М?
сермяга?
// прошу прощения за капсы...
Автор: langobardi
Дата сообщения: 01.08.2011 19:23
Всем привет! У меня вопрос, касающийся перегрузки операторов в С++.
Данный ниже код вызывает ошибку в main в месте присваивания объекту возвращаемого функцией значения.
Компилятор MinGW. Текст ошибки примерно такой: no match for 'operator=' in 'ob=input()'.


Код:
class sample {
    int i;
public:
    //...
    sample operator=( sample &ob);
};

//...
sample sample::operator=( sample &ob)
{
    i = ob.i;
    return *this;
}

sample input()
{
    sample str;
    str.i = 1;
    return str;    
}

int main()
{
    sample ob;

    ob = input();
    
    return 0;
}

Автор: Abs62
Дата сообщения: 01.08.2011 21:14
langobardi
Насколько я помню, временный объект - это rvalue, а rvalue неконстантную ссылку инициализировать нельзя.
Автор: kotlomoy
Дата сообщения: 01.08.2011 21:31
langobardi
а если так?
sample& operator=( sample &ob);
Автор: akaGM
Дата сообщения: 01.08.2011 22:36
тогда придётся писать
return this;,
а присвоением, я полагаю, хотелось бы всё-таки снимать полноценную копию...
Автор: langobardi
Дата сообщения: 01.08.2011 22:37
Abs62
На англ. форуме тоже что-то про rvalue говорили, но я не думал, что причина в этом.
Но теперь я вроде разобрался, спасибо
Эта ошибка из примера в книге Г. Шилдта по Си++... очепатка. Хотя, там ничего в комментариях не говорится про const параметр в функции, получается, что опечатка Шилдта.


kotlomoy
Та же ошибка, Abs62 написал в чём была проблема.
Автор: Red Planet
Дата сообщения: 02.08.2011 19:56
Здравствуйте! Нужно, чтобы кнопка была неактивной, если TEdit'ы пустые и чтобы становилась активной, если все заполнены. Логика примерно следующая.

Цитата:
if (my_tedit->Text == "" || my2_tedit->Text == "") {
        gen_button->Enabled = false;
    }
    else {
    gen_button->Enabled = true;
    }


Куда поставить код, чтобы схватывалось при вводе данных "на лету"? Ввел - стало активным, хотя бы что-то стер - стало неактивным.
Автор: bomzzz
Дата сообщения: 02.08.2011 20:11
для этого надо контрол EDIT субклассировать и считать сколько в него символов набито например
Автор: akaGM
Дата сообщения: 02.08.2011 20:20
Red Planet
вот так навскидку и мб не очень эффективно, но я б в какой-нибудь из след. обработчиков
OnKeyDown()
OnKeyPress()
OnKeyUp()

воткнулся...


Цитата:
для этого надо контрол EDIT субклассировать и считать сколько в него символов набито например
... что абсолютно не отличается от подсчёта символов в порождающем классе, особенно на лету...
Автор: blin1
Дата сообщения: 03.08.2011 02:19
Red Planet
Не надо ничего подсчитывать. Обработчик называется OnChange. Один на все tedit'ы. А код лучше сократить так:

void __fastcall TForm1::EditChange(TObject *Sender)
{
gen_button->Enabled = (my_tedit->Text != "" && my2_tedit->Text != "");
}
Автор: SkLight
Дата сообщения: 03.08.2011 04:34
Доброго времени суток.

У меня есть два CPtrList, и их нужно как-то объединить, что-то наподобие CMapPtrToPtr, но мне нужно чтобы по первому значению определялось второе, а по второму соответственно первое.

Подскажите: есть ли готовые решения или мне самому делать структуру на два указателя и хранить в одном CPtrList? Или есть третий вариант?)
Автор: Molniev
Дата сообщения: 03.08.2011 18:53
В stl-e есть map, можно и структуру с двумя указателями, и просто два CPtrList полагая что по одному индексу связаные значения. В порядке убывания удачности так сказать.
А чем не устравивают: CMap, CMapPtrToPtr, CMapPtrToWord и ещё 5 штук в таком роде?
Автор: SkLight
Дата сообщения: 03.08.2011 20:25
В двух CPtrList лежат указатели на разные классы. Мне их нужно спарить, то есть из первого класса отправлять сообщения второму классу, но именно своему парному. CMapPtrToPtr ищет только по ключу и выдаёт значение, но не ищет по значению выдавая ключ. Заводить два CMapPtrToPtr я не стал, грустно это как-то)
Сделал по другому: в каждый класс добавил переменную на свою пару, и пару функций Get() - Set().
Автор: Red Planet
Дата сообщения: 03.08.2011 20:52
blin1, спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.