Oracle stream write error

Нравится ресурс?

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    [!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь

    >
    Stream write error
    , При сохранении

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    28.07.04, 09:49

      При попытке сохранения файла из ресурса вылетает Stream write error.
      Хотя раньше всё было нормально, а также заметил что эта ошибка вылетает периодически.
      В чём может быть проблема?


      Adil



      Сообщ.
      #2

      ,
      28.07.04, 09:51

        Код — в студию!


        Kamenev_D



        Сообщ.
        #3

        ,
        28.07.04, 09:58

          Есть функция:

          ExpandedWrap disabled

            void __fastcall TForm1::InstallBDE()

            {

               TResourceStream *bde_stream = new TResourceStream(0,»BDE_ONLY», «BDE» );

                bde_stream->SaveToFile(Path_Edit->Text+»BdeInst.dll»);

                delete bde_stream;

                typedef DWORD (CALLBACK* LPRSP)(DWORD,DWORD);

                HINSTANCE hDLL;

                AnsiString BDE_DLL = Path_Edit->Text + «BdeInst.dll»;

                hDLL = LoadLibrary(BDE_DLL.c_str());

                if(hDLL)

                 {

                   LPRSP RSP = (LPRSP)GetProcAddress(hDLL, «DllRegisterServer»);

                   if(RSP==NULL)

                    {

                      ShowMessage(«Не найдена указанная процедура»);

                      return ;

                    }

                   if (RSP != NULL) RSP(0, 1);

                 }

                FreeLibrary(hDLL);

            }

          которая вытаскивает BdeInst.dll и запускает его

          в обработчике кнопки вызываеться эта функция — и получаем эррор(который может появляться через раз)


          Adil



          Сообщ.
          #4

          ,
          28.07.04, 10:48

            Проверь в отладчике, что у тебя в Path_Edit->Text, значение bde_stream->Size (должно соответствовать размеру ресурса), мосмотри что лежит в bde_stream->Memory (должны быть байты как в ресурсе).

            А вообще, TResourceStream не имеет «своего» метода SaveToFile — он его унаследовал от TCustomMemoryStream и поэтому bde_stream->SaveToFile вовсе не добавит ресурс к длл-ке, как ты, имхо, надеешься, просто перепишет файл солдержимым своего Memory…

            З.Ы. Сообщение об ошибке еще может выскакивать, если твоя длл-ка используется при этом.


            Kamenev_D



            Сообщ.
            #5

            ,
            28.07.04, 14:59

              Цитата

              bde_stream->SaveToFile вовсе не добавит ресурс к длл

              Мне надо извлечь из ресурсов


              Adil



              Сообщ.
              #6

              ,
              29.07.04, 08:42

                Цитата

                Kamenev_D, 28.07.04, 13:49
                При попытке сохранения файла из ресурса вылетает Stream write error.

                — а это тогда о чем? :blink:
                Или в ресурсе сама dll-ка? Тогда первый абзац сообщения #4 (впрочем, и последний тоже м.б.) или, еще лучше, FAQ VC: Как засунуть файл в ресурсы и достать его оттуда

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • Borland C++ Builder/Turbo C++ Explorer
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0261 ]   [ 16 queries used ]   [ Generated: 12.02.23, 19:14 GMT ]  

                Here is the log:
                
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: bind variable 'user_id' = '1364'
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: SQL():  select
                 decode(ad_general_permissions.user_has_row_permission_p(1364, 'write', '33', 'FS_VERSIONS'), 't', 1, 0)
                from dual
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: SQL():
                    select desired.file_id,
                           file_title,
                           folder_p,
                           depth * 24 as n_pixels_in,
                           round (fsvl.n_bytes / 1024) as n_kbytes,
                           n_bytes,
                           to_char (fsvl.creation_date, 'MM/DD/YY HH24:MI') as creation_date,
                           nvl (fsvl.file_type, upper (fsvl.file_extension) || ' File') as file_type,
                           sort_key,
                           fsvl.version_id,
                           fsvl.client_file_name,
                           fsvl.url
                    from   fs_versions_latest fsvl,
                           (
                select file_id,
                       file_title,
                       sort_key,
                       depth,
                       folder_p,
                       owner_id,
                       group_id,
                       public_p,
                       parent_id,
                       level as the_level
                from   fs_files
                where  deleted_p = 'f'
                connect by parent_id = prior file_id start with file_id = :file_id
                ) desired
                    where  fsvl.file_id = desired.file_id
                    and    (ad_general_permissions.user_has_row_permission_p (:local_user_id, 'read', fsvl.version_id, 'FS_VERSIONS') = 't' o
                r owner_id = :local_user_id or folder_p = 't')
                    order by sort_key
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: bind variable 'file_id' = '33'
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: bind variable 'local_user_id' = '1364'
                [07/Mar/2002:09:40:22][20044.1100807][-conn270-] Notice: bind variable 'local_user_id' = '1364'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():  select file_type, n_bytes from fs_versions where version_id 
                = :version_id
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'version_id' = '43'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():
                        select group_id from fs_files fsf, fs_versions fsv
                        where version_id = :version_id and fsf.file_id = fsv.file_id
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'version_id' = '43'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():
                        select decode(count(*),0,0,1) from user_group_map where user_id = :user_id and group_id = :group_id
                
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'user_id' = '1364'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'group_id' = '33'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():  select count(fs_files.file_id)
                                                          from fs_files, fs_versions_latest
                                                          where fs_files.file_id = fs_versions_latest.file_id
                                                          and fs_files.owner_id = :user_id and version_id = :version_id
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'user_id' = '1364'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: bind variable 'version_id' = '43'
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():  select
                 decode(ad_general_permissions.user_has_row_permission_p(1364, 'read', '43', 'FS_VERSIONS'), 't', 1, 0)
                from dual
                [07/Mar/2002:09:40:48][20044.1106956][-conn273-] Notice: SQL():  select version_content
                                                 from   fs_versions
                                                 where  version_id = 43
                [07/Mar/2002:09:41:15][20044.1106956][-conn273-] Error: ora8.c:4472:stream_write_lob error writing to connection.  incomplete
                 write of 0 out of 16384
                [07/Mar/2002:09:43:09][20044.1108999][-sched:4-] Notice: Running scheduled proc gc_send_bboard_alerts...
                [07/Mar/2002:09:43:09][20044.1108999][-sched:4-] Notice: Sending alerts for gc-bboard on http://eeduk.unis.edu.gt
                [07/Mar/2002:09:45:02][20044.1110026][-sched:11-] Notice: Running scheduled proc process_email_queue...
                [07/Mar/2002:10:02:13][20044.1115152][-sched:19-] Notice: Running scheduled proc send_scheduled_spam_messages...
                [07/Mar/2002:10:02:13][20044.1115152][-sched:19-] Notice: running scheduled spam sending daemon
                [07/Mar/2002:10:05:18][20044.2051][-sched-] Notice: Running scheduled proc sec_sweep_sessions...
                [07/Mar/2002:10:15:17][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:18][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:19][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:20][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:21][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:22][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:23][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:24][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:25][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:26][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:27][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                [07/Mar/2002:10:15:28][4533.1024][-main-] Warning: unix: attempting again to kill process 20044 after waiting 10 seconds
                [07/Mar/2002:10:15:28][4533.1024][-main-] Notice: unix: waiting for killed process 20044 to die...
                
                

                Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль

                Поиск по форуму
                Расширенный поиск

                во-первых, непонятно зачем Вам этот огород.

                во-вторых,
                FS.ReadBuffer(Buffer, SIZEof(Buffer));

                а кто Вам сказал/обещал, что размер вашего ‘Текстовый документ (4).txt’ кратен SIZEof(Buffer) ?

                в-третьих, а кто MS.Free делать будет?!

                Serge_Bliznykov
                Посмотреть профиль
                Найти ещё сообщения от Serge_Bliznykov


                Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
                Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке — https://slurm.club/3MeqNEk

                Запись потока в файл

                Delphi 7
                Interbase 7
                Вылетает ошибка «Stream write error» (Есть БД, в ней BLOB поле «TRAILER» содержит видеоданные, хочу их считать из базы и запихнуть в файл, затем проиграть т.к. не нашел способа проигрывать данные сразу из поля) Где лохонулся?

                procedure TForm2.Panel3Click(Sender: TObject);
                var
                Stream : TMemoryStream;
                Code : Word;
                begin
                Code:=0;
                Stream:=TMemoryStream(Form1.IBQuery1.CreateBlobStream(Form1.IBQuery1.FieldByName(‘TRAILER’), bmRead));
                Stream.Read(Code, SizeOf(Code));
                Stream.Seek(0,0);
                Stream.SaveToFile(‘F:test.avi’);
                Stream.Free;
                end;

                Вы не создали экземпляр объкекта TMemoryStream
                И Читаете с указетеля = 0. Это что вообще такое? )
                Сейчас пример состряпаю.. .
                У меня не установен интерБейз, поэтому с базой ничего сделать не могу но скажем будет примерно так:

                Stream read/write error on 64-bit application

                I read my physical drive and am having some problems.

                64-bit applications:

                • 512 bytes: Stream read error / Stream write error .
                  • Read : work
                  • ReadBuffer : not work

                  32-bit applications: work on all cases.

                  How to read 512 bytes on 64-bit applications?

                  Updated: I’ve run this application on another PC, it worked. I do not understand why.

                  Updated 2: Thanks to David Heffernan. The code below work. But why for 32-bit applications, it always succeed with the first code?

                  1 Answer 1

                  As per the documentation you need to ensure that the memory that you read in to is sector aligned.

                  File access buffer addresses for read and write operations should be physical sector-aligned, which means aligned on addresses in memory that are integer multiples of the volume’s physical sector size. Depending on the disk, this requirement may not be enforced.

                  Allocate two sectors worth of memory and then advance within that to a sector boundary.

                  After this, ptr points to an aligned location within your over-sized buffer. Perform your direct disk access with the memory starting at this aligned location.

                  The final sentence of the excerpt explains that this requirement may not be enforced which is why your code may work on some machines but not others.

                  Or indeed you may just be lucky with your 32 bit builds that they happen to give you a sector aligned memory address. Your supposed fix in the question edit doesn’t help since GetMem has no 512 byte alignment guarantee. If a call to GetMem happens to return an address that is 512 byte aligned, that’s just chance. You cannot rely on that.

                  There seems to be some confusion, judging from the comments. Let me see if I can spell this out a little more. Two aspects of direct disk access need to be aligned.

                  1. The disk pointer and block size must be sector aligned.
                  2. The memory buffer must be sector aligned.

                  I am referring to the second of these. You are meeting the first requirement, assuming the disk sector size is 512. But you are failing to meet the second requirement.

                Like this post? Please share to your friends:
              • Oracle error 01017
              • Ora 28040 no matching authentication protocol как исправить oracle 19c
              • Ora 01565 error in identifying file
              • Options error unrecognized option or missing or extra parameter s in client ovpn
              • Operation not permitted android как исправить