{"id":742,"date":"2008-05-25T03:12:12","date_gmt":"2008-05-25T03:12:12","guid":{"rendered":"http:\/\/6teen.ru\/?p=688"},"modified":"2008-05-25T03:12:12","modified_gmt":"2008-05-25T03:12:12","slug":"3434","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=742","title":{"rendered":"\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 BLOB \u0442\u0430\u0431\u043b\u0438\u0446\u044b Paradox \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c TRichEdit \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438"},"content":{"rendered":"<p>\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 BLOB \u0442\u0430\u0431\u043b\u0438\u0446\u044b Paradox \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c TRichEdit \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 BLOB \u0442\u0430\u0431\u043b\u0438\u0446\u044b Paradox \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c TRichEdit \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438\n\n\u0410\u0432\u0442\u043e\u0440: \u0421\u0435\u0440\u0433\u0435\u0439 \u041b\u0430\u0433\u043e\u043d\u0441\u043a\u0438\u0439\n\n\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ZLib. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e \u0445\u043e\u0434\u0443 \u043f\u0435\u0440\u0435\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0436\u0438\u043c\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 - \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 .MB-\u0444\u0430\u0439\u043b\u0430, \u0447\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0441 BLOB-\u043f\u043e\u043b\u0435\u043c.\n\n\u041f\u0440\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u0443 \u0444\u043e\u0440\u043c\u0443 frmMain. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 Table.db, \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:\n\n\u0418\u043c\u044f \u043f\u043e\u043b\u044f\t\u0422\u0438\u043f\t\u0420\u0430\u0437\u043c\u0435\u0440\nID\t\t+\nBLOBData\tB\t64\n\n\u0438 Alias \u0441 \u0438\u043c\u0435\u043d\u0435\u043c CBDB, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439.\n\nobject frmMain: TfrmMain\n\nLeft = 476\nTop = 347\nBorderStyle = bsSingle\nCaption = 'Compressed BLOB'\nClientHeight = 235\nClientWidth = 246\nFont.Charset = DEFAULT_CHARSET\nFont.Color = clWindowText\nFont.Height = -11\nFont.Name = 'MS Sans Serif'\nFont.Style = []\nPosition = poScreenCenter\nOnShow = FormShow\nPixelsPerInch = 96\nTextHeight = 13\nobject SB1: TSpeedButton\nLeft = 1\nTop = 209\nWidth = 25\nHeight = 25\nHint = '\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c'\nGlyph.Data = {\n76010000424D7601000000000000760000002800000020000000100000000100\n04000000000000010000130B0000130B00001000000000000000000000000000\n800000800000008080008000000080008000808000007F7F7F00BFBFBF000000\nFF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333\n33333333333FFFFFFFFF333333000000000033333377777777773333330FFFFF\nFFF03333337F333333373333330FFFFFFFF03333337F3FF3FFF73333330F00F0\n00F03333F37F773777373330330FFFFFFFF03337FF7F3F3FF3F73339030F0800\nF0F033377F7F737737373339900FFFFFFFF03FF7777F3FF3FFF70999990F00F0\n00007777777F7737777709999990FFF0FF0377777777FF37F3730999999908F0\nF033777777777337F73309999990FFF0033377777777FFF77333099999000000\n3333777777777777333333399033333333333337773333333333333903333333\n3333333773333333333333303333333333333337333333333333}\nNumGlyphs = 2\nParentShowHint = False\nShowHint = True\nOnClick = SB1Click\nend\nobject SB2: TSpeedButton\nLeft = 25\nTop = 209\nWidth = 25\nHeight = 25\nHint = '\u0423\u0434\u0430\u043b\u0438\u0442\u044c'\nGlyph.Data = {\n76010000424D7601000000000000760000002800000020000000100000000100\n0400000000000001000000000000000000001000000000000000000000000000\n8000008000000080800080000000800080008080000080808000C0C0C0000000\nFF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333\n33333333333FFFFFFFFF333333000000000033333377777777773333330FFFFF\nFFF03333337F333333373333330FFFFFFFF03333337F3FF3FFF73333330F00F0\n00F033333F7F773777373333300FFFFFFFF03333F73FFF3FF3F733330C0F0800\nF0F0333F773F337737373330CC0FFFFFFFF033F777FFFFF3FFF7330CCCCC00F0\n00003F777777F737777730CCCCCC0FF0FF03F7777777FF37F3730CCCCCCC08F0\nF03377777777F337F73330CCCCCC0FF0033337777777FFF77333330CCCCC0000\n333333777777777733333330CC3333333333333777333333333333330C333333\n3333333377333333333333333033333333333333373333333333}\nNumGlyphs = 2\nParentShowHint = False\nShowHint = True\nOnClick = SB2Click\nend\nobject SB3: TSpeedButton\nLeft = 49\nTop = 209\nWidth = 25\nHeight = 25\nHint = '\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c'\nGlyph.Data = {\n76010000424D7601000000000000760000002800000020000000100000000100\n04000000000000010000120B0000120B00001000000000000000000000000000\n800000800000008080008000000080008000808000007F7F7F00BFBFBF000000\nFF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000000\n000033333377777777773333330FFFFFFFF03FF3FF7FF33F3FF700300000FF0F\n00F077F777773F737737E00BFBFB0FFFFFF07773333F7F3333F7E0BFBF000FFF\nF0F077F3337773F3F737E0FBFBFBF0F00FF077F3333FF7F77F37E0BFBF00000B\n0FF077F3337777737337E0FBFBFBFBF0FFF077F33FFFFFF73337E0BF0000000F\nFFF077FF777777733FF7000BFB00B0FF00F07773FF77373377373330000B0FFF\nFFF03337777373333FF7333330B0FFFF00003333373733FF777733330B0FF00F\n0FF03333737F37737F373330B00FFFFF0F033337F77F33337F733309030FFFFF\n00333377737FFFFF773333303300000003333337337777777333}\nNumGlyphs = 2\nParentShowHint = False\nShowHint = True\nOnClick = SB3Click\nend\nobject SB4: TSpeedButton\nLeft = 73\nTop = 209\nWidth = 25\nHeight = 25\nHint = '\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435'\nGlyph.Data = {\nDE010000424DDE01000000000000760000002800000024000000120000000100\n0400000000006801000000000000000000001000000000000000000000000000\n80000080000000808000800000008000800080800000C0C0C000808080000000\nFF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333\n333333333333333333333333000033338833333333333333333F333333333333\n0000333911833333983333333388F333333F3333000033391118333911833333\n38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333\n911118111118333338F3338F833338F3000033333911111111833333338F3338\n3333F8330000333333911111183333333338F333333F83330000333333311111\n8333333333338F3333383333000033333339111183333333333338F333833333\n00003333339111118333333333333833338F3333000033333911181118333333\n33338333338F333300003333911183911183333333383338F338F33300003333\n9118333911183333338F33838F338F33000033333913333391113333338FF833\n38F338F300003333333333333919333333388333338FFF830000333333333333\n3333333333333333333888330000333333333333333333333333333333333333\n0000}\nNumGlyphs = 2\nParentShowHint = False\nShowHint = True\nOnClick = SB4Click\nend\nobject P1: TPanel\nLeft = 0\nTop = 0\nWidth = 246\nHeight = 206\nBevelInner = bvRaised\nBevelOuter = bvLowered\nBevelWidth = 2\nTabOrder = 0\nobject RE: TRichEdit\nLeft = 5\nTop = 5\nWidth = 236\nHeight = 196\nScrollBars = ssVertical\nTabOrder = 0\nend\nobject DBN: TDBNavigator\nLeft = 149\nTop = 209\nWidth = 96\nHeight = 25\nDataSource = DS\nVisibleButtons = [nbFirst, nbPrior, nbNext, nbLast]\nTabOrder = 1\nend\nobject T1: TTable\nActive = True\nDatabaseName = 'CBDB'\nTableName = 'table.db'\nLeft = 5\nTop = 5\nobject T1ID: TAutoIncField\nFieldName = 'ID'\nVisible = False\nend\nobject T1BLOBData: TBlobField\nFieldName = 'BLOBData'\nVisible = False\nBlobType = ftBlob\nSize = 64\nend\nobject OD: TOpenDialog\nDefaultExt = 'rtf'\nFilter = 'RTF-\u0444\u0430\u0439\u043b\u044b|*.rtf|\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b|*.*'\nTitle = '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b'\nLeft = 5\nTop = 35\nend\nobject DS: TDataSource\nDataSet = T1\nOnDataChange = DSDataChange\nLeft = 35\nTop = 5\nend\n\n\/\/ \u0424\u0430\u0439\u043b Main.pas:\n\nunit Main;\n\ninterface\n\nuses\n\nWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\nDb, DBTables, StdCtrls, ComCtrls, ExtCtrls, DBCtrls, Buttons, swDBPanl,\nswRecPos;\ntype\n\nTfrmMain = class(TForm)\nT1: TTable;\nT1ID: TAutoIncField;\nT1BLOBData: TBlobField;\nOD: TOpenDialog;\nP1: TPanel;\nSB1: TSpeedButton;\nSB2: TSpeedButton;\nSB3: TSpeedButton;\nSB4: TSpeedButton;\nDS: TDataSource;\nDBN: TDBNavigator;\nprocedure SB1Click(Sender: TObject);\nprocedure SB2Click(Sender: TObject);\nprocedure SB3Click(Sender: TObject);\nprocedure SB4Click(Sender: TObject);\nprocedure DSDataChange(Sender: TObject; Field: TField);\nprocedure FormShow(Sender: TObject);\nprivate\nEF: boolean;\nprocedure SetButtons;\nprocedure UpdateEditor;\nprocedure StoreFromFile;\nprocedure StoreFromEditor;\npublic\n{ Public declarations }\nend;\n\nvar\nfrmMain: TfrmMain;\n\nimplementation\nuses ZLib;\n\n{$R *.DFM}\n\nconst\nLID: longint = 0;\n\nprocedure TfrmMain.SetButtons;\nvar\nc1: boolean;\nbegin\nc1 := T1.RecordCount > 0;\n\nSB2.Enabled := not EF and c1;\nSB3.Enabled := not EF and c1;\nSB4.Enabled := EF;\nend;\n\nprocedure TfrmMain.UpdateEditor;\nvar\nBuf: TStream;\n\nZStream: TCustomZLibStream;\nid: longint;\nbegin\n\nid := T1ID.AsInteger;\nif (id = LID) and not EF then\nexit\nelse\nLID := id;\nBuf := TMemoryStream.Create;\nT1BLOBData.SaveToStream(Buf);\nif Buf.Size > 0 then\nbegin\nZStream := TDecompressionStream.Create(Buf);\nRE.Lines.LoadFromStream(ZStream);\nZStream.Free;\nend\nelse\nRE.Lines.Clear;\nBuf.Free;\nend;\n\nprocedure TfrmMain.StoreFromFile;\nvar\nInFile, Buf: TStream;\n\nZStream: TCustomZLibStream;\nbegin\n\nif not OD.Execute then\nexit;\nT1.AppendRecord([NULL]);\nInFile := TFileStream.Create(OD.FileName, fmOpenRead);\nBuf := TMemoryStream.Create;\nZStream := TCompressionStream.Create(clMax, Buf);\nZStream.CopyFrom(InFile, 0);\nZStream.Free;\nT1.Edit;\nT1BLOBData.LoadFromStream(Buf);\nT1.Post;\nBuf.Free;\nInFile.Free;\nLID := 0;\nUpdateEditor;\nend;\n\nprocedure TfrmMain.StoreFromEditor;\nvar\nInStream, Buf: TStream;\n\nZStream: TCustomZLibStream;\nbegin\n\nInStream := TMemoryStream.Create;\nBuf := TMemoryStream.Create;\nRE.Lines.SaveToStream(InStream);\nZStream := TCompressionStream.Create(clMax, Buf);\nZStream.CopyFrom(InStream, 0);\nZStream.Free;\nT1.Edit;\nT1BLOBData.LoadFromStream(Buf);\nT1.Post;\nUpdateEditor;\nend;\n\nprocedure TfrmMain.SB1Click(Sender: TObject);\nbegin\n\nif EF then\nbegin\nStoreFromEditor;\nRE.ReadOnly := true;\nDBN.Enabled := true;\nEF := false;\nSB1.Hint := '\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c';\nend\nelse\nStoreFromFile;\nSetButtons;\nend;\n\nprocedure TfrmMain.SB2Click(Sender: TObject);\nbegin\n\nif MessageDlg('\u0423\u0434\u0430\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c?', mtConfirmation, [mbYes, mbNo], 0) = mrYes\nthen\nbegin\nT1.Delete;\nSetButtons;\nend;\n\nprocedure TfrmMain.SB3Click(Sender: TObject);\nbegin\n\nDBN.Enabled := false;\nEF := true;\nSB1.Hint := '\u0412\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f';\nRE.ReadOnly := false;\nSetButtons;\nend;\n\nprocedure TfrmMain.SB4Click(Sender: TObject);\nbegin\n\nUpdateEditor;\nDBN.Enabled := true;\nEF := false;\nSB1.Hint := '\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c';\nRE.ReadOnly := true;\nend;\n\nprocedure TfrmMain.DSDataChange(Sender: TObject; Field: TField);\nbegin\nif assigned(frmMain) and Visible and not EF then\n\nbegin\nUpdateEditor;\nSetButtons;\nend;\n\nprocedure TfrmMain.FormShow(Sender: TObject);\nbegin\n\nEF := false;\nSetButtons;\nDSDataChange(nil, nil);\nend;\n\nend.\n\n\/\/ \u0424\u0430\u0439\u043b CompBLOB.dpr:\n\nprogram CompBLOB;\nuses\n\nForms,\nMain in 'Main.pas' {frmMain};\n\n{$R *.RES}\n\nbegin\n\nApplication.Initialize;\nApplication.CreateForm(TfrmMain, frmMain);\nApplication.Run;\nend.\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 BLOB \u0442\u0430\u0431\u043b\u0438\u0446\u044b Paradox \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c TRichEdit \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[397,434],"tags":[489,105,1196,1384,909,1595,1704,1010],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/742"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=742"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/742\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=742"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}