Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: shyrik от Декабрь 19, 2006, 11:38



Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 19, 2006, 11:38
Подскажите, что нужно для того чтобы можно было перенести программу которая создана в ХР в win98. Из ХР в ХР переношу необходимые dll и lib + прописываю в переменных окружения path к необходимым файлам и всё работает. А в win98 такое не срабатывает ( прописываю в автоэкзеке). QT 4.1.4 + mingw. Как быть? Спасибо. :(


Название: Из winXP в win98 ?
Отправлено: bigirbis от Декабрь 19, 2006, 12:24
ИМХО Qt надо под 98 собрать


Название: Из winXP в win98 ?
Отправлено: Racheengel от Декабрь 19, 2006, 15:19
А что именно не работает? Либы не грузятся? или прога падает с ошибкой?


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 21, 2006, 14:14
При попытке открыть файл выдаёт что не найден путь, пишет при этом нужный путь,но в конце добавляет ещё папку такую же. Например C:\temp\temp. И к тому же не хочет открывать wave файлы....хотя для этого и создавалась. Пишет что не может прочесть. Вот такие вот дела. При этом в ХР это всё прекрасно работает. И ещё одно- кто то делел заставку QSpashScreen -ом? прописую его как в assistente а он не работает.  :shock: Может что-то в проэктном файле надо дописать? Спасибо.

добавлено спустя 15 минут:

 #include <QMainWindow>
#include <QApplication>
#include "MainWindow.h"
#include <QTextCodec>
#include <QSplashScreen>
int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QSplashScreen *splash = new QSplashScreen;
    splash->setPixmap(QPixmap("zastavka.png"));
    splash->show();
    Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
    splash->showMessage(QObject::tr("Setting up the main window..."),
                        topRight, Qt::white);
        MainWindow *window = new MainWindow;
        QTextCodec::setCodecForTr(QTextCodec::codecForName("IBM 866"));
        splash->showMessage(QObject::tr("Loading modules..."),
                        topRight, Qt::white);
        window->show();
         splash->finish(window);
         delete splash;
        return app.exec();
    }
Главное чтобы отображалась пару секунд. Спасибо.


Название: Из winXP в win98 ?
Отправлено: Admin от Декабрь 21, 2006, 15:56
Цитата: "bigirbis"
ИМХО Qt надо под 98 собрать


не надо! собирает не OS, а компилятор
тут только отличие в том что в XP есть стиль, которого нигде больше нет


Название: Из winXP в win98 ?
Отправлено: bigirbis от Декабрь 21, 2006, 16:48
Цитировать
не надо! собирает не OS, а компилятор
тут только отличие в том что в XP есть стиль, которого нигде больше нет

Спасибо, учту.  :)


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 21, 2006, 17:12
Так всё же, что делать с win98 и QSplashScreen-ом? :oops:


Название: Из winXP в win98 ?
Отправлено: bigirbis от Декабрь 21, 2006, 17:19
В данном случае QSplashScreen отрабатывает так быстро, что этого никто не замечает, так как основное окно быстро прогружается. Надо задержку ставить.


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 22, 2006, 10:12
Как её написать? Я после splash->show(); прописываю стандартную windows-функцию Sleep (2000); где 2000 -время в мс. Просто происходит задержка появления окна и всё. :cry:

добавлено спустя 1 час 7 минут:

 С QSplashScreen-ом разобрался...:oops:.  Осталась проблема с win98  :?


Название: Из winXP в win98 ?
Отправлено: codeLocker от Декабрь 22, 2006, 10:16
Примерно так

Код:

QApplication app(argc, argv );

UISplash splash(0, Qt::SplashScreen);
splash.show();

QTime time;
time.start();
for(;time.elapsed() < 1000;)qApp->processEvents();


UIMain* mainWin = new UIMain(0, Qt::Window);



Название: Из winXP в win98 ?
Отправлено: Racheengel от Декабрь 22, 2006, 12:01
код в студию, пожалуйста!


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 22, 2006, 12:20
700 строк? При чём здесь текст к 98 винде? :roll:


Название: Из winXP в win98 ?
Отправлено: Racheengel от Декабрь 22, 2006, 18:32
код фрагмента, который должен создавать wav файл и писать в него.


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 26, 2006, 13:43
Разобрался в причинах такого странного поведения. Использую FileMapping- функции для чтения Wave-файлов, а они ( собственно только CreateFileMapping) не хотят в 98 корректно работать. :?  Может у кого-то есть функция для чтения Wave -файлов? :roll:


Название: Из winXP в win98 ?
Отправлено: Racheengel от Декабрь 27, 2006, 00:17
А какая разница, какой файл -wav, jpeg, doc, cpp, exe? Что с ним далее сделать надо?


Название: Из winXP в win98 ?
Отправлено: Tonal от Декабрь 27, 2006, 07:46
CreateFileMapping Нормально работает в win9x. Я его довольно плотно использовал.
Хотя есть некоторые отличия.
Покажи код - может заметим грабельки.


Название: Из winXP в win98 ?
Отправлено: shyrik от Декабрь 27, 2006, 16:14
Это *.h файл. Проверенно, что не срабатывает CreateFileMapping. При чём номер ошибки 0  :twisted:  :oops:

Код:
#ifndef CFileMap_classes_H
#define CFileMap_classes_H

#include <windows.h>
#include <stdio.h>
#define CFILE_INIT dwSize(0), hFile(INVALID_HANDLE_VALUE), hMap(0), lpMapView(0)
void Error(const wchar_t *es);
class CFileMap
{
public:
    CFileMap(): CFILE_INIT {}
    CFileMap(LPCTSTR path, bool write=false): CFILE_INIT
    {
Open(path, write);
    }
    CFileMap(LPCTSTR path, DWORD size): CFILE_INIT
    {
        if(size) Create(path, size);
    }
    ~CFileMap() { CloseMap(); }
   // operator bool(){ return (hFile!=INVALID_HANDLE_VALUE); }
    void    CloseMap();
    bool    Open(LPCTSTR path, bool write);
    bool    Create(LPCTSTR path, DWORD size);

    BYTE*   Base(){ return reinterpret_cast<BYTE*>(lpMapView); }
    DWORD   Size(){ return dwSize; }
protected:
    DWORD   dwSize;
private:
    bool    OpenInternal(LPCTSTR path, DWORD dwAccess, DWORD dwCreation, DWORD flProtect,
                        DWORD dwPageAccess, DWORD size=0);
    HANDLE  hFile, hMap;
    LPVOID  lpMapView;
};
 
inline void CFileMap::CloseMap()
{
    if(hMap) CloseHandle(hMap);
    hMap=0;
    if(lpMapView) UnmapViewOfFile(lpMapView);
    lpMapView=0;
    if(hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile);
    hFile=INVALID_HANDLE_VALUE;
    dwSize=0;
}


inline bool CFileMap::OpenInternal(LPCTSTR path, DWORD dwAccess, DWORD dwCreation,
                                   DWORD flProtect, DWORD dwPageAccess, DWORD size)
{
    if(hFile!=INVALID_HANDLE_VALUE) CloseMap();
    hFile=CreateFile(path, dwAccess, FILE_SHARE_READ, 0, dwCreation,
                       FILE_ATTRIBUTE_NORMAL, 0);
    if(hFile==INVALID_HANDLE_VALUE)
   
    {  
   
        return false;
    }
       
 if(!size) size=GetFileSize(hFile, 0);
   
    hMap=CreateFileMapping( hFile, 0, flProtect , 0, size, 0);
    if(!hMap)
   
    {  
     FILE *f=fopen("log2.txt","wt");
        fprintf(f,"ERROR %ld\n",GetLastError());
        fclose(f);
        CloseMap();
        return false;
    }


    lpMapView=MapViewOfFile(hMap, dwPageAccess, 0, 0, size);
    if(!lpMapView)
   
    {
   
        CloseMap();
        return false;
    }
    dwSize=size;
    return true;
}

inline bool CFileMap::Create(LPCTSTR path, DWORD size)
{
    return OpenInternal(path, GENERIC_READ|GENERIC_WRITE, CREATE_ALWAYS,
                        PAGE_READWRITE, FILE_MAP_WRITE, size);
}

inline bool CFileMap::Open(LPCTSTR path, bool write)
{
    if(write) return OpenInternal(path, GENERIC_READ|GENERIC_WRITE, OPEN_EXISTING,
                                  PAGE_READWRITE, FILE_MAP_READ|FILE_MAP_WRITE);
    else return OpenInternal(path, GENERIC_READ, OPEN_EXISTING, PAGE_READONLY, FILE_MAP_READ);
}

#endif //CFileMap_classes_H


добавлено спустя 6 часов 49 минут:

 Всем спасибо за помощь, разобрался... Работает. С наступающим НГ!!! :wink:


Название: Из winXP в win98 ?
Отправлено: Tonal от Декабрь 27, 2006, 19:43
И в чём было дело?


Название: Re: Из winXP в win98 ?
Отправлено: nata267 от Август 12, 2011, 14:21
Тоже возникла проблема, компилировала на windows 7, а при запуске на win98 ошибка при запуске - файл QTWEBKIT4.dll связан с отсутствующим компонентом USER32.dll:GetLastInputInfo.


Название: Re: Из winXP в win98 ?
Отправлено: LisandreL от Август 12, 2011, 15:26
Последняя Qt официально поддерживавшая win98 - 4.4.3.
Qt 4.5.X де-факто совместима с Win98, кроме WebKit, OpenGL и Phonon.
Qt 4.6.X b и выше - практически полностью Win2k+.


Название: Re: Из winXP в win98 ?
Отправлено: nata267 от Октябрь 13, 2011, 11:02
Последняя Qt официально поддерживавшая win98 - 4.4.3.
Qt 4.5.X де-факто совместима с Win98, кроме WebKit, OpenGL и Phonon.
Qt 4.6.X b и выше - практически полностью Win2k+.

у меня WebKit используется , версия 4.5.1, поэтому и не пошло наверно