CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Page 1 of 2 12 LastLast
Results 1 to 15 of 17

Thread: Kill file issue

  1. #1
    Join Date
    Apr 2013
    Posts
    11

    Kill file issue

    Hey, Second post...same program...Currently trying to code a program that will be used in a school style situation. What im stuck with is deleting a record from the document. It should copy them all, then kill the first file before renamign the second. doing all the steps one by one all work...however when i try to do them all as one it doesnt work...it gets to the step of trying to rename the files before going wrong?

    The file uploaded on here wont work, so i've compressed the files and hosted it here, http://www.filehostfree.com/?d=5171BA881

    Please, any help would be great. Stuck on this for days now

    Cheers!

  2. #2
    Join Date
    Oct 2006
    Location
    Sweden
    Posts
    3,654

    Re: Kill file issue

    Zip and attach your files to a post here. Most people doesn't like to view files from other locations.
    Debugging is twice as hard as writing the code in the first place.
    Therefore, if you write the code as cleverly as possible, you are, by
    definition, not smart enough to debug it.
    - Brian W. Kernighan

    To enhance your chance's of getting an answer be sure to read
    http://www.codeguru.com/forum/announ...nouncementid=6
    and http://www.codeguru.com/forum/showthread.php?t=366302 before posting

    Refresh your memory on formatting tags here
    http://www.codeguru.com/forum/misc.php?do=bbcode

    Get your free MS compiler here
    https://visualstudio.microsoft.com/vs

  3. #3
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Kill file issue

    Explain this: " deleting a record from the document. It should copy them all, then kill the first file before renamign the second."
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

  4. #4
    Join Date
    Jul 2008
    Location
    WV
    Posts
    5,362

    Re: Kill file issue

    Should be no need to send big files. Most likely the code in question would only be a few lines, I doubt that it would be more than 100. The rest of the project is not needed, just the part that does the copy, rename, kill or whatever it is doing. Hard to tell from the OP. Talks about deleting a record, copying them all, killing files and renaming files. could be that it is a timing issue you face where you are trying to rename or kill a file that is still in use.
    Always use [code][/code] tags when posting code.

  5. #5
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Hi, thank you for the replies so far. I'm currently out, so will try uploading the files again later. Also I will
    Copy the code aswell. The program stores information on different pieces of equipment in a text file. What I'm trying to do, is delete one of the records from the file. I've attempted to code this by opening the orginal document and a new one side by side. Then, it copy's one record at a time from the first document to the second, excluding the one I wish to delete. Finally, doucment 1 is closed and deleted before document 2 is renamed what document 1 was to allow the program to continue running. Sorry for all the confusion, never have been good getting my words out...hence a love for ICT. As noted, ill try the upload again aswell as the code.

    Thanks as ever,

    jordie

  6. #6
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Hey, heres the code...

    Code:
    Private Sub cmddelete_Click()
    Dim File As String
    Dim index As Integer
    Dim NumberOfRecords As Integer
    Dim recordnumbertodelete As Integer
    Dim newfilename As String
    Dim product As OneProduct
    If lstdisplayfile.Text <> "" Then
    recordnumbertodelete = lstdisplayfile.ListIndex + 1
    newfilename = App.Path & "\newproducts.text"
    Open Filename For Random As #1 Len = Len(product)
    Open newfilename For Random As #2 Len = Len(product)
    NumberOfRecords = LOF(1) / Len(product)
    For index = 1 To NumberOfRecords
    
        Get #1, , product
        If index <> recordnumbetodelete Then
        
        Put #2, , product
        End If
        
    Next index
    
    Close #2
    Close #1
    Call killfile
    
    'File = "E:\School work\Year 13\ICT\visual basic\Exam\products.text"
    'Kill File
    
    'Kill "E:\School work\Year 13\ICT\visual basic\Exam\products.text"
    'Kill App.Path & "\products.text"
    'Name "newproducts.text" As "products.text"
    
    'Msgbox (Filename)
    'MsgBox (newfilename)
    
    'Call lstdisplayfile1
    'Else
    'MsgBox ("You must select a product first")
    End If
    
    
    End Sub

  7. #7
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Kill file issue

    As far as KILLING the first file, I'd create a simple 3 line BATCH program (or command) that deletes the file AFTER the program finishes. Or better yet, rename it BEFORE you open it, then save it with the original name again.

    Here's a better way to split the file into lines, or sections (depending on the identifier used)
    Code:
    Option Explicit
    
    Private Sub Form_Load()
      Dim x As Integer, st As String, y As Integer
      Dim ff As Integer
      Dim strBuff As String
      Dim str() As String
      ff = FreeFile
    On Error GoTo trapit
      Open App.Path & "\to do3.txt" For Input As #ff
        strBuff = Input(LOF(ff), ff)
      Close #ff
      ' ----------------- two ways to skin a cat --------------
      MsgBox "Lines = " & Len(strBuff) - Len(Replace(strBuff, vbCrLf, "x")) + 1
      ' -------------------------------------------------------
      str() = Split(strBuff, vbCrLf)
      MsgBox "There are " & UBound(str) + 1 & " lines in the file"
      Dim words() As String
      For x = 0 To UBound(str)
        words = Split(str(x)) ' Split into WORDS
        For y = 0 To UBound(words)
          st = st & str(x) & vbCrLf & vbCrLf ' one line for each word
        Next y
      Next x
      MsgBox st
      Exit Sub
    trapit:
      If Err.Number = 53 Then
       MsgBox ("Didn't work")
      End If
    End Sub
    This splits into lines, they sections between the' ,' fields
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

  8. #8
    Join Date
    Apr 2013
    Posts
    3

    Re: Kill file issue

    Mình r?t Ã*t khi d?c hay comment bÃ*i vi?t trên forum. Nhung bÃ*i vi?t c?a b?n th?c s? hay vÃ* mình dã ph?i d?c chúng.
    C?m on nh?ng chia s? r?t thú v? c?a b?n.
    Trân tr?ng.

    I rarely read or comment on the forum post. But your post is really good and I had to read them.
    Thanks for sharing your very interesting.
    Best regards.

  9. #9
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Hey David, thanks for the reply. However, Im slightly confused on the three line batch program? and surely, if i rename the file before i open it...when it goes to open it...it wont be able to find it?

    Cheers

  10. #10
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Kill file issue

    Make 2 programs. One with a textbox forr input (original name) which renames it to TEMP.* or whatever. Your app could open THAT one
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

  11. #11
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Hi David, I finally have the product deleting the old file and renaming the new! However, now when i click delete no records are removed...instead all the records are moved without the orginal one being deleted? Below is the new and improved code, as always...any help is great!

    Code:
     Private Sub cmddelete_Click()
    Dim File As String
    Dim index As Integer
    Dim NumberOfRecords As Integer
    Dim recordnumbertodelete As Integer
    Dim newfilename As String
    Dim newnewfilename As String
    Dim product As OneProduct
    
    If lstdisplayfile.Text <> "" Then
    recordnumbertodelete = lstdisplayfile.ListIndex + 1
    MsgBox (recordnumbertodelete)
    Filename = App.Path & "\products.Text"
    newfilename = App.Path & "\newproducts.text"
    Open Filename For Random As #1 Len = Len(product)
    Open newfilename For Random As #2 Len = Len(product)
    NumberOfRecords = LOF(1) / Len(product)
    For index = 1 To NumberOfRecords
        Get #1, , product
        If index <> recordnumbetodelete Then
        
        Put #2, , product
        End If
        
    Next index
    
    Close #2
    Close #1
    Call killfile
    
    Name "newproducts.Text" As "products.Text"
    
    'File = "E:\School work\Year 13\ICT\visual basic\Exam\products.text"
    'Kill File
    
    'Kill "E:\School work\Year 13\ICT\visual basic\Exam\products.text"
    'Kill App.Path & "\products.text"
    'Name "newproducts.text" As "products.text"
    
    'Msgbox (Filename)
    'MsgBox (newfilename)
    
    'Call lstdisplayfile1
    'Else
    'MsgBox ("You must select a product first")
    End If
    
    
    End Sub

  12. #12
    Join Date
    Jul 2008
    Location
    WV
    Posts
    5,362

    Re: Kill file issue

    You have a couple of issues there.
    Code:
    Call KillFile
    There is no need to use the Call keyword. I think the last time that was needed was about 20 years ago, can't even remember the last time I used it in a program, maybe in VBDos?
    There is also no point in using a sub rountine to kill a file especially if you are not passing a filename to it as it serves no purpose beyond that which could be done with a single line of code which would be faster and easier to read and debug.
    Code:
    Name "newproducts.Text" As "products.Text"
    You are not including a path to either file here so you may get unexpected results depending on what the current directory is at the time the code executes.
    You have also defined and set two variables earlier in the code for these path\filenames and this is what you should be using if for no reason other than it makes the code easier to follow and easier to modify if needed.
    You should get rid of all that commented code, just makes it confusing.

    Also the standard extension for a text file is .txt rather than .text
    Code:
    Close #2
    Close #1
    
    Kill Filename
    Name newfilename as FileName
    If you get an error on the kill or rename function it could be because the file has not been released when the code executes. I don;t recall ever having such an issue but if that is the case you may want to try a short sleep statement in there to delay the renaming of the file. I don't think it should be needed though.
    Last edited by DataMiser; April 24th, 2013 at 01:00 PM.
    Always use [code][/code] tags when posting code.

  13. #13
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Hi, again thanks for the reply...ive done all the steps you said about cleaning the code up and the .txt

    However, i still cant get it to delete the record i want it to when pressing the cmd button for the delete. Instead, all the records (including the one i want to delete) is moved

  14. #14
    Join Date
    Apr 2013
    Posts
    11

    Re: Kill file issue

    Code:
         Get #1, , product
        If index <> recordnumbeRtodelete Then
        
        Put #2, , product
        End If
    Success! I miss-spelt the word record...However...it may just be me being dumb here...once the record is delete it replaces it with a 0...this 0 will only be removed by ending and restarting the program? Even calling the list box to redisplay doesnt shift it...any ideas?

    Thanks!
    Last edited by jordiebarrett; April 24th, 2013 at 01:45 PM.

  15. #15
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Kill file issue

    Look at the code in Post #7. Never use a file number (as it may already be in use). Calculate it, like I did. Also, write the file at the END rather than each line.
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured