I o error 1784 delphi

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

    msm.ru

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

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

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Бред и I/O Error 1784

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



    Сообщ.
    #1

    ,
    02.01.11, 23:09

      Отлаживаю программу и ловлю сию ошибку. В отладчике смотрю значение переменных и вижу:
      Значение twDoors.Items.Count равно 6.
      http://pikucha.ru/895034
      А значение Nc в в параметрах цикла for 0.
      http://pikucha.ru/895034
      Это бред!
      В поисковиках искал описание ошибки I/O Error 1784, но ничего путного не нашел.
      Это не пойми чего.

      Эврика определяет это как AV.
      :wub:
      Блин. Значение Nc показано в http://pikucha.ru/895035

      Сообщение отредактировано: northener — 02.01.11, 23:11


      northener



      Сообщ.
      #2

      ,
      03.01.11, 23:24

        Эврика была права.


        CodeMonkey



        Сообщ.
        #3

        ,
        04.01.11, 03:34

          И что это было?


          northener



          Сообщ.
          #4

          ,
          04.01.11, 20:36

            Цитата CodeMonkey @ 04.01.11, 03:34

            И что это было?

            Не могу воспроизвести эту ситуацию. Сейчас Эврика тоже рапортует
            2.5 Type : EInOutError
            2.6 Message : I/O error 1784.


            RuSA



            Сообщ.
            #5

            ,
            14.01.11, 13:37

              Расшифровка 1784 ошибки такая: «Имеющийся буфер не подходит для указанной операции»

              Видимо что-то не так с открытием файла FF (или с устройством, на котором открыт файл).
              К сожалению, нет вашего кода чтобы сказать точнее.

              А то что подсказака для Nc «не то» отображает — дык:
              1) неясно в какой именно строке произошла ошибка;
              2) в ранних версиях Delphi (3-7) при включенной отладке могли быть такие глюки, правда с переменными for-цикла, хотя…

              Вот такие соображения.

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

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

              • Предыдущая тема
              • Delphi: Общие вопросы
              • Следующая тема

              Рейтинг@Mail.ru

              [ Script execution time: 0,0211 ]   [ 16 queries used ]   [ Generated: 9.02.23, 19:57 GMT ]  

               
              Германн ©
               
              (2011-01-03 02:06)
              [0]

              Отлаживаю программу и ловлю сию ошибку. В отладчике смотрю значение переменных и вижу:
              Значение twDoors.Items.Count равно 6.
              http://pikucha.ru/895034
              А значение Nc в в параметрах цикла for 0.
              http://pikucha.ru/895034
              Это бред!
              В поисковиках искал описание ошибки I/O Error 1784, но ничего путного не нашел.
              Это не пойми чего.

              Эврика определяет это как AV.
              Так что задам я этот вопрос и на «сырцах».


               
              Германн ©
               
              (2011-01-03 02:10)
              [1]

              Блин. Значение Nc показано в http://pikucha.ru/895035


               
              Palladin ©
               
              (2011-01-03 02:15)
              [2]

              описания var для NameCtrl и второго шорта нет, SizeOf(ShortString) даст 255, телепатор телепатирует о более короткой переменной, отсюда 1784

              а чего скриншоты то одинаковые? )


               
              Германн ©
               
              (2011-01-03 02:25)
              [3]


              > Palladin ©   (03.01.11 02:15) [2]
              >
              > описания var для NameCtrl и второго шорта нет, SizeOf(ShortString)
              > даст 255, телепатор телепатирует о более короткой переменной,
              >  отсюда 1784
              >
              >

              Описания будут представлены, если в этом будет нужда. Твой телепатор врёт телепируя о «более короткой переменной». Переменная типа ShortString всегда имеет размер 256 байт.


               
              Palladin ©
               
              (2011-01-03 02:27)
              [4]

              ) ну 256 так 256, раз нужды нет


               
              Andy BitOff ©
               
              (2011-01-03 03:17)
              [5]

              Вот, блин, народу не спится, да еще и третьего января. =))
              Сорри за оффтоп.


               
              Ляпа
               
              (2011-01-03 04:11)
              [6]

              Rewrite(FF,1);


               
              Ляпа
               
              (2011-01-03 04:17)
              [7]

              procedure BlockWrite(var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

              Description

              F is an untyped file variable, Buf is any variable, Count is an expression of type Integer, and AmtTransferred is an optional variable of type Integer.

              BlockWrite writes Count or fewer records to the file F from memory, starting at the first byte occupied by Buf. The actual number of complete records written (less than or equal to Count) is returned in AmtTransferred.

              The entire block transferred occupies at most Count * RecSize bytes. RecSize is the record size specified when the file was opened (or 128 if the record size was unspecified).


               
              uw ©
               
              (2011-01-03 10:03)
              [8]

              А TCtrl — это точно класс?


               
              Anatoly Podgoretsky ©
               
              (2011-01-03 13:47)
              [9]

              > Германн  (03.01.2011 02:06:00)  [0]

              Не знаю как ты искал, но у меня 10 of 677,000 results


               
              Anatoly Podgoretsky ©
               
              (2011-01-03 13:51)
              [10]

              Только нафига искать в Интернет, там же утонешь, когда с Дельфи поставляется MS SDK

              1784L     ERROR_INVALID_USER_BUFFER


               
              Германн ©
               
              (2011-01-03 19:40)
              [11]


              > 1784L     ERROR_INVALID_USER_BUFFER

              Не знаю причем тут невалидный буфер, но Эврика была права. Это действительно AV.
              Забыл что в отличии от TListView у TTreeView в списке Items присутствуют все ноды, а не только ноды верхнего уровня.
                 for i:=0 to twDoors.Items.Count-1 do begin
                   Door:=TDoor(twDoors.Items[i].Data);

              И не у всех нод в свойстве Data записан указатель на класс TDoor.


               
              Anatoly Podgoretsky ©
               
              (2011-01-03 20:25)
              [12]

              AV это следствие неправильного адреса (буфера) или его размера.


               
              Германн ©
               
              (2011-01-04 01:25)
              [13]


              > Anatoly Podgoretsky ©   (03.01.11 20:25) [12]
              >
              > AV это следствие неправильного адреса (буфера) или его размера.

              Кто бы спорил. Но при чем тут I/O Error?
              Или это ещё одна инкарнация AV?
              Т.е. обращаемся к классу по невалидной ссылке. И в процедуре BlockWrite обращение к полю этого класса вызывает AV, которое переводится Дельфи как I/O Error 1784? Час от часу не легче.

              P.S. Наверно пора учить стримы раз паскалевские методы работы с файлами могут давать такие сообщения об ошибках.


               
              Ляпа
               
              (2011-01-04 01:35)
              [14]


              > паскалевские методы работы с файлами могут давать такие
              > сообщения об ошибках.

              Легко:

              var
                 FF:File;
                 P:^ShortString;
              begin
                 AssignFile(FF,"D:TestTestTest2");
                 Rewrite(FF,1);
                 p:=nil;
                 BlockWrite(FF,p^[0],SizeOf(ShortString));
                 CloseFile(FF);
              end;


               
              Германн ©
               
              (2011-01-04 01:40)
              [15]


              > Ляпа   (04.01.11 01:35) [14]
              >
              >
              > > паскалевские методы работы с файлами могут давать такие
              > > сообщения об ошибках.
              >
              > Легко:
              >

              Прощай Паскаль! Здравствуй Embarcadero!
              Вот только нет уверенности, что Дельфи последних версий не даст мне такого же «смутного» сообщения о такой же ошибке при работе со стримами.


               
              Ляпа
               
              (2011-01-04 01:55)
              [16]


              > Вот только нет уверенности, что Дельфи последних версий
              > не даст мне такого же «смутного» сообщения о такой же ошибке
              > при работе со стримами.

              Хрен редьки не слаще. ИМХО.


               
              Германн ©
               
              (2011-01-04 01:59)
              [17]


              > Ляпа   (04.01.11 01:55) [16]
              >
              >
              > > Вот только нет уверенности, что Дельфи последних версий
              > > не даст мне такого же «смутного» сообщения о такой же
              > ошибке
              > > при работе со стримами.
              >
              > Хрен редьки не слаще. ИМХО.

              Утешил, блин.


               
              Anatoly Podgoretsky ©
               
              (2011-01-04 08:29)
              [18]


              > Кто бы спорил. Но при чем тут I/O Error?

              I/O к тому, что это работа с паскалевскими файлами ввода вывода (I/O)
              а 1784 это код, который вернул ОСовская функция, и это лучше чем безликое AV


              > All errors other than I/O errors and fatal errors are reported
              > with the error codes returned by the operating system.


               
              Anatoly Podgoretsky ©
               
              (2011-01-04 08:31)
              [19]

              > Германн  (04.01.2011 01:40:15)  [15]

              Смутно когда получишь ошибку AV, а не конкретно про буфер. В случае ошибки
              1784 ты именно ее получишь и от потоков. И паскалевский и потоковый
              ввод/вывод опираются на ОС


               
              Ляпа
               
              (2011-01-04 19:23)
              [20]


              > Anatoly Podgoretsky ©   (04.01.11 08:31) [19]
              >
              > > Германн  (04.01.2011 01:40:15)  [15]
              >
              > Смутно когда получишь ошибку AV, а не конкретно про буфер.
              >  В случае ошибки
              > 1784 ты именно ее получишь и от потоков.

              Вот только в случае с BlockWrite ошибка 1784 сама в руки придёт, а от потоков ему ещё придётся её выковыривать -)



              Форум программистов Vingrad

              Модераторы: Poseidon, Snowy, bems, MetalFan

              Поиск:

              Ответ в темуСоздание новой темы
              Создание опроса
              > io error 1784, записать в файл свой тип данных 

              :(

                 

              Опции темы

              KasheyBro
              Дата 26.11.2009, 04:36 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Новичок

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

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

              Код

              type
                TMyData = Array[0..100]of Real;

              //======================

              type
                TMyClass = class(TObject)
                _data:TMyData;
                procedure SaveToFile();
              end;

              procedure TMyClass.SaveToFile();
                 var f:File of TMyData;
                 begin
                   AssignFile(f, 'Test.dat');
                   Reset(f);
                   write(f,self._data);
                   CloseFile(f);
              end;

              Вылезает IO error 1784, где косяк?

              Это сообщение отредактировал(а) KasheyBro — 26.11.2009, 04:48

              PM MAIL   Вверх
              Frees
              Дата 26.11.2009, 08:35 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Эксперт
              ****

              Профиль
              Группа: Завсегдатай
              Сообщений: 2233
              Регистрация: 2.12.2005
              Где: Екатеринбург

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

              описание ошибки, может поможет
              http://support.microsoft.com/kb/186553

              Это сообщение отредактировал(а) Frees — 26.11.2009, 08:39

              ———————

              Кольцов Виктор Владимирович

              PM MAIL ICQ   Вверх
              KasheyBro
              Дата 26.11.2009, 23:12 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Новичок

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

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

              Frees: да я это уже видел, чет мыслей по этому поводу нет
              Проблема в self._data:

              Код

              procedure TMyClass.SaveToFile();
              var f:File of TMyData;
                  d:TMyData;
                  i:Integer;

              begin
                for i:=0 to 63 do
                begin
                  d[i]:=i;
                end;
                AssignFile(f, 'Test.dat');
                Reset(f);
                write(f,d);
                CloseFile(f);
              end;

              — так прекрасно пишет/читает файл

              Код

              var f:File of Real;
                  d:TMyData;
                  i:Integer;
              begin
                AssignFile(f, 'Test.dat');
                Reset(f);
                for i:=0 to 63 do
                begin
                  write(f,self._data[i]);
                end;
                CloseFile(f);
              end;

              — io error 1784. На self._data[i] ругается.
              Почему я не могу в Write передавать собственные поля?

              Или может свой тип данных можно как-то по другому записать?

              PM MAIL   Вверх
              Keeper89
              Дата 27.11.2009, 00:15 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Эксперт
              ****

              Профиль
              Группа: Завсегдатай
              Сообщений: 2580
              Регистрация: 26.2.2009

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

              KasheyBro, попробуйте убрать self..

              Как вариант, можно сделать файл типизированным.

              ———————

              Cogito, ergo sum

              Keeper’s blog
              CnWizards Downloads

              user posted image

              PM MAIL WWW   Вверх
              Teleport
              Дата 27.11.2009, 00:19 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Опытный
              **

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

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

              Не уверен, в ответе — но все же я просто убрал перед data знак подчеркивания, что он меня смутил, потому как вначале стоит. Может в нем дело?? Или я не в ту степь ушел?

              Код

              type
                TMyData = Array[0..100]of Real;

              type
                TMyClass = class(TObject)
                data:TMyData;
                procedure SaveToFile();
              end;

              type
                TForm1 = class(TForm)
                private
                  { Private declarations }
                public
                  { Public declarations }
                end;

              var
                Form1: TForm1;

              implementation

              {$R *.dfm}

              procedure TMyClass.SaveToFile();
              var f:File of Real;
                  d:TMyData;
                  i:Integer;
              begin
                AssignFile(f, 'Test.dat');
                Reset(f);
                for i:=0 to 63 do
                begin
                  write(f,self.data[i]);
                end;
                CloseFile(f);
              end;

              end.

              Этот код откомпилировался без проблем. 

              Это сообщение отредактировал(а) Teleport — 27.11.2009, 00:21

              ———————

              user posted image
              user posted image 

              PM MAIL   Вверх
              pei7a
              Дата 8.5.2011, 12:55 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Новичок

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

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

              это ошибка возникает когда пишешь данные не соответствующих типов в буфер

              PM MAIL   Вверх



















              Ответ в темуСоздание новой темы
              Создание опроса
              Правила форума «Delphi: Общие вопросы»
              SnowyMetalFan
              bemsPoseidon
              Rrader

              Запрещается!

              1. Публиковать ссылки на вскрытые компоненты

              2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

              • Литературу по Дельфи обсуждаем здесь
              • Действия модераторов можно обсудить здесь
              • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
              • Вопросы по реализации алгоритмов рассматриваются здесь
              • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи


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

               

              0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
              0 Пользователей:
              « Предыдущая тема | Delphi: Общие вопросы | Следующая тема »
              Hi,
              
              I have written a service application in delphi 2007 to get updates from our Amazon S3 file folders.
              
              Its pretty simple, it has a CHRON style timer so basically when its between certain hours (usually 1am until 6am) it downloads a file from Amazon S3, stops a service (Firebird server), unzips the file and replaces the old one held locally. It then restarts the firebird service.
              
              All simple stuff but I have had a few clients report the same problem. The Service crashes with I/O error 1784. I think its not downloading the file and hence cant save it. It only happens when proxy servers are in place. And like I say, most clients work fine.
              
              The service is logged on as Local System account.
              
              Here is where it gets tricky. I want to use IE as opposed to the third party download components as i have a lot of clients (300+) and if I use my download comps i have to set proxy settings and store them securely for every client that uses a proxy. So if I use IE to do it then usually IE has the proxy setup and of course I can test this by manually downloading my file from Amazon S3 on the clients server using IE.
              
              I used some code from Torry's delphi pages to do this:
              
              uses
                URLMon, ShellApi;
              
              function DownloadFile(SourceFile, DestFile: string): Boolean;
              begin
                try
                  Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
                except
                  Result := False;
                end;
              end;
              
              However this had a massive problem. IE downloads this to a cache usually (windows version dependant) c:windowssystem 32configsystemprofileappdatazlocalmicrosofttemporary internet files/content.ie5 etc.
              
              now the problem was that we give them about 4gb of data a week and the function above kept copies of all the cached files so in 10 weeks we were using 40Gb of temporary files! not good.
              
              So i changed the code.
              
              I had some more code from torrys delpi pages that downloads a text file into a string value without hitting the hard drive as a file (very useful for downloading a small text file of update dates or versions for example).
              
              function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean;
              var
                hSession: HINTERNET;
                hService: HINTERNET;
                lpBuffer: array[0..1024 + 1] of Char;
                dwBytesRead: DWORD;
              begin
                Result := False;
                s := '';
                // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
                hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
                try
                  if Assigned(hSession) then
                  begin
                    hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
                    if Assigned(hService) then
                      try
                        while True do
                        begin
                          dwBytesRead := 1024;
                          InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
                          if dwBytesRead = 0 then break;
                          lpBuffer[dwBytesRead] := #0;
                          s := s + lpBuffer;
                        end;
                        Result := True;
                      finally
                        InternetCloseHandle(hService);
                      end;
                  end;
                finally
                  InternetCloseHandle(hSession);
                end;
              end;
              
              
              
              but this doesnt download a file but interestingly has a flag of  INTERNET_FLAG_RELOAD
              
              so i ended up using this code i adpated, it works fine but like i say when there is a proxy involved even though i can download the file with IE (with the proxy settings) it returns I/O  error 1784 because there is no file to save.
              
              function GetInetFile(const fileURL, FileName: String): boolean;
              const BufferSize = 1024;
              var
              hSession, hURL: HInternet;
              Buffer: array[1..BufferSize] of Byte;
              BufferLen: DWORD;
              f: File;
              sAppName: string;
              begin
              Result:=False;
              sAppName := 'SyncService.exe';
              hSession := InternetOpen(PChar(sAppName),
              INTERNET_OPEN_TYPE_PRECONFIG,
              nil, nil, 0);
              try
              hURL := InternetOpenURL(hSession,
              PChar(fileURL),
              nil,0,INTERNET_FLAG_RELOAD,0);
              try
              AssignFile(f, FileName);
              Rewrite(f,1);
              repeat
              InternetReadFile(hURL, @Buffer,
              SizeOf(Buffer), BufferLen);
              BlockWrite(f, Buffer, BufferLen)
              until BufferLen = 0;
              CloseFile(f);
              Result:=True;
              finally
              InternetCloseHandle(hURL)
              end
              finally
              InternetCloseHandle(hSession)
              end
              end;
              
              Can anyone see what is wrong with this code, why it might not use the proxy? or does the service have to be logged on by someone with special prvilages?
              
              Any help much appreciated.
              
              PS if anyone knows how to download using IE with proxy straight to the loacation with no cache at all used, even better as this still caches a copy under system profile before discarding.
              
              many thanks 
              
              Andy
              

              Понравилась статья? Поделить с друзьями:
            • I o error 145 avest pki
            • Ibm system x3550 m4 board error
            • Ibm mq error 2538
            • Ibm mq error 2058
            • Ibm mq error 2009