Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно реализовать аргумент фунции. ОЗУ. 
:(
    Опции темы
yoweb
Дата 30.5.2013, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.5.2013

Репутация: нет
Всего: нет



Код

void Previewer::loadToMemory(){
    // load into shared memory
         QBuffer buffer;
         buffer.open(QBuffer::ReadWrite);
         QDataStream out(&buffer);
         string = "start start start";
         out << string;
         int size = buffer.size();

         if (!sharedMemory.create(size)) {
             //ui.label->setText(tr("Unable to create shared memory segment."));
             return;
         }
         sharedMemory.lock();
         char *to = (char*)sharedMemory.data();
         const char *from = buffer.data().data();
         memcpy(to, from, qMin(sharedMemory.size(), size));
         sharedMemory.unlock();
}

void Previewer::loadFromMemory()
{
    /*if (!sharedMemory.attach()) {
        ui.label->setText(tr("Unable to attach to shared memory segment.\n" \
                             "Load an image first."));
        return;
    }*/

    QBuffer buffer;
    QDataStream in(&buffer);

    sharedMemory.lock();
    buffer.setData((char*)sharedMemory.constData(), sharedMemory.size());
    buffer.open(QBuffer::ReadOnly);
    in >> string;
    sharedMemory.unlock();

    sharedMemory.detach();
    //ui.label->setPixmap(QPixmap::fromImage(image));
}



Как мне передавать/получать переменную ЛЮБОГО типа в эти функции?
PM MAIL   Вверх
mes
Дата 30.5.2013, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(yoweb @  30.5.2013,  15:16 Найти цитируемый пост)
Как мне передавать/получать переменную ЛЮБОГО типа в эти функции? 

любого - никак.. С++ smile


--------------------
PM MAIL WWW   Вверх
yoweb
Дата 30.5.2013, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.5.2013

Репутация: нет
Всего: нет



плохо)

Это сообщение отредактировал(а) yoweb - 30.5.2013, 18:19
PM MAIL   Вверх
mes
Дата 30.5.2013, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



все зависит от значения слова любой, и точнее какие требования предьявляете к этому любому.. 
раз пользуете Qt, посмотрите на QVariant.. скорей всего именно его и ищете.. 


--------------------
PM MAIL WWW   Вверх
yoweb
Дата 31.5.2013, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.5.2013

Репутация: нет
Всего: нет



header
Код

#define MAINWINDOW_H

#include <QWidget>
#include "previewer.h"
#include <QSharedMemory>

class mem : public QWidget
{
    Q_OBJECT

public:
    mem();

public slots:
    void open();

public:
    Previewer *centralWidget;
    void setStartupText();
    void to(QString string);
    void from(QString string);
};

#endif




source
Код

#include <QtWidgets>
#include <QtWebKitWidgets>
#include "mem.h"
#include "QSharedMemory"
#include <QBuffer>
#include <QDataStream>

QString string;

void mem::to(QString string){
    QSharedMemory sharedMemory(QString("001"));


    // load into shared memory
         QBuffer buffer;
         buffer.open(QBuffer::ReadWrite);

         QDataStream out(&buffer);
         out << QString("TextBuffer");
         int size = buffer.size();

        if (!sharedMemory.create(size)) {
             qDebug() << "Unable to create shared memory segment.";
             return;
         }
         sharedMemory.lock();
         char *to = (char*)sharedMemory.data();
         const char *from = buffer.data().data();
         memcpy(to, from, qMin(sharedMemory.size(), size));
         sharedMemory.unlock();

}

void mem::from(QString string)
{

    if (!sharedMemory.attach()) {
        qDebug() << "Unable to load from memory.";
        return;
    }

    QBuffer buffer;
    QDataStream in(&buffer);

    sharedMemory.lock();
    buffer.setData((char*)sharedMemory.constData(), sharedMemory.size());
    buffer.open(QBuffer::ReadOnly);
    in >> string;
    sharedMemory.unlock();

    sharedMemory.detach();
    //ui.label->setPixmap(QPixmap::fromImag
}


Получаем доступ из дугого класса:
Код

mem * m;
m->to(string);
m->from(string);


Но m->to(string) вносит в оперативную память значение string, а m->from(string) не видит его уже.

Это сообщение отредактировал(а) yoweb - 31.5.2013, 01:57
PM MAIL   Вверх
bsa
Дата 31.5.2013, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



yoweb, используй QVariant, тебе же сказали!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.