qRegisterMetaTypeStreamOperators<BusinessCard>("BusinessCard");
Π Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ Qt, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ°ΠΌ QString, QByteArray ΠΈ QVariant. ΠΡΠΎΠΌΠ΅ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Qt ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ β QPair<T1, T2>, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°Π½ΠΈΡ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΊΠ»Π°ΡΡΡ std::pair<T1, T2>. ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ QBitArray, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π³Π»Π°Π²Ρ 19. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ QVarLengthArray<T, Prealloc> β Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π²Π΅ΠΊΡΠΎΡΡ QVector<T>. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ ΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Ρ Π½Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Ρ Π²Π΅ΠΊΡΠΎΡΠ° QVector<T>, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π² Π½Π°ΠΏΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°Ρ .
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ Qt, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π·Π΄Π΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ qCopyBackward() ΠΈ qEqual(), ΠΎΠΏΠΈΡΠ°Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Qt, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://doc.trolltech.com/4.1/algorithms.html. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Qt, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°Ρ , ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ http://doc.trolltech.com/4.1/containers.html.
ΠΠ»Π°Π²Π° 12. ΠΠ²ΠΎΠ΄βΠ²ΡΠ²ΠΎΠ΄
ΠΠΎΡΡΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°βΠ²ΡΠ²ΠΎΠ΄Π°. Qt ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²Π²ΠΎΠ΄Π°βΠ²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ QIODevice β ΠΌΠΎΡΠ½ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Β«ΡΡΡΡΠΎΠΉΡΡΠ²Β», ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΡΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈ Π±Π°ΠΉΡΠΎΠ². Qt ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ QIODevice:
β’ QFile β ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΌΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠΌ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ,
β’ QTemporaryFile β ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ,
β’ QBuffer β ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² QByteArray,
β’ QProcess β Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ,
β’ QTcpSocket β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TCP,
β’ QUdpSocket β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΠ· ΡΠ΅ΡΠΈ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ UDP.
QProcess, QTcpSocket ΠΈ QUdpSocket ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Ρ.Π΅. ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π±Π°ΠΉΡΡ. QFile, QTemporaryFile ΠΈ QBuffer ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ Π±Π°ΠΉΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ; ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ QIODevice::seek() Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΎΠΌΠ΅ ΡΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Qt ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° Π»ΡΠ±ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²Π²ΠΎΠ΄Π°βΠ²ΡΠ²ΠΎΠ΄Π°: QDataStream Π΄Π»Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ QTextStream Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΈ ΠΊΠ»Π°ΡΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ΅ΠΊΡΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΈ Π² ΡΠ°Π·Π½ΡΡ ΡΡΡΠ°Π½Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Qt ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠ»Π°ΡΡΡ Qt ΠΏΠΎ Π²Π²ΠΎΠ΄ΡβΠ²ΡΠ²ΠΎΠ΄Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ, ΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π‘++, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ.
QFile ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΎΠ½ΠΈ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΡΡΡ. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅Π»ΡΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², Π² Qt ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΡ QDir ΠΈ QFileInfo, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ°ΠΉΠ»Π°Ρ , ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ².
ΠΠ»Π°ΡΡ QProcess ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ Ρ Π½ΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ Π²Π²ΠΎΠ΄Π°, Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ (cin, cout ΠΈ cerr). ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²ΡΠ·Ρ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ (Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ), Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π Π°Π±ΠΎΡΠ° Ρ ΡΠ΅ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² XML Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ, ΡΡΠΎ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π² Π³Π»Π°Π²Π°Ρ 14 ΠΈ 15, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΈΠΌ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠΌ.
Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Qt β ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° QFile, ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ QDataStream. QDataStream ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π‘++, ΠΊΠ°ΠΊ int ΠΈ double, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Qt, Π²ΠΊΠ»ΡΡΠ°Ρ QByteArray, QFont, QImage, QPixmap, QString ΠΈ QVariant, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»Π°ΡΡΡβΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Qt, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ QList<T> ΠΈ QMap<K, T>.
ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π»ΡΠΉ ΡΠΈΠΏ QImage ΠΈ QMap<QString, QColor> Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ facts.dat:
QImage image("philip.png");
QMap<QString, QColor> map;
map.insert("red", Qt::red);
map.insert("green", Qt::green);
map.insert("blue", Qt::blue);
QFile file("facts.dat");
if (!file.open(QIODevice::WriteOnly)) {
cerr << "Cannot open file for writing: "
<< qPrintable(file.errorString()) << endl;
return;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_1);
out << quint32(0x12345678) << image << map;
ΠΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ», ΠΌΡ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠ°ΠΊΡΠΎΡ qPrintable() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ const char *, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ QString. (ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ QString::toStdString(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΈΠΏ std::string, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π² <iostream> ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° <<.)
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ QDataStream ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ β ΡΡΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π²Π»ΠΈΡΡΡΠ΅Π΅ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Qt ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ (Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π‘++ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ). Π Qt 4.1 Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΠΌΠ΅ΡΡ Π²Π΅ΡΡΠΈΡ 7. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ 7, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ QDataStream::Qt_4_1.
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0x12345678 Π² Π²ΠΈΠ΄Π΅ 32-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΡΠΈΠΏ ΠΊ quint32 β ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π΅Π½ ΡΠΎΡΠ½ΠΎ 32 Π±ΠΈΡΠ°ΠΌ. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ QDataStream ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΡΠΌΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² (big-endian); ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π²ΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ setByteOrder().
ΠΠ°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ ΡΠ²Π½ΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° QFile Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ flush() ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (true ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ :
quint32 n;
QImage image;
QMap<QString, QColor> map;
QFile file("facts.dat");
if (!file.open(QIODevice::ReadOnly)) {
cerr << "Cannot open file for reading: "
<< qPrintable(file.errorString()) << endl;
return;
}
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_1);
in >> n >> image >> map;
ΠΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ° ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ Π²Π΅ΡΡΠΈΡ QDataStream, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅Π³Π΄Π°. ΠΠ΅ΡΡΠΊΠΎ ΠΊΠΎΠ΄ΠΈΡΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ, ΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ Qt 4.1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Qt).
QDataStream ΡΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, QByteArray ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΊΡΡΡΡ Ρ 32-Π±ΠΈΡΠΎΠ²ΡΠΌ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ², Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠ΄ΡΡ ΡΠ°ΠΌΠΈ Π±Π°ΠΉΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ readRawBytes() ΠΈ writeRawBytes(), QDataStream ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π±Π°ΠΉΡΠΎΠ².
ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° QDataStream Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎΡ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ status(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ QDataStream::Ok, QDataStream::ReadPastEnd ΠΈΠ»ΠΈ QDataStream::ReadCorruptData. ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ >> Π²ΡΠ΅Π³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½ΡΠ»Π΅Π²ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ Π² ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΠ² ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ status() Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
QDataStream ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π‘++ ΠΈ Qt; ΠΏΠΎΠ»Π½ΡΠΉ ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΠ΅ΡΠΈ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://doc.trolltech.com/4.1/datastreamformat.html. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ << ΠΈ >>. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ QDataStream: