OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 17 Сентябрь, 2019 22:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 01:08 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
#56 (Bug, 2015-06-09): fixes in HostFiles
https://redmine.blackboxframework.org/issues/56

Пункт: «Sharing error must be handled in Delete».

Вопрос: если мы при генерации временного имени в HostFiles.Delete продолжаем крутить шарманку при ошибке доступа sharingErr,
Код:
            s := f.state; num := WinApi.GetTickCount(); n := 200;
            REPEAT
               GetTempFileName(path, new, num); INC(num); DEC(n);
               IF WinApi.MoveFileW(fname, new) # 0 THEN res := ok
               ELSE res := WinApi.GetLastError()
               END
            UNTIL (res # fileExistsErr) & (res # alreadyExistsErr) & (res # 87)  >>>> & (res # sharingErr) <<<< OR (n = 0);
            IF res = ok THEN
               f.state := hidden; f.name := new$
            END
то почему эта же логика не распространяется и на остальные — accessDeniedErr и netAccessDeniedErr?
Код:
   PROCEDURE Error (n: INTEGER): INTEGER;
      VAR res: INTEGER;
   BEGIN
      IF n = ok THEN res := ok
      …
      ELSIF (n = sharingErr) OR (n = accessDeniedErr) OR (n = netAccessDeniedErr) THEN res := accessDenied
      …
   PROCEDURE CheckDelete (IN fname, path: FullName; ask: BOOLEAN; VAR res: INTEGER);
      VAR s: ARRAY 300 OF CHAR; t: ARRAY 16 OF CHAR;
   BEGIN
      REPEAT
         Delete(fname, path, res);
         IF (res = writeProtectedErr) OR (res = sharingErr) OR (res = accessDeniedErr)
            OR (res = netAccessDeniedErr)
         THEN
         …

А также на аналогичные циклы подбора временного имени в CreateFile и Directory.Rename?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 02:34 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Цитата:
A flag is needed for suppressing the OK/Cancel dialog when creating a new directory
independent from option 'ask'. This makes it possible to use HostFiles
without any changes in an automatic build system because the CP compiler always uses option 'ask'.
Reported by Josef Templ, 2015-05-29.
Этот пункт на мой взгляд тоже весьма сомнительный.
Код:
    ignoreAsk-: BOOLEAN; (* file/directory operations ignore the 'ask' parameter and don't ask, default FALSE *)
...
  (* use this mode e.g. for scripting, i.e. when modal dialog boxes are not appropriate;
    implicitly uses OK in OK/Cancel dialogs and Cancel in Retry/Cancel dialogs *)
  PROCEDURE IgnoreAsk*;
  BEGIN ignoreAsk := TRUE
  END IgnoreAsk;
  (* use this mode for interactive usage of BlackBox, i.e. when modal dialog boxes are appropriate;
    this is the default behavior. *)

  PROCEDURE UseAsk*;
  BEGIN ignoreAsk := FALSE
  END UseAsk;
Для того, чтобы компилятор не спрашивал, нужно опцию в компилятор добавлять, а не в HostFiles.

Иван Кузьмицкий идею такой опции компилятора в начале 2014 года высказывал. Результат можно посмотреть в дельте E20.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 18:47 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
HostFiles, однако, менее интересен, нежели стрелочки. Бурного обсуждения пока не возникает :)

По первому пункту, нужно добавлять в Delete и в Rename
Код:
            UNTIL (res # fileExistsErr) & (res # alreadyExistsErr) & (res # 87) & (res # sharingErr) --> & (res # accessDeniedErr) & (res # netAccessDeniedErr) <-- OR (n = 0);
               UNTIL (res # fileExistsErr) & (res # alreadyExistsErr) & (res # 87) --> & (res # sharingErr) & (res # accessDeniedErr) & (res # netAccessDeniedErr) <--;
Подробности:
Код:
StdCoder.Decode ..,, ..0d2...3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
 hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
 7.2.s,slH00k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
 NbXmb.2.gW7l2k4a2,6.,U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708T,U..w.wq6V.
 sUGpmWbBxhYhAbndMHT9NY6Mw.sQq2Y6cwB.0.ptFw,Ia5F.0E.M.Zx6cU.ktAcoZimBhWhioh
 gnZcZRCY.2.o36.I16.M.,.JFUbl,E.0ES9.2.2yTL.5yJ5E,5zdGLmmoouqpCLLmoouqpGomC
 5C.2.W40.u22.1cF6FHPMNvPDf9T8Q9fP98SdPNZfP19PFt7F9Rd9Qpt9TdQ99NPPORPNRdMNP
 M5vO3vPlfNZPMPPNjvPZvORtPZvNTNObvQfPNbv9fdBDN8Q.6.6w.IyCU.2.O,2.W.0..B,1cU
 ZT1E.sAE.c46.,.16.c8WFs5.2UEC.M.M.6.,c8fP3d8mBE,5TeEdKLqKKtCLLCJuIepZBGomC
 rl0ks,ktuGdKLqKa2V.ISE.Mos,sc6.,k,Z8.CLLC3b8Rn9P99F9vQ0ks,Uikwm46.Zz,E..W.
 e32.86.c918R85.2.7.,..Y22U,U.2.2YXK9FR81EnXE,wnjl.k.E.0.169Exzzzzz.e,4Euzz
 zzz.8.2.IK3kBuG,Ikmr,2U.EkE.kfU.M.TW.AhmAanBjnRcVZhgRiiwdkFISGoG5bfCTt9BvP
 ZPRPf9TfM9fQTfP5vPZPNRdQfv9hPO9HuyKsaqluGsWKsyHsqnM0nN0HQCnF0rM0nN01DN88E,
 9z4U.kNE.0.p.0.z50EJ0.I.2Gk1k.0.89.U.2.m30.W.0.U,Q.6yzzzzr.k.mzzzzz,eD.uyz
 zzz,myzzzz,Ozzzzz,uzzzzz,5cUZT16.,Um,,UO.,.16.c8U,UE0,62M.1.16v.cwzzzz56wz
 zzz5cy.6x.cw.QU82.4EF4.7cUZT16.,UgU.UOU.2.AU.6.e06.2Uw0m.4k.k08Mtr.0E.cL3E
 .6.e,2.VZ.2.e0.,6YUIU,A80k.mD.GD.eD.mD.GD.mD.0yzzzz,uD.mD.uC.uD.5s1M.1.1cz
 .QUGU,IAczEp.EM4.1czk.k..Uq1Uw1UezzzzTUq1Um1Ug1Uq1Uy1k,e.A.AUy1k,0F.2U,Q.c
 yECUq11.1cu.6zE,Ui11..Uw1Uo1Um1Uo1T.uDA.6x.6v.cw...OD.uDo1cvk.Uu1Um1UkzT.u
 DY..A.6z.6w.cw.6.0E.al58U34j0cUXzIGKXyKqGqtuGXyKqGKWKqtC45.,6.onCE4k2v.0E.
 .5gwL.0.k52.Lf1E.M.nR.cUZT16.,UbU.2.e,2.AU.Ue.E.07M.M.322U.kMU.EBU.U,2.I3t
 fj1.0E6,Z.1czk26.3cUZ50E.696.c46.,.16.c8.2Uw0W.4k80.5cUU.2.G30.e,2.yD2Ue.E
 .m9M,,U,I.AUy1b25s8M.n9.QUm.r,361M.5Q.Y.U.2..c46.,.16.c8U,UE0,68M.b07M1M.B
 45s7M.ZB.s9ESE,U,oIAUy1r.3c,EO9.768E0E0GE.M.b35M5EGl,uG.EN4.1.200kzrkayIWK
 JaKIEWorCLuOoomqmCrRqEH0u4akYqIcyIdGJECpgCJeKoamGESpouqU0romGEOoom4N76LONZ
 fP99PN76NuPDvCPc76IZuH5OF7OJZOF,tEZPN19R9fFH9P996FdNp76BOONnR0Gf4Id0GtKqte
 HEaIbGpWSoW8pIin4ak2OpU8JEuquqKK0GreHEaIb.rN1HcE9uFHeHPM0HMGB86Bf9RPMPPN,N
 D,d6376d8G9eHPM0aErKrq0GRqHESpou4umXKKuGpoCqpCorKLrGLIamR0Gr0GRqHE8HM0nR0G
 rKrq000nR0GayqnumdGLtaKrSKI8mV8rm44EFamR0Gay4NePrN1HM0HcI98I9OEdO1HM0HM0DO
 Nd9J9PPVfFHXCBghhgcogiYhjRgi2iVZicZZUogioBYZUohphhdQbUAdCRccohphBYc3Rccohd
 QbBU7wdkhgipcdZhZ3ZXJiZVg2Yap3UadQ9fNN76ZPNbP8rN1HU7YdjxgiQ8UapZiVdQbUY7DH
 e4KliHEmorMGR9RFdQ9vQ2YAVA,geCZe7ZdU2ZmhA,t6,dNH9PKIwaqtGrtKIt8rI0GH0GI8rm
 UVZhmhgVZgthcsBB..EQSnI0mb8JEWGr0mS0GMam4ak2KIaCpWqk2ak2y2UcogiQioBgohggUi
 VgUm,M8PM0HMFR8FPM09eH0mV8rmEXkRqk4aEc83.7ONNPNdPN,78HeH,dNRPMP1VPMd9Op76B
 ORN9PROMPnR0GfEtcC.A3cJcPY3mGECLR0mY.iHEOKR0066RPNjfC,dFf1UVZiodC,tI98JrN1
 HcE.4odCpW8JeWGnuqk665763d6N76X7AVN8rN1HEn0GRqXI3hdRi4BhghgccP1XdM1HkYO2,N
 D,dHH8H,7JFOFk2a2jOOR1GommqmcFsJFdNRPM66576V76d8G2YmhA,dCv76TvOPM0akWm2,dQ
 9vQkfoBsFYdVRiohcmJijJicAZBA,HEbg,HMFN0Fd8,tQdPON9P,NOR96fvQ996vdD,NP1vO99
 6H9R,NMRvPRPSPvPfvQ,d8HN1HM0a2Bf9ZXUQYUAhipiVZhdZgUYe6,..CIqyqtKKY4KrGKqKK
 IOKL85HtC,dNRdQ2YukouKv.9eH7uCH68J761N6176JN8P.19RdfQ,dCvFVaIeCJISpou4w6Oo
 oma,ZioJid,SJIOKrUdQbBU,,AgoZC,t6,tSVd9RNH18KFtI98JHNTN76X7AXN8rN1MGw8U4Bd
 AhcTBcIZeGBd0h89uLZOF18FTeHNOK,d8,NMd9RgbUQjx3YI3d3N1M0b96pVapZn,r76KbUUL,
 w6Gpo.GbdUUUm.R16AY7Q8UWYcZZBIYdEaEa.aEd.M0HkXkm.u2WGs4KuY3RPNj99,dPfnIMG.
 6F.k2A7.gdjpiZpcdZBj069uqmAZUQYU.22.TX7k2g6cQ.j0sFY7..aU3p7rN1aU76HsI.RPNj
 nR00Y8.a285HtCUA,AVJ,UUQ2B190..kk.K2..UsUUoYU23Un3hVJidphbhcmJCyId.0Xv.HMG
 IiZlS0mriKEGJYKYBU7cNRtQd1,dCvFoaKmGqmuqR0GnuGrEEenSohZxiYgV7A,HMFg,6Hg,Hk
 28rmCLEe1jfQH9R99IZvPdPN59R99N9eQZP1HM0KIbU3,9WUYcZZBQbBoYUWG,EIGKR0GWaKtK
 qlGrrAjd2YGhgiBghhge2YcYhjRgu2Y4BBCLLmorCqkGrr8rR0mrmKmmGEu4p,Eb4qqKqRsQLf
 C,dETuHNOF1eHHtCPUKVmFK0moeHEaIb.UiBgh79Er4qqEuuKR0GXK5kRogukosC4KucCkRcEc
 HMEg6Yhj76576ROGN89,dAVN8rN1we7Ze63YgxhXJ5NuP5PM667uHPM0HM018QVPNR9NF7PTHL
 6RFXjZhYZ33d6NFqy4PPMl9H9fPN76T9Pu4amR0mU0LsK4Uk,u4NFF80kq.ohZdPUBUVVUI53O
 GduI0mfa4.B010H1krmKm.HtCkYsHZ8FFNMdXd2YX2YhAaUYe6,ak2OKE66d0EIyKqG4sCk2a2
 FdN,t6,dHAZUoYUcNRdQs6a4kI0GeW2,,,,jGrU1,..HVapZmFEe1H166.Hk2a27OOBfNFtPN9
 NEKoB.mqrsM1vQ9vI9fPbP8,t601M1M0CIoKqliKWKKqK4FdP9vR.Es.1vQL99,dQ9nIg,A,HW
 mFEq1.k2MGw8UB,sJyKq.oBUd22.U7U7Fn0mFo700AVcIZUQC..gikZgVZCOqomaUYiVJgghgU
 IZd.H.OKLuqk66cP.7N1HM0HM0MFg,Hk2MFNWU.pVL,w6m2kr.A,KIb.HkW.akWm2H68J767Xo
 BhiBgoBhjphUAhn3YnBghhgUogdVVRiUQijhimRgZ3YeA3M0GLr0GRsPN9NUv2Yd3Yug5NOFR8
 8dfP7N8,N9,NAr76N0b02ZWIeZBgihhZJYdQ5N0N0M083Y8HU7EuQfdhfUIbxsEFeIFtHZ8FGL
 ripoAZUQZUAadQ5M0A7S3ka.w8.mWoN8,t6.00UjRhBU7kWEE.w8U5,..a.9eHi1A,m2C3Euuq
 IiHEUIlRY7A7Ud66Ea.aUJp768665FnkW.UaEt.19P6NK2..UskRq.aU7FtkSEEG3q.a.HWL,g
 7.jGuuKK0Gr.aWx2Yk2YIVU.p,.D0.EEKIbGo4k2g6q.akW.Y7.cNHXCxhopcjhiiZg3Jimh,c
 HkWm2.ABUCBghNFZfQPU3p7r,NvP5f9ZPNb96MFZfQTXmhgnBZBMFRGE8pmu4in4O09eH7GYyq
 t.bn44.0kA.cwd.,.L,N.X.0U,2.,E.7.U,w.,6.16.Mjri.K6Ay2hgqRcjhhhBgiZgZJinpZH
 7NhmmY62UlbcZpC.c9h0E.8D2U.EE0E.2.o.0U.M3,k.q44.0Ejrq.gksJ...c9bW3phYpedhA
 E.4D.UigciZgK,6.Z52.m,0.8E.E.4E,k.0.q9.ZT3E.636.c,6.,k8EJE18MtrE.E.6C6.c46
 .,Uz5.2Ue64.,6j0.CE.M.zC.0U.US1ULU.2.e,2.8.2U,I.AUs11.DcUZT16.,Ui6.,6.,UO.
 ,.16.c80S45.2UE00.WMP9UERe0cUZT3E.s1E.c,,.,k8603gwP.0.N,,.p.0E.1M.1U.EJ.6.
 V2AX.k1iW.M03gwP.,6.w62U.EBU.U,.J,U.YLE,k1G,Wk12.F6xzzzzD0D.0E.2U2Rf,6Ibe.
 s36.,Uv,,U0U.2U6A.AU,.p5S04EtzD4.IT.2xzzzzD.EvV2U,ISM.EwV1.d54..U52.0E2,k8
 E.0.F0,.B.0UJUNU5Q3AV02.SED6.HM.,.f.H.SECE2G.2.0EW.k9E.0.1V.2U.E,E.0k14.,M
 .1.0.,Mj.M3E.cIE.c,E.g04EB2.1cx.AUw1Um1Uo1Uq17.16.2Ux0.E.636.c,6.,k8k5E38M
 tr.2.0f.2U.UO.,.1.eWMU02.07s.M.n.J6,M.T2WDA.AUmzT.uC.OD.GDg.,6.J.wF6yk.k.8
 D.uC.OD.GDg.6.2US1ULU.2.0B0.8.0E.4E,k.GDAY.k1Gl.s,RzzzzzDM.M.1.OD4k.Us1Ui1
 Uy1h..1.GDg1,Um11.eC.8D.mD.GD.OD.mD.GDQ.AUu15F.wU.E.W6.K,0E.6B6.c,6.,k860k
 1i0aE,k18H.6076.2V.E.G2Q8s36.,UVU.2.8.0E.Sk.k.4.2.,6.v3.f.0.72,.B.0UJk.U8Q
 .AUNU8Y.AUn.R5KL.M.F54.2T60EvVB.3zzzzz4.YT.oR.ITcB0U,2.0Ej,k9E.0.Z2,6.I.6.
 1c.M.d5CY.s,b5uCS.AU,.l54.oTAU7.J58.YTM.Eu,EtV0.d54...N5.h58.iE,9z4E.0.DF.
 2U.EBE.0.4E.EJYD2.0E6,B5NcUZT1E.s31.0UOU.2.A.c8.2Uw0mE.s05,1czk.k..P.mCA.c
 u.6x.cz.6u.6x...OD.GD.0zzF42.4o.s0xzzzzzL6OM.1U.cxM.1.8DI.AUu1j,WDA.cw.cx.
 cw.6vE,k3i1mE4k3O,qE,9z4E.0.D5,6.I12U.6g6.I3.0E6F.o4,k3qE.M.1.eDQ2AUo11.mC
 .WDI.A.E1Uy1D.OyzzzzB.6yk2Uy11.8D.eD.WC2,AUq17.8DA.6yk,Uo11..k10.,6W.M36.,
 UoU.U4U.2.fU6.Ds8M0k1i3WE0E20.,6F.s36.,UQU.U0U.2U5I.wU.U60UJU.2.C02.O.0E.g
 0.Ds8M0k1mU.c13gwP.,6.252.I12U.wT2U.EJ2QU.YLk.0.Fc,0U62.0EW.k9U.kEE.0.3.,6
 .DM.M.1.0.,Mjr4UJ.,Ue6.2.O.2.fU,.Js.M.z10.uB.S,0E.cc1.0U0.,M.3.16xEGk1mI.E
 rl1U,A.6yk.UyX,2,AUg11.eC.mD.GD.8DI.cz.6xk.Um1..cxE,Ue11.mC.uD.8DI.QVKB.4k
 .Ug1H.WDA.cw...mC.eDod.U7VBQ7QV02U.M.1.1cykBk.uDQ,,Um11.0zzl3Ug11.uD.8D.GD
 I.6z.cyEDUk15.0U.2Ux0UJ.,U2W.U4U.2.f.T.J.4kAE3G.4kNUi1f116uk.Us1F.Ozzl4UW1
 1.mD.uC.eDo4AU.E.uB.S,0E.cC6.,U0.,M.3.16xE,k1u5oRw.M.1.0.,Mj.M3E.c86.,U4.,
 k8.IV1U,wD6.cr.s36.,Uu.,U0.,M.3.16xk.k1aK.Er,M.1.D6.6W.M36.,Ut.,U4U.2.fU6.
 Ds8M0k1m.uk.6.Fc,60,U.Y6.w02U...3.,6.1c.M.p51s4M.Z58.yT,CmOOH,0GI8ouSKK0GN
 0nMKnK0HPqGManIeHEOqoWrmCLEaKr0GYyqt.qE,iudWqk850mm8LtyaUghpRio3YWhgU2hVph
 YFm0Wi7F99PsiRN1Rc67Q37Q97A6V7BRNAZd9Z7AXtB,7Ap7BZdCV7A,t8VtAV7A,d27gD7wD7
 AE7gD7QE7A6Fd.VPAVtAWX0AZu2YpYk,ZkvYksYkUYb2Sd24YzYk.7C7A6b7Vf7Vv7Vf7V,8VV
 7VB8Vl7Vl7V8H01I0LH0nH0LH0rXxYkyYknYkyYkU2b2ab2i42b2420GY.c97ONN1,tD7AEuXo
 YkyYkvYkqYkkYkpYkw66p7V,8V58V38Vl7V38VN8V,7G7AA7AE7AD7AA7QD7gC7wE7A6z,lVyY
 k6ZksYklYkuYkpYkUYa2q51GVGsVGsTGMMGMECLo44g6Z99PM0HM0HsQEnu0sC,dPfHEkfUd,d
 OOUilIEEe1ZVvgV7M0HcI.M0SYoNN.ROM2Zk,u4NFrM8A7.Y6UBU7MGB0UB,maLdNEKoBaGEC0
 G3UUUjN1HU7MFN0.S3kX6H.2Zdg,A,9eHq.ake.sQCWaV3,kI.UV,...EQ66B76.C5.sHUxkI.
 HMGICg52YIVBk2aUatQEEe1F1u4oB2YuEr67k2K28I0vXUwb2qb2yc2ia2a558V,NH7gE7AA7A
 6h7Vf7ViH0vH0DH0XH0fH01H0hb2i4,7E7AA4I0zH01Yy.0I01XxsH7QB7gE7QE7wH7A6l7V,N
 D0H01GTA63GMQb2ad2ib2Sd2ia24YI2oUAgXRgZRinZcZphdhgYhcm76l7V,dP99R1uM5PN.Uz
 gV72eG,839eQyKt0GIuKR0mY.aGR0mY.in4cJ.pVC,EV.A7uKEqXj,222Yukrg,Hc7,R1HM098
 HaIX0GIuKEsQFPM..UVRgXtQUZ,H,.RPNd1..Ye6,.1vM.k4aUaUEJ8EdsEFPN51UcAdCdNMNN
 Fs4KuI5.QbUAgnRhu.cHr76hOEUuEb.HtCcJsQp761eIZOEn86b7AVlbOIECIY4IdiHEGLR0mU
 83Aaq2YDpcU.qU0,cI.AV2hgghAWGnu4m0GbgcQ9vQHtCPU7A7WGt66vlv8591UY,y285sQ...
 MMsQUZNFM1HU7wdG3Yc.oB...6JFOFRO1AVaE6GME8I01H0fH0PH0L1v7V6A7QD0XvcDU5ZkxY
 k9,B8VlFRQb2Sd2426B4H0vH01I076ZFUg4g4vlSo5bFT2Ys6DK1W1ZFEC211maU2b24Y2Bhm,
 oZGhgiBAyn4uEFG6..AarIblAbuIat2Yf2anU1pb2Ca24c2mS2YzYk.VmYkpYk.ZkysFq1aH01
 m6Gs6GMEWGQGsUGsWGMTGMOgb245pFQGMEyH07C8H0LXoYkpYEiYUgb2GEu1qH0vXmUUIc2ia2
 Kb2S6H8Vf7Vn7V,NE7QA7gD0YuYEwdWhgmlVyKtKqIqkK0GNGMEOH0DI01I0rH01Xv66zlOGsX
 GMMGMVGMMg43mUwd2uD0YycF7QB7QE4I01mTo5dlM.VFEWH0Vx6C0GNsE.69,dI91mW2hAM1P7
 6v7V58Vt7VfFU24B0T8V,V.7C0mTo5.g4,NE8Yk6E8I0DYpYk07618V,7AN76V7V,NDKXUwa2i
 b244D8VflSkbcE7AAaH0nH07EM13c.PM19OAbdC,d.7ONhvE2idZhZJiiQcjhB6JFPObP1PuH.
 sI4KtGru0rRqk2aoaw76R79HTPM7PNZvCPcE9uFkdGLmm2c9NuP19NFd6HePH9R3N8PMFR8F,,
 .oZ0gVBIU2hgqZddpB9fQR7HHfP0GeKqtGLLKKwKKEe1LONZfPYYf2Y4BhgtQ,7HTHEWorCb4,
 CJuG4gA,7GTXH,gVl2Y,3ikZhjxgjpZdRgj3Ym2Y2xhXZhjxgj,CHECJXmorS4EO0mVOIay4Up
 2Y2ZitZdjxAUq2YaxhgNNZPOPvNRNO5Xr2Yj3iZNOPvNk4WHEmqm4KnaqqS42Yl2YBxhqhgiQg
 pJiUIaUQcj3itpZXhCCHEmoouaiQgpJCd76VOO5vORtMfXp2YHZCVf95PRZHP0GY4KrGKLCqus
 B,7J1fMNHLCquc.PM1z6V58V18Vp7VPc.3tPPvM5OP79PHfP9f998S9vMFt7NPORv7Hd6,dM3P
 D,vRHfP99Q19RF96PNR,tMpt93fMPtP3PNZXXxB0KEiHECKm0GG8KlyGl8KEOGH0mvaKr2YiwZ
 IhgnZCkR0mmCKoyKECF0vF09G0vF09F0vF01mR0GtKqkIUBoVW.6B.22eHNWHRCHQ0mJ01cQ.g
 VBwW24a2mZGsXGMRGMQ22UUQ4kO26lFUGsVg4tlZg4,7C72qXkcCPM9,dD7QA7wG7wFqX9NCYc
 24a2C5r7VPM9,dE7gD7wCmYuYkyYkUwc2Kc2i4vFQga2iV0I2.....05.kK..sM.2YwZjUggsB
 ho3YvgVZRgcxBV76x76Rt9T9N59AV7AV7A,tCP.AaUobUo3.4HEin4CKoqqrGKEqGv0GO0HM0G
 Lymr.4XvcQ9PM7XBIUd3ipBh9ZamoaiQecxhrZdjxg,ZhrBgtRi72ZesH7gC7gD0Ys66llPGME
 OH07Eq1i17A6d7VfFUoa24a2K6,7F72sGIZdgV0AB.KIwKaBAVgxB,dCvFXaKqQiiYAuGeWqoC
 LI8GFamRqUitRX76pND.UChgr3ZgxhXZZUocd,1vQLP8rN1moroZHdQ683dQ9vQc6HtC,,RNGG
 bgxBRVnB3,,m2wiUIbxcPSrMuGbKqvSJtaKuIicod7ZddQbUwiiwemBB8owGrmWmK4nIiHEuqm
 A4B8PfvQFvCH68Yc244EE0I0LXkYEmYxYky661GTGsPGMOGMMGscGMVGsUw7y14YvMB7oP2a2y
 b24b2C6l7V,d8Hl2uqmIaUIbxcFUY,23Y3.11r,sI.EE.U7,o3A3UA,UiFNuGbKaL,Z1.U0,.I
 4B8Pf1.A522..00w4kc.T0UvMB...8k4qE7GsZGMOG6DGM2Yc2djRCB0ogdlW.66v76l7AHdCP
 cQ9vQ66VN15eQ9PM.PsEp7L3fMPtP.6L3fMtuP7vMV,Vd9H66l7APsEp7L....Xd9H66l,....
 IaiAVU2aBIiZRC.Z1.....6AR,cC....41.....81W1....sARN0,7A8F0jYzYkysCqH0LXxcD
 qk4qF0vH09X9Zkt.A52Y,ZES1MIUDFNGMEW2UndH9vRBOONHdKKn0GNGME0I0dB7AC7AD665fQ
 44,78jOORPEsEZOF18J9uLROFjO8N76z7Vgd2Kc2q5t7V5GEuH0DX.ZkkYkx6CSYpMDWXDFOGM
 TA63mVw5VVx6A0mTEOA426,7Cm1q10mSg4,dA7wC7AC7wHuI09I0vm4uEF..R,00p7BddCZtA,
 t8VtA6F99Pk48EFy4Ui,23s7.Uk,22kK.UUFE.EE..66l96x76ginhgYpZs3Yvg,.krmKmuGw0
 0Z1..UB.EXktYAY8.MRbPN796pND,,.yIqGKImqrY33NRbPN7f98GK0GXa4QicBgmhgYBZvAVc
 I3x7V38Vp7V,8VL8VZ7VV7VfFS2YpRiZZA0GJa0NuPQ8Z1UUEF.A7d1u0a0EaU4BhgVYVGhgiV
 cYhjRggkrmKmuWWEFK5c6o6kkkRaEI6C7QEyXysCmYrYk1Zkp6DiYt.A5cI9fP66D8VfFUg4j7
 V,tEFPN.2YzMBUsYkwUxcD8181cE0GNGMTGME8X.NBmXpMDqXyMB7A6l,T8V,d86HsI85.,,.a
 2ELsQH,6HE,q.6BsF01F,.YhmhgVNS..X7Cb79,7GT1.5vM.K422KnIqEtKqtEE6F99PM150q0
 .Y9.6ARVl25PsEp7L....X,fN17ONN1....EMu0.....41......0HL.....kM.ZPNUsgVGYEy
 XyUxUxUBc77ACeXv66ZFEGomUUIY,ZkzYE8Y9dC7AA7Y0NEyYW2YyYkl66x7VFGQA4plV2Yo.8
 Y1tD018H0nH0LX,dEu1Q7X7VxFU24,NE7wCKXosE7gH7QG7QBCH0vXU25g4vFQAZBA,aEd.k2w
 6U4VCVc2CdHKoBj99kIMG.6FC2k2A,HWL,HnaEXkfW0gggcPA3EeEEUukrM0Hk2g6K2.j0sF.9
 eQyKtWWBU7MFRm4a.HMJUc.576B190Ud2Ya.kk....6C66.sQMOg6sHcP2YkUMYkUI4,tEF1.y
 XysCCI0TI01XpcE4YDZkUAa2ia2C6pFTgb2i4DmSQ7sDcA8I0vX.761GE8XysBmH0vH0PH0rH0
 vX,dEmYCZkUI4LmWGMTY4VV0dDiXAdCuXUw6fFUkPcD8YwYEqX176xlTg424B0lFEWGtkS2bdo
 ZBAVEJ8MJZ0.UcA7.2iVFR.kR00.kREdICeX7pdIVGtCPUKFECLRU,B9b,TW1,,VU.AaqsH.qU
 0,AVG,q.G268B1m0GbgcQA3PU7A7W000j199IZXZRA91a0cQUn,..UVRAC5AhZ,qU7M0T0.RHu
 ...6JM1AV7A74qtiKEG3U7c7AV7M098Hg,Hk2ICI5CqkuqlKKqqk2aU7gcC,Y7U7ICUjV7MFR0
 K3cQ9XXcQ99RZPSPM09eH0mV.UvgVBIY244p7VlFS2YyMA02SH0vH0nXg2YzYk.7C.qXV,.UU.
 .R1..EXGMQI5rFEyXy6B4Xy6E0XUEMG6hlOMEi1G1KX076zFUo5dFTQ5hV2K6NGLqk2aU7g8EI
 UXcN..o2.44....l,B,Un,..kkCql....RPNd1..w7oB.Rc6..EE2bu2akIbkYaUQZk.ZONR1,
 7818VrlV.nFEuXo6C7QD7AAeXycA7wG66l,X8Vv7VN76v7VVlT26R761OE186l7V4oU4qIqk4y
 F0LH01Yp6CmXpMDCYp6Di2Y6A5rFEWmU4oUuGwaGEWH0xa2GVQd2y6pFQ2YzcD66kSg4,GQ26E
 SkO2YG,2b2a5EMIbB.Q7DmSkQ.UB.Q5N02282qXsMBq.UY,K2W0w2kS.EEq0Uh.QA2A.3100.r
 lm.U,Bc,p3,tC..kw0mRqkm..cS,tCPsM.Yak24A6.Z13.3,.......P,...2YaEqCLEqGq0mK
 CJEiHE8bV,a4EP.P.U4Vn7N8bI,.B0.ZGrEIm4NV,Bc,pZsJYgc61mkuGw80B0AgnlRqUAVHdQ
 68EEqXWEEU77RELsQHFEUA,3.6BsF66F,cB,ND,7GT1.5vM.M8PcI9PMRnmqkVe1..t01OE1mw
 aEE4HQ....cSHkO.2YqgVGYk9tDuXvMDKXxcDq.cCiXUI4,dI9fP66GsSkRo5bFQw6vFT2Y,tD
 cE7wGeXkMB8Y,tHo5XFE6GWXlcCCYUY4A63mVw5VFK0GQGMK0GNGMSg41GVo5y1GXlcD020GO2
 c2mNGMTQ4xFEWXwUx6CmWz6EuXm6AiXsYkm6AKX076ZlZw5xlRg5f,g4,NE0GT.I5xlQGMLqk2
 M083.HM0YiiVUU1,G2kIkMU7M0Ad4tJ.P0kfwBu4999G5,Vk.00I5y4aU7kWm2,,kfoBsF.9Wj
 JCq.a.9eHq.aUJ,.5FnkW.Ua.kkm4AD...W1r,aU7FtkSwB,,q.a.HWL,g7.jGu.u4a02YIVU.
 p,.D0.EE.A,90P627QD72uXn6CS2uXUY6EK0GXG6EEyXy6BcD02Ac2S5fFOkOI6yX.VocDiXqU
 07H0mTEQ2Yc.vlt.K2w7ICkk..9Wd..u4..ELqk2aU7MJUc.5FnkW.EEO0.11...UsEE.kt...
 MM51...cP...rN1R....XdAptAZ76L7Ab,ZEEW2Un3YmYkxYkpMEKH0rX976zFTw5,GMIa2Kb2
 45NFeKqtMNlXzMB0YpMEuXl6E0Xx66lFES1yX1Zk7,0mPkSo5ZFT2YcAc2ab2qZUIY2iW20.Ur
 Ibl.sAAZigVBw1,8VxFNg4,GR24RN1Pc....EXUiYAZHe.3,HMR66..y2F,NVpVi..b19nI.xF
 VI5,8VLGNkOY5,NRb100Y7Q8Z1F,0mSI2.H0c9Qid.Y7cFUYVGhA68NXgkrc9EFK5c6o6kkC5r
 N06C.iXAtBCYp6DiYt.A52YGdP66D0,mOw4C2.2Yz.6Cm1qXyU9dAU0FNo58X.NBmXpMDqXyMB
 7A6lFSw7e0m2CZm,EE.U7,o3CrI.m2I.UoU57AeXmhA66V,k4UW,.UjVkEMu0W1....MAU1,..
 .ENEMIiZRCUGUz.qXp.qU0AB....YAY8.cF.cIUcUgkUA6lHKIY,NMU4,44in4Y7Q8.66I2.H0
 c9M8.N0.Y4.PcI9PMgA...A6AD....UuB,....Qj72Ykg,UU.w5..c6..68kH.v,..M9.Ek.IA
 66..r,I.8G0LF0,c9EE25OHR4HP0mJ010mFGsUGsTg4F8Vv7VoZBIklbeZ3D5uPR9RZvPN9P9f
 Qbf9b8R7vEdfQN9F9vQ59.XDJ..oZ1dPd16FCrl0U1Fu4485Et...ktu0.Y62Umb.0E.E8E.k2
 0E.2U..U,Ikmz,0E.0.11D6.0kg6.,6.CcF.,.600E.yX.6.,U0KyH6.2..676.16.6.665Z.2
 U.2Ua5V0.4.4.0E.cUq.2..c4E.k.Ue646.2UEC.6..mEw7169rwKiEw3c0Cy2xBqqmU1xB..i
 V.E..U6U..HE.6wlgR0Oxad.az86Utj00LCjaUojC8.Px....
 --- end of encoding ---


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 17:52 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Евгений Темиргалеев писал(а):
По первому пункту, нужно добавлять в Delete и в Rename

Зачем? Если не можем переименовать a в b из-за ошибки доступа к a, нет смысла пытаться переименовать его в с.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 22:02 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
В подробностях логика детально расписана с примером.
(не работает)
правки внесены
(работает)
Пока мне не ясно, как Ваши рассуждения её опровергают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 08:16 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2365
Евгений Темиргалеев писал(а):
Для того, чтобы компилятор не спрашивал, нужно опцию в компилятор добавлять, а не в HostFiles.

Иван Кузьмицкий идею такой опции компилятора в начале 2014 года высказывал. Результат можно посмотреть в дельте E20.

Если правильно помню, то мотивировали тем, чтобы не лезть лишний раз в компилятор. К тому-же такой тихий режим полезен для консольных приложений, которые не имеют возможности задать вопрос в виде диалогового окна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 10:18 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Евгений Темиргалеев писал(а):
В подробностях логика детально расписана с примером.

Да вот логики-то я и не вижу. Вот цикл подбора:
new := какое-то имя;
MoveFile(old, new);
если файл new уже существует (ERROR_FILE_EXISTS) выбираем новое new и повторяем.

Остальные ошибки относятся к old или к каталогу и переименованием new не решаются.
Если у нас нет прав на создание odc0000, то нет и прав на создание odc0001.
Если old заблокикован, он не разблокируется от изменения new.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 15:10 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Trurl писал(а):
new := какое-то имя;
MoveFile(old, new);
если файл new уже существует (ERROR_FILE_EXISTS) выбираем новое new и повторяем.
...
В этом Вы правы.

Моя ошибка оказалась в том, что проверял под wine. Cейчас посмотрел на вирт. машине в винде. Винда всегда выдаёт ERROR_ALREADY_EXISTS, а вайн, в случае если конкретный файл не доступен, выдаёт ERROR_ACCESS_DENIED. Поэтому эти правки для виндового HostFiles не правомочны.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 15:17 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Иван Денисов писал(а):
Если правильно помню, то мотивировали тем, чтобы не лезть лишний раз в компилятор. К тому-же такой тихий режим полезен для консольных приложений, которые не имеют возможности задать вопрос в виде диалогового окна.
Вы там уже столько раз залезли в компилятор, что можно уже не бояться.
Но даже если эта функциональность обеспечивается вот этим решением через HostFiles, то её стоит явно оформить как фичу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 18:28 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
А если у нас нет уверенности, какие коды ошибок могут возникнуть и что они означают (для винды тоже нет нормальной документации), может их вообще не проверять?
Код:
 UNTIL (res = ok)  OR (n = 0);


Можно бы и вообще от циклов избавиться, используя WinApi.GetTempFileName.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 12:22 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Trurl писал(а):
Можно бы и вообще от циклов избавиться, используя WinApi.GetTempFileName.
Резонно. У меня были похожие мысли -- при условии использования генератора более стойкого к коллизиям. А тут, оказывается, есть системная функция, которая делает тоже самое и со стороны системы гарантирует уникальность имени. Сохранять совместимость с более ранними, нежели WindowsXP, версиями, наверное, уже смысла никакого не имеет.

Кстати, ограничение в 8 букв и другой алгоритм подбора в Rename (инкремент последней литеры в имени) выглядят как очень древние ограничение и оптимизация.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 12:39 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
В замечаниях к GetTempFileName, однако, есть подводные камни:
- файл с подобранным именем создаётся, что не нужно при подборе имени для MoveFile
- алгоритм подбора "limits GetTempFileName to a maximum of 65,535 unique file names if the lpPathName and lpPrefixString parameters remain the same".

Ниже предлагают для большей надёжности использовать GUID-ы. Может быть, имеет смысл применить подобный механизм -- время/случайное число.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 12:53 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 693
Откуда: Псков
А почему для генерации временных имён не использовать бы PID (ид процесса)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 13:46 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Евгений Темиргалеев писал(а):
В замечаниях к GetTempFileName, однако, есть подводные камни:
- файл с подобранным именем создаётся, что не нужно при подборе имени для MoveFile
- алгоритм подбора "limits GetTempFileName to a maximum of 65,535 unique file names if the lpPathName and lpPrefixString parameters remain the same".

Да, уже натнулся, вместо MoveFile надо MoveFileEx с флагом MOVEFILE_REPLACE_EXISTING. Но тут как бы гарантируется, что между созданием имени и его использованием никто не создаст файл с тем же именем.

65535 должно хватить. Нынешний алгоритм тоже пятизначные номера генерирует.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Декабрь, 2017 01:16 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
А где Ваши правки? Я бы взял готовые, чтобы велосипед не изобретать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Декабрь, 2017 11:50 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Вот. Только там много изменений. Выделил зеленым, что к делу относится.


Вложения:
Files_8.odc [40.31 КБ]
Скачиваний: 409
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Декабрь, 2017 14:33 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Евгений Темиргалеев писал(а):
Цитата:
A flag is needed for suppressing the OK/Cancel dialog when creating a new directory
independent from option 'ask'. This makes it possible to use HostFiles
without any changes in an automatic build system because the CP compiler always uses option 'ask'.
Reported by Josef Templ, 2015-05-29.
Этот пункт на мой взгляд тоже весьма сомнительный.
Для того, чтобы компилятор не спрашивал, нужно опцию в компилятор добавлять, а не в HostFiles.

Кстати, в HostFiles уже есть хак для этого.
Код:
IF loc.res = 76 THEN


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Декабрь, 2017 23:36 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2365
Игорь Анатольевич, разумная реализация создания временных файлов. Меня эти 200 попыток создания файла всегда смущали.
Есть основания полагать, что с этим недочетом связан очень редкий баг https://redmine.blackboxframework.org/issues/31

А есть для Linux аналогичная команда GetTempFileNameW ?
Вроде нашел её https://linux.die.net/man/3/mktemp
Это то, что надо, на ваш взгляд?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Декабрь, 2017 11:33 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
По смыслу ближе mkstemp. Хотя mktemp тоже подходит, и с ней даже проще, но есть маленький риск, что другой процесс вклинится и использует только что созданное имя для своих целей.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB