|
Your code should look something like this if you want to specify a Timeout value. It's up to you wheather or not to throw an Exception when the Timeout expires. You could return a False value meaning that the file was NOT deleted because of the Timeout and True meaning that it was, or you could throw some kind of Exception. It's up to you...
Private Function DeleteTempFile(ByVal timeOut As TimeSpan, byval filePath As String) As Boolean
Dim endTime As DateTime = DateTime.Now().Add( timeOut )
While DateTime.Compare( DateTime.Now(), endTime ) < 0
Try
' File class members are static. You don't need an instance to call them.
' The Delete method doesn't return a value, so you have to watch for Exceptions
' using a Try/Catch block.
File.Delete( filePath )
' This next statement will only execute if the Delete was successfull.
Return True
Catch
' Do nothing since we don't care what the error was.
End Try
' This line was added AFTER the original post.
' Avoid hogging the CPU so our application can respond to outside messages, like
' repainting our window.
Application.DoEvents()
End While
' If we get to this point, it means that our Timeout expired. Return False to show that
' the file was NOT deleted.
Return False
End Function
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
You got to be joking!
and what if he never manages to delete the file he can possibly display a Message Box and tell the user Please delete the file manually
sony speed
|
|
|
|
|
sony speed wrote:
You got to be joking!
About what? Do you want to be a little more specific, or should I say constructive?
sony speed wrote:
and what if he never manages to delete the file
That's what the Timeout value is for! After a specified time, the function returns a value specifying if the delete was successfull or not.
sony speed wrote:
he can possibly display a Message Box and tell the user Please delete the file m
That's not what this function is about. The function very specifically is used to try and delete a file for a specified time. The UI for putting up a MessageBox should be handled by the code that calls this function, or something higher up the call chain. It's called "modular code". This function can be used in another app without modification and without any regard to the type of application or library that it's in. It could be used in a .DLL project, class library, Windows Service app, Windows CE app, Windows Forms, Web Forms, or even in a Mono app running under Linux. But once you add the MessageBox code, it becomes usable ONLY in a Windows Forms or Windows CE app.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Is your temp file created at run time by the first application?
Do you create/name temp file?
If so you can put a FileSystemWatcher control in your second app and implemnt a simpel code like this
Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed<br />
Try<br />
File.Delete(FileSystemWatcher1.Path & "\" & FileSystemWatcher1.Filter)<br />
Catch ex As Exception<br />
'<br />
End Try<br />
End Sub
FileSystemWatcher1.Path = the path of your temp file
FileSystemWatcher1.Filter = the name of your temp file
and this will work just fine
sony speed
|
|
|
|
|
I run multiple instances of a vb6 app from desktop PCs. The apps run crystal reports (v8). The .rpt files are on a shared folder.
Problem is, if the folder allows 8 connections, running reports 9times leads to a no-access error (see below). It seems setting the report and application objects to nothing does not unlock the report.
Users have to unlock it in Admin Tools\Comp Mnagement\Shared Folders\Open Folders. Exiting the app also unlocks the reports.
How can I unlock a report after using it in code?
Error occurs at line
Dim crystalreport As New Report
Dim crystalApplication As New Application
..
Set crystalreport = crystalApplication.OpenReport(strReportPathName)
The error is:
'Error in File UNKNOWN.RPT: Access to report file denied. Another program may be using it'
1fm1fu
|
|
|
|
|
It would appear that the underlying file handles to open and read the report in the OpenReport method are not being released when you drop the objects out of scope. I can't remember the old version of Crystal Reports objects, but is there a Close method to go along with the OpenReport method on the Application object? You might want to try that and if it doesn't exist, try visiting BuisnessObjects.com and see if there is an update to the Crystal Reports package your using.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
also, to add to what dave mentioned...
i don't recall if it existed in the older crystal libraries, but i know that it does in cr.net & cr 9. when you open your report you have the option of how you wish to open that report:
OpenReportByDefault or OpenReportByTempCopy
Open report by temp copy actually makes a temporary copy in the same folder as the original report template. then uses this temporary copy rather than the original allowing it to be accessed by other processes... which will hopefully also open by temp copy.
again, not sure if it will be available to you from the com version of the libraries, but if not you can always check out the possibility of creating a com wrapper of the crystal .net assemblies if you think this option is worth checking out.
hope this helps.
-jim
|
|
|
|
|
Thanx Dave n jmatthew.
Appears if i pass the OpenMethod optional parameter a 1 in OpenReport method i can open multiple instances. There is no close method for the Crystal Application class though.
I'll do with the workaround for now...
1fm1fu
|
|
|
|
|
I am having a hard time getting the getChanges to retrieve the changes that were performed on the last row of the data, since nothing really happens when the hit the enter key on the last line (it doesn't go to the next line since there isn't one.
Has anyone found a way around this?
|
|
|
|
|
why don't you just try writing a line of code like this one
Me.BindingContext(Me.Dataset11, "authors").Position += 1
just before you call the GetChanges() method it will most probably work
sony speed
|
|
|
|
|
this does work in most scenarios, but i've had problems with doing it this way.
say for instance you only have one row displayed in the datagrid? you can't change the position and therefore the data doesn't get saved.
the proper way of handling this situation is manually calling EndEdit() for the datagrid, or the underlying datasource.
hope this helps.
-jim
|
|
|
|
|
How can I open/modify/write/close an existing .xml file from vb? I tried DAO and ADO, but couldn´t get to nothing (some errors mentioned 'ISAM object not listable', or some insanity of the like)
Well, any help is welcome.
Pablo.Ar
|
|
|
|
|
Have you tried "Microsoft XMl V3.0" ?
|
|
|
|
|
Sorry, I got confused and made a terrible mistake. It wasn´t xml!!! it was .xls!!!!!!!!!!!!!!!!!!! sorry, and a 1G of thanks!
Pablo.Ar
|
|
|
|
|
Sorry,but i have seen some code in c++ which is using Microsoft Excel Driver(think in CP itself).But don't know much about it.
|
|
|
|
|
i have a media layer control and i want to make a form where i type a url of internet radio and then the control plays it. anyone know if/how i can do this?
|
|
|
|
|
To play a file, use the URL property:
wmp.URL = "http://www.urWebAddress.com/Song.mp3"
|
|
|
|
|
You can reference a media file(sound, pic, etc) either from your local disc, or form an URL. You insert the Windows Media Control on your form and then right click to review its properties. The first drop-down in the general tab is the place where you can either browse, or type in the url. If you are programmatically accessing it, you may try the other method suggested earlier.
|
|
|
|
|
Hello,
I need to use some com server (dll) in my VB6 project. Some method of this com server returns S_FALSE value. How can I recognize S_FALSE in VB6 project and distinguish it from S_OK?
Thanks for help, regards,
Leon
|
|
|
|
|
An HRESULT is nothing but a Long value in VB6. I don't know the values of the S_FALSE and S_OK constants off the top of my head. What you can do to find them is search C:\Program Files for the C++ header files (*.h) containing the text S_FALSE. You can then open the .h file that it comes up with and search it for the same text to find the value of the constant. Do the same with S_OK.
This is assuming, of course, you have Visual C++ installed...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Can somebody please tell me how to place a dropdownlist on one page in VS with a couple items on it, and then a label on another page to accept the value you selected on the first page? Basically I need to know how to redirect to another page with the selected value and then accept and display it. Thank you
CB
|
|
|
|
|
I hope that i had undestund what you want. See this example ,
the idea is that the user selects from the droplist ( here a set the autopostbask to true ) and i pass the selected item text to the label.
When the user press the button "go" te program checks the drop down selected item index and redirects the user to the coresponding page.
Hope i helped you
Ramaseb
---------------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents Drop1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then
Drop1.Items.Clear()
Drop1.Items.Add("page 1")
Drop1.Items.Add("page 2")
Drop1.Items.Add("page 3")
End If
End Sub
Private Sub Drop1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Drop1.SelectedIndexChanged
Label1.Text = Drop1.SelectedItem.Text
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case Drop1.SelectedIndex
Case 0
Response.Redirect("mypage1.aspx")
Case 1
Response.Redirect("mypage2.aspx")
Case 2
Response.Redirect("mypage3.aspx")
End Select
End Sub
End Class
Ramaseb.
|
|
|
|
|
Actually, I was looking to select the value Page1 from Drop1 on the main page. When you select Page1 it then redirects you to Page1, accepts the value, and displays it in Label1 on Page1 without a submit button.
Thanks much!
|
|
|
|
|
Hi,
Can anyone help me with importing a fortran 8.0 dll to vb.net.I have tried several times with the following code but get an error saying that the entry point in the dll was not found.
I have a module in vb.net that contains the following code.
Declare Sub runit Lib "C:\Documents and Settings\User\My Documents\Visual Studio Projects\Dll1\Debug\Dll1.dll" _
(list of arguements) where Dll1 is the name of the fortran project.and runit is the subroutine i am trying to call from .net. I dont know what to do.Is there any configurations that i must set before trying to run the program.
|
|
|
|
|
try adding an "alias" to your declaration, this alias should have the same name as the main subroutine in your app (you may follow this with A [for ANSI] or W [for ASCII]). you then invoke the routine thru this alias. another workaround is using the DLLImportAttribute becoz with this you can specify the entry point during declaration.
|
|
|
|