|
I am using Sql not access
can anyone help
|
|
|
|
|
The same advice applies; normalize your dataset to PREVENT this from happening in the first place.
Google for "SQL remove duplicates".
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
There is a article in here that has a class that puts a wrapper around "Lame.exe" so you can use Lame to convert .wav files to .mp3. It works great, but I cannot seem to get it to loop through a directory and convert all files in that directory. Does anyone know how to do it with this method, or have another way of doing it?
|
|
|
|
|
Do you use this:
VB.NET LameMP3 Shell[^]?
If so you would have to create a new instance of your converter for each file you are trying to convert. WAV to MP3 is quite math heavy to do, so I'd guess it would take quite a while to complete the convertion...
|
|
|
|
|
I do use that. Can you help me with a little example of what you mean? Also, do you know a easier way to do it, or do you think this is the best?
|
|
|
|
|
Use the Directory.GetFiles [^] method. There's an example on the same page on how to use it.
Call your convert-method foreach item that you encounter.
iismoove wrote: Also, do you know a easier way to do it, or do you think this is the best?
I like forking, and I don't mind the overhead compared to a thread. No, it's not the "best" way, because it'll be hard to display some progress, the user might think that your software is "stuck" somewhere and decide to terminate it.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
What do you mean by "forking"? I am kind of new to programming, so please excuse my ignorance. I got the code to work, but like you said it seems to "hang". I also noticed that there are about 20 or so instances of "lame.exe" running in the task manager, so the machine becomes very slow and sluggish.
|
|
|
|
|
iismoove wrote: What do you mean by "forking"?
Applications sometimes do multiple stuff at once; in that case you often need threading. I'm more of a fan of "forking", where one runs an executable and fetches the result. An independent executable can be tested without the rest of the crap, makes maintenance a bit easier.
iismoove wrote: I also noticed that there are about 20 or so instances of "lame.exe" running in the task manager
Aight, that means it works. It's best not to start all 20 conversions at once, but one after another. You're probably using the Process class to launch those, and you'd have to wait after launching until it is done before moving on to the next one.
Call the Process.WaitForExit [^] method in your loop to block execution until the external application finishes.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
I am using LameShell from Qualtar. I was looking through it, because i think that just has
Process.Start instead of waitforexit(). In the LameReader function there is a _lameProcess.Start() and I tried to change it to _lameProcess.WaitForExit, but then i get a error that there is no process.
|
|
|
|
|
Aw, that means that you'll probably have to modify the lame-code. The Process.Start function returns an object of the class "Process"; you'd call the WaitForExit method on that object. Something similar to the code below;
Dim p as Process = Process.Start("Notepad")
p.WaitForExit()
Hope it works
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Yea, I cannot find anything in the class that looks like that. Maybe you can? I posted Below:
Option Explicit On
Imports System.Diagnostics
Imports System.Text.RegularExpressions
Public Class LameShell
Private _lameProcess As Process
Private _lameThread As System.Threading.Thread
Private _percentDone As Integer
Private _isRunning As Boolean = False
Private _startInfo As New ProcessStartInfo
Private Shared _regLine As Regex = New Regex( _
"(\d+)/(\d+)\D+(\d+)\D+([\d:]+)\D+([\d:]+)\D+([\d:]+)\D+([\d:]+)\D+([\d\.]+)\D+([\d:]+)", _
RegexOptions.IgnoreCase _
Or RegexOptions.CultureInvariant _
Or RegexOptions.IgnorePatternWhitespace _
Or RegexOptions.Compiled _
)
Private _inFile As String
Private _outFile As String
Private _options As String
Public Event Done()
Public Event Progress(ByRef Progress As LameProgress)
Public Event IgnoredLine(ByVal Line As String)
Public Event Canceled()
Public Sub New()
DefStartInfo()
_startInfo.WorkingDirectory = Application.StartupPath
End Sub
Public Sub New(ByVal InFile As String, Optional ByVal OutFile As String = "", Optional ByVal Options As String = "", Optional ByVal LamePath As String = Nothing)
DefStartInfo()
If LamePath = Nothing Then
_startInfo.WorkingDirectory = Application.StartupPath
End If
_inFile = InFile
_outFile = OutFile
_options = Options
End Sub
Private Sub DefStartInfo()
_startInfo.FileName = "lame.exe"
_startInfo.UseShellExecute = False
_startInfo.RedirectStandardOutput = True
_startInfo.RedirectStandardError = True
_startInfo.CreateNoWindow = True
End Sub
Public Property InFile() As String
Get
Return _inFile
End Get
Set(ByVal Value As String)
_inFile = Value
End Set
End Property
Public Property OutFile() As String
Get
Return _outFile
End Get
Set(ByVal Value As String)
_outFile = Value
End Set
End Property
Public Property Options() As String
Get
Return _options
End Get
Set(ByVal Value As String)
_options = Value
End Set
End Property
Public Property LamePath() As String
Get
Return _startInfo.WorkingDirectory
End Get
Set(ByVal Value As String)
_startInfo.WorkingDirectory = Value
End Set
End Property
Private Sub Reset()
Dim arguments As String
_percentDone = 0
_lameProcess = New Process
If _options <> "" Then
arguments = _options & " "
End If
arguments &= """" & _inFile & """ "
If _outFile <> "" Then
arguments &= """" & _outFile & """"
End If
_startInfo.Arguments = arguments
_lameProcess.StartInfo = _startInfo
End Sub
Public Function Start() As Boolean
If _isRunning Or _inFile = "-" Or _outFile = "-" Then Return False
_isRunning = True
Reset()
Try
_lameThread = New System.Threading.Thread(AddressOf LameReader)
_lameThread.IsBackground = True
_lameThread.Name = "LameReader"
_lameThread.Start()
Return True
Catch ex As Exception
Return False
End Try
End Function
Private Sub LameReader()
Dim m As Match
Dim oneLine As String
Try
_lameProcess.Start()
oneLine = _lameProcess.StandardError.ReadLine()
While Not oneLine Is Nothing
m = _regLine.Match(oneLine)
If m.Success Then
_percentDone = CType(m.Groups.Item(3).Value, Integer)
RaiseEvent Progress(New LameProgress(m))
Else
RaiseEvent IgnoredLine(oneLine)
End If
oneLine = _lameProcess.StandardError.ReadLine()
End While
_lameProcess.Close()
_lameProcess = Nothing
If _percentDone = 100 Then
RaiseEvent Done()
Else
RaiseEvent Canceled()
End If
Catch ex As Exception
If Not _lameProcess Is Nothing Then
_lameProcess.Close()
_lameProcess = Nothing
End If
MsgBox(ex.Message & vbNewLine & "Are you sure lame.exe is here:" & vbNewLine & _startInfo.WorkingDirectory)
Finally
_isRunning = False
End Try
End Sub
Public Sub Cancel()
Try
If Not _lameProcess Is Nothing Then
_lameProcess.Kill()
End If
Catch ex As Exception
End Try
End Sub
End Class
Public Class LameProgress
Private _m As Match
Public ReadOnly Property FrameCurrent() As Integer
Get
Return CType(_m.Groups.Item(1).Value, Integer)
End Get
End Property
Public ReadOnly Property FrameMax() As Integer
Get
Return CType(_m.Groups.Item(2).Value, Integer)
End Get
End Property
Public ReadOnly Property PercentDone() As Integer
Get
Return CType(_m.Groups.Item(3).Value, Integer)
End Get
End Property
Public ReadOnly Property CPUTime() As String
Get
Return _m.Groups.Item(4).Value()
End Get
End Property
Public ReadOnly Property CPUEstimate() As String
Get
Return _m.Groups.Item(5).Value()
End Get
End Property
Public ReadOnly Property REALTime() As String
Get
Return _m.Groups.Item(6).Value()
End Get
End Property
Public ReadOnly Property REALEstimate() As String
Get
Return _m.Groups.Item(7).Value()
End Get
End Property
Public ReadOnly Property PlayCPU() As Single
Get
Return CType(_m.Groups.Item(8).Value, Single)
End Get
End Property
Public ReadOnly Property ETA() As String
Get
Return _m.Groups.Item(9).Value()
End Get
End Property
Public Sub New(ByVal m As Match)
_m = m
End Sub
End Class
|
|
|
|
|
Seems it's executed on it's own thread. Making a blocking version wouldn't be that difficult, but your app would seem to "hang" until the process is actually finished. This is "the better" version, although it makes it a bit more complicated to use.
As opposed to looping and starting all the conversions, it might be better to make a list of all the files that you need to process.
Dim items As List(Of String) = Directory.GetFiles(..
Start the conversion with the first item from the list, and proceed to the next one once the Done -event of the LameShell-class is raised. That way the code needn't block anything, keeping your app nicely responsive
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Ok, so I can keep my FOR EACH loop the same? and just have it go through the list instead of the directory?
|
|
|
|
|
No, that would have the same effect; each item would be started immediately. You start it with the first item from the list, and pick the next one from the list as soon as that Done event is raised.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Ok. Can you provide an example? I am lost. I know what you are talking about doing, but I cannot think of how to start that.
|
|
|
|
|
Something along these lines;
Private lame As New LameShell()
Private items As New List(Of String)
Public Sub WhatsItsName
AddHandler lame.Done, AddressOf MethodToRaiseWhenDoneConverting
items = ..
lame.InFile = items(items.Count-1)
lame.Start()
End Sub
Public Sub MethodToRaiseWhenDoneConverting(Sender As Object, e As EventArgs)
items.RemoveAt(items.Count-1)
If items.Length > 0 Then
lame.InFile = items(items.Count -1)
lame.Start()
Else
MsgBox "Beep!"
End If
End Sub
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Whoa, that is a lot different from what i was doing!! LOL. Ok, so I am trying to play around here and the AddressOf MethodToRaiseWhenDoneConverting keeps giving me a "Delegate Sub DoneHandler" error or something. Also to get the items it keeps telling me something like "1 dimensional array of string cannot be converted to generic.list"
|
|
|
|
|
iismoove wrote: I am trying to play around here and the AddressOf MethodToRaiseWhenDoneConverting keeps giving me a "Delegate Sub DoneHandler" error or something.
It said "public event Done" in the source-class, so I assumed the default event-handler. It could be that it requires a parameter-less method, you might wanna try commenting out the parameters.
iismoove wrote: Also to get the items it keeps telling me something like "1 dimensional array of string cannot be converted to generic.list"
Ah, you'd have to paste the code here; seems like there's an assignment of a string, where a list is expected. Without code, it'll be hard to guess what should be expected.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
|
I didnt downvote it. I hit "Accept Answer". If i hit something else I am sorry, but I thought I hit "Accept Answer".
|
|
|
|
|
No, not in the QA section, I was talking about the current thread, secound post. Not to worry, I wont hold it agains you If it wasnt you
That would not be right by any account
|
|
|
|
|
I am new to the whole forum thing. This is my first time ever posting anything. So when I came here I posted the same thing in "messages" and "questions". You posted an answer and then 2 days later the this thread got answered and i was having a problem with the app eating resources, so I asked about it. But now I know I only need to put it in one spot.
|
|
|
|
|
No problem, I dont think you did anything wrong based on what you said. Though people get a bit crancky when they see double posts
|
|
|
|
|
im having a big problem saving the file from the "PictureBox"
this is what i have
Private Sub sendbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sendbtn.Click
Dim sPath As String = "C:\Test\testing.bmp"
Dim bmp As Bitmap
Try
bmp = Me.signature.Image
bmp.Save(sPath, System.Drawing.Imaging.ImageFormat.bmp)
Catch ex As Exception
MsgBox("Not Working Signature Save")
End Try
End Sub
and im trying to save it as "JPG"
so i change .jpg and imageformat.jpeg
and NOTHING
whats is wrong in the code ?
|
|
|
|
|
PictureBox1.Image.Save("C:\pic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
|
|
|
|