Re: Unreliable File Deletion
I have only read this one entry your subject so I may not be of any help but LiveCode is written using C++ and here is a link with some info about temporary files; https://en.cppreference.com/w/cpp/io/c/tmpfile The above link mentions, If the program closes the file, e.g. by executing std::fclose, the file is automatically deleted. It seemed to me you were interested in deleting a temporary file and it is possible the ability to delete a temporary file is not built in and won’t be nor is it a bug. If I remember correctly the proper way would be to do a flush on the file instead of deleting it. That deletes everything in the file and you do not bother deleting it because it is deleted automatically when your program closes and after it is flushed the memory used will not be an issue either because it is cleared. JB > On Mar 30, 2021, at 3:02 AM, R.H. via use-livecode > wrote: > > Referring Date: 2021-03-29 09:04:04 +0100 > From: Mark Waddingham > Subject: Re: Unreliable File Deletion > Message-ID: > > Environment: Windows 10, 64bit > LC: Version 9.6.1 > > Dear Mark, Richard and all > > Thank you for your replies ))). > > Your comments are -- of course -- right, but I made a mistake in posting > something that was incorrectly typed. > > Your wrote: >> ll cases of people reporting bugs with 'delete file' on Windows that I >> have seen fall into one of two cases: >> 1) The path they give to 'delete file' is wrong. >> 2) The file they are trying to delete is open by the app, or by another > app. > > I am using URL ("binfile:"&) to read and write from and to the > file. > For deleting I was and I am using and always have been using "delete file > ". > > Unfortunately, I stated this incorrectly when retyping it to compose it as > part of my message as I changed the original statement here and there, but > it is not in the actual statement. This is my mistake to post it as such > and I apologize. > > The file is in a writeable/readable location. It is neither protected, nor > is it used by any other service/app. > > On my system (Windows 10) asking for specialfolderpath("resources") result > in the following path: "C:/Users/Roland/Documents/LC-Recent/LSP_App". This > is so because I put it there. > > It is in the DOCUMENTS folder and therefore should not give problems. > But the same problem with deleting appears also when using > specialfolderpath("documents"). > > At other times, it worked! It is not something that is very transparent for > now. > > Since on the Desktop and in any such user directory I can delete files > without assigning Admin rigths, the problem should not be a system problem. > I can also issue a shell command, as I posted, to delete and it works well > without problems. This at least is my fallback in case LC does not delete > my temporary file/s. So, actually, I use my function and do not care as it > solves what it needs to solve (just replace the wrong "delete file > (binfile.." part and put "delete file "). > > I know that other apps can use files and then it will be possible to delete > such files for good reasons. But that is not the case here. > > I can investigate other possibilities, but nevertheless, it should work in > such directory. If I find the time to check out the error also looking at > the system message, I will do and post if there is anything that makes it > more clear. > > Thanks Richard for posting your additional error investigation. I will > check it out later as currently I am in a rush job. > > Your posting: >> delete file tFile >> if the result is not empty then >> answer the result &" ("& sysError() &")" >> end if > > Regards to everyone here > Roland > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
Referring Date: 2021-03-29 09:04:04 +0100 From: Mark Waddingham Subject: Re: Unreliable File Deletion Message-ID: Environment: Windows 10, 64bit LC: Version 9.6.1 Dear Mark, Richard and all Thank you for your replies ))). Your comments are -- of course -- right, but I made a mistake in posting something that was incorrectly typed. Your wrote: > ll cases of people reporting bugs with 'delete file' on Windows that I > have seen fall into one of two cases: > 1) The path they give to 'delete file' is wrong. > 2) The file they are trying to delete is open by the app, or by another app. I am using URL ("binfile:"&) to read and write from and to the file. For deleting I was and I am using and always have been using "delete file ". Unfortunately, I stated this incorrectly when retyping it to compose it as part of my message as I changed the original statement here and there, but it is not in the actual statement. This is my mistake to post it as such and I apologize. The file is in a writeable/readable location. It is neither protected, nor is it used by any other service/app. On my system (Windows 10) asking for specialfolderpath("resources") result in the following path: "C:/Users/Roland/Documents/LC-Recent/LSP_App". This is so because I put it there. It is in the DOCUMENTS folder and therefore should not give problems. But the same problem with deleting appears also when using specialfolderpath("documents"). At other times, it worked! It is not something that is very transparent for now. Since on the Desktop and in any such user directory I can delete files without assigning Admin rigths, the problem should not be a system problem. I can also issue a shell command, as I posted, to delete and it works well without problems. This at least is my fallback in case LC does not delete my temporary file/s. So, actually, I use my function and do not care as it solves what it needs to solve (just replace the wrong "delete file (binfile.." part and put "delete file "). I know that other apps can use files and then it will be possible to delete such files for good reasons. But that is not the case here. I can investigate other possibilities, but nevertheless, it should work in such directory. If I find the time to check out the error also looking at the system message, I will do and post if there is anything that makes it more clear. Thanks Richard for posting your additional error investigation. I will check it out later as currently I am in a rush job. Your posting: > delete file tFile > if the result is not empty then > answer the result &" ("& sysError() &")" > end if Regards to everyone here Roland ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
On 2021-03-28 18:11, R.H. via use-livecode wrote: @ Peter Reid Your message found my attention. Also I am working on Windows 10 and have the same problem using LC 9.6.1 Indy version. The similar or same problem as you have: I want to delete the text file. The command I issue is "detele file ". The error it returns: "Can't delete file". All cases of people reporting bugs with 'delete file' on Windows that I have seen fall into one of two cases: 1) The path they give to 'delete file' is wrong. 2) The file they are trying to delete is open by the app, or by another app. In terms of (1) - its easy to determine - log the path you are using, or use 'there is a file ' (but make sure the file you are checking for / logging *is* actually the same path as being passed to 'delete file'). In terms of (2) - Windows and UNIX-derived OSes have a critical difference when it comes to filesystems - in UNIX land you can delete a file which another process has open, on Windows you can't. (Note: It is possible for multiple processes on Windows to open the same file, if none have requested exclusive access, but the file cannot be deleted/renamed/moved until it is not open by any process). ... // Delete temp file ... delete file ("binfile:"&tFilePath) ... put the result into tResult ... if "can't delete that file" is in tResult then .. myMSG tHInfo & "File could not be deleted." &CR& tFilePath --> My message handler This script falls into category (1) above - you are giving delete file a binfile URL. The 'delete file' command requires a normal file path, not a URL of any kind. Warmest Regards, Mark. -- Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/ LiveCode: Everyone can create apps ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
> 28. mar. 2021 kl. 22:55 skrev J. Landman Gay via use-livecode > : > > Interesting. Does it also work on a different machine where you aren't the > owner? If so, everything we've heard is wrong. I haven’t tried on a machine where I am not the owner. This may be why it worked. When I come to think of it I am not certain I have been writing to the resource folder in any of the apps I have given my students, but I am quite certain I have read from such files. Tore ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
> 28. mar. 2021 kl. 21:20 skrev J. Landman Gay via use-livecode > : > > > Desktop and documents folders are okay, and it may be possible to read from > the resources folder, but do you actually write to it? I don't know any OS > that allows altering an executable, which includes Mac bundles. I set up an application with the following code in the stack script: on preOpenStack put specialFolderPath("resources")& "/testfolder/" into tURL create folder tURL end preOpenStack In the script of a button I put the following: on mouseUp ask "Write something to go into the resource folder:" put it into tText put "file:" & specialFolderPath("resources") & "/testfolder/test.txt" into tURL put url tURL into tData put tText & return after tData put textEncode(tData,"UTF-8") into url tURLanswer url tURL end mouseUp I then build a standalone for Mac and started the application. After running the script from the button three times I did find the file test.txt in the folder named «testfolder» inside the _MacOS folder in the contents folder of the app bundle. The file contained the exact three lines I had written. Whether or not this will work on windows I don’t know as I do not have any computer running Windows to try it on. Best regards Tore ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
On 3/28/21 1:55 PM, Tore Nilsen via use-livecode wrote: I just made a test application where I am able to create a folder in the resources folder on preOpenStack. I then am able to read from and write to a document in this folder without any problem. This is on macOS Big Sur. The path to my folder in the resources folder in the app bundle is «Contents/_MacOS/testfolder/« and the application can write to this folder without any questions about permissions. Interesting. Does it also work on a different machine where you aren't the owner? If so, everything we've heard is wrong. -- Jacqueline Landman Gay | jac...@hyperactivesw.com HyperActive Software | http://www.hyperactivesw.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
R.H. wrote: > The similar or same problem as you have: I want to delete the text > file. The command I issue is "detele file ". The error it > returns: "Can't delete file". LC's result will tell you only the general fact that a file I/O operation failed, but not why. The syserror() function will tell you why, delivering the specific integer code for the error the OS reported back to LC. Establishing a habit of always including a call to sysError when reporting a non-empty result will save you countless hours of diagnostic time, e.g.: delete file tFile if the result is not empty then answer the result &" ("& sysError() &")" end if -- Richard Gaskin Fourth World Systems Software Design and Development for the Desktop, Mobile, and the Web ambassa...@fourthworld.comhttp://www.FourthWorld.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
On 3/28/21 12:28 PM, ELS Prothero via use-livecode wrote: Folks, This alarms me. In my app, I write a file to specialFolderpath(“desktop”). What are the conditions to make this work on Apple or Windows standalones? Desktop works fine, every user has permissions to alter files there. -- Jacqueline Landman Gay | jac...@hyperactivesw.com HyperActive Software | http://www.hyperactivesw.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
On 3/28/21 1:40 PM, Tore Nilsen via use-livecode wrote: In MacOS the resources folder is part of the application bundle and resides within the content folder in that bundle. I have never encountered any problem with this folder even when using un-notarized and unsigned apps. I give away small apps to my students (both Mac and Windows) all the time and I use resources, desktop and documents as the main folders to write to and read from. All of these folders work OK. Desktop and documents folders are okay, and it may be possible to read from the resources folder, but do you actually write to it? I don't know any OS that allows altering an executable, which includes Mac bundles. -- Jacqueline Landman Gay | jac...@hyperactivesw.com HyperActive Software | http://www.hyperactivesw.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
> 28. mar. 2021 kl. 20:40 skrev Tore Nilsen via use-livecode > : > > > >> 28. mar. 2021 kl. 19:22 skrev Klaus major-k via use-livecode >> : >> >> Hi friends, >> >>> Am 28.03.2021 um 19:11 schrieb R.H. via use-livecode >>> : >>> ... >>> ... put specialfolderpath("resources") &"/temp.txt" into tFilePath >>> ... put tOut into URL("binfile:"&tFilePath) >>> ... >> >> you may already know this, but this will not work in a standalone! >> We will surely not have write permissions in that folder! >> > > > To the best of my knowledge, I think this is wrong. In MacOS the resources > folder is part of the application bundle and resides within the content > folder in that bundle. I have never encountered any problem with this folder > even when using un-notarized and unsigned apps. I give away small apps to my > students (both Mac and Windows) all the time and I use resources, desktop and > documents as the main folders to write to and read from. All of these folders > work OK. The user will be asked if they want to give the application > permission to access these folders, but other than that I don’t know of any > hiccups. > > I know that there are several restrictions when you deploy to various mobile > platforms. These are explained in the Dictionary. > I just made a test application where I am able to create a folder in the resources folder on preOpenStack. I then am able to read from and write to a document in this folder without any problem. This is on macOS Big Sur. The path to my folder in the resources folder in the app bundle is «Contents/_MacOS/testfolder/« and the application can write to this folder without any questions about permissions. Best regards Tore ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
> 28. mar. 2021 kl. 19:22 skrev Klaus major-k via use-livecode > : > > Hi friends, > >> Am 28.03.2021 um 19:11 schrieb R.H. via use-livecode >> : >> ... >> ... put specialfolderpath("resources") &"/temp.txt" into tFilePath >> ... put tOut into URL("binfile:"&tFilePath) >> ... > > you may already know this, but this will not work in a standalone! > We will surely not have write permissions in that folder! > To the best of my knowledge, I think this is wrong. In MacOS the resources folder is part of the application bundle and resides within the content folder in that bundle. I have never encountered any problem with this folder even when using un-notarized and unsigned apps. I give away small apps to my students (both Mac and Windows) all the time and I use resources, desktop and documents as the main folders to write to and read from. All of these folders work OK. The user will be asked if they want to give the application permission to access these folders, but other than that I don’t know of any hiccups. I know that there are several restrictions when you deploy to various mobile platforms. These are explained in the Dictionary. Best regards Tore Nilsen ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
Folks, This alarms me. In my app, I write a file to specialFolderpath(“desktop”). What are the conditions to make this work on Apple or Windows standalones? Bill William Prothero https://earthlearningsolutions.org > On Mar 28, 2021, at 10:22 AM, Klaus major-k via use-livecode > wrote: > > Hi friends, > >> Am 28.03.2021 um 19:11 schrieb R.H. via use-livecode >> : >> ... >> ... put specialfolderpath("resources") &"/temp.txt" into tFilePath >> ... put tOut into URL("binfile:"&tFilePath) >> ... > > you may already know this, but this will not work in a standalone! > We will surely not have write permissions in that folder! > > As a workaround I would probably use -> specialfolderpath("temporary") > Or even write the text to -> the tempname > > Both are available on all platform and you do not have to think about > deleting that file later, the OS will take care of this. :-) > > > Best > > Klaus > -- > Klaus Major > https://www.major-k.de > https://www.major-k.de/bass > kl...@major-k.de > > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
Hi friends, > Am 28.03.2021 um 19:11 schrieb R.H. via use-livecode > : > ... > ... put specialfolderpath("resources") &"/temp.txt" into tFilePath > ... put tOut into URL("binfile:"&tFilePath) > ... you may already know this, but this will not work in a standalone! We will surely not have write permissions in that folder! As a workaround I would probably use -> specialfolderpath("temporary") Or even write the text to -> the tempname Both are available on all platform and you do not have to think about deleting that file later, the OS will take care of this. :-) Best Klaus -- Klaus Major https://www.major-k.de https://www.major-k.de/bass kl...@major-k.de ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Unreliable File Deletion
@ Peter Reid Your message found my attention. Also I am working on Windows 10 and have the same problem using LC 9.6.1 Indy version. The problem with copying text to the clipboard and then pasting it into other applications results in inserting double lines. I think there was a discussion about the clipboard on the forum or here recently. Instead of directly copying the text, I create a temp file temp.txt, insert the text to be copied, then read the file and then I can paste the text reliably. The file is then deleted. The similar or same problem as you have: I want to delete the text file. The command I issue is "detele file ". The error it returns: "Can't delete file". So, I tried using a forced Shell command which did not work (probably it needs Admin rights). But the standard Shell command deletes the file. Here is the script snippet: // The original purpose of using this script as part of a larger script is to copy column names of a database table to the clipboard and insert them anywhere. ## Script snippet calling Shell (Windows 10/64) // Save data to external file to get rid of wrong carriage returns in Windows // Copy data as text to the clipboard // Space are replaced by "." for this message list // A temporary text file is created and shall be deleted after usage // tOut contains the resulting data from before... // myMsg is a separate custom message handler that directs messages either to the message box, writes to a log file or places the message into a field, or all together...) ... local tOut ... local tFilePath ... local tResult ... local tCmd ... put specialfolderpath("resources") &"/temp.txt" into tFilePath ... put tOut into URL("binfile:"&tFilePath) ... put URL("binfile:"&tFilePath) into tOut ... set the clipboarddata["text"] to tOut ... // Delete temp file ... delete file ("binfile:"&tFilePath) ... put the result into tResult ... if "can't delete that file" is in tResult then .. myMSG tHInfo & "File could not be deleted." &CR& tFilePath --> My message handler .. if the platform is "win32" then . set the hideConsoleWindows to true . replace "/" with "\" in tFilePath . put quote & tFilePath & quote into tFilePath . put "del "&tFilePath into tCmd -- this shell command works for me . put shell(tCmd) into tResult . put CR& the result after tResult . /* Comment: Error messages appear when using "rmdir /s /q" . to force delete the file . Error message: Invalid switch - "Users". */ . myMSG tHInfo & tResult --> My message handler .. end if ... end if ##/ End script snipped So, if other users have the problem that a file cannot be deleted with the "delete file" command (even though it he file tit is not flagged as part of another process or flagged as "cant delete") then this seems to be a bug. I would report it if I am not the only one seeing the problem. Roland ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode