|
Apologies for the shouting but this is important.
When answering a question please:
- Read the question carefully
- Understand that English isn't everyone's first language so be lenient of bad spelling and grammar
- If a question is poorly phrased then either ask for clarification, ignore it, or mark it down. Insults are not welcome
- If the question is inappropriate then click the 'vote to remove message' button
Insults, slap-downs and sarcasm aren't welcome. Let's work to help developers, not make them feel stupid.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
For those new to message boards please try to follow a few simple rules when posting your question.- Choose the correct forum for your message. Posting a VB.NET question in the C++ forum will end in tears.
- Be specific! Don't ask "can someone send me the code to create an application that does 'X'. Pinpoint exactly what it is you need help with.
- Keep the subject line brief, but descriptive. eg "File Serialization problem"
- Keep the question as brief as possible. If you have to include code, include the smallest snippet of code you can.
- Be careful when including code that you haven't made a typo. Typing mistakes can become the focal point instead of the actual question you asked.
- Do not remove or empty a message if others have replied. Keep the thread intact and available for others to search and read. If your problem was answered then edit your message and add "[Solved]" to the subject line of the original post, and cast an approval vote to the one or several answers that really helped you.
- If you are posting source code with your question, place it inside <pre></pre> tags. We advise you also check the "Encode "<" (and other HTML) characters when pasting" checkbox before pasting anything inside the PRE block, and make sure "Use HTML in this post" check box is checked.
- Be courteous and DON'T SHOUT. Everyone here helps because they enjoy helping others, not because it's their job.
- Please do not post links to your question into an unrelated forum such as the lounge. It will be deleted. Likewise, do not post the same question in more than one forum.
- Do not be abusive, offensive, inappropriate or harass anyone on the boards. Doing so will get you kicked off and banned. Play nice.
- If you have a school or university assignment, assume that your teacher or lecturer is also reading these forums.
- No advertising or soliciting.
- We reserve the right to move your posts to a more appropriate forum or to delete anything deemed inappropriate or illegal.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
Puzzling???
Clipboard image different with different version of vision basic
Clipboard.SetImage(New Bitmap(Clipboard.GetImage, newWidth, newHeight))
Visual basic 2010 express (32bit). Size of image is as per setting newWidth, newHeight (perfect)
Visual Studio 2022 (64bit). Size of image will not change with the newWidth, newHeight (about 1/3 of previous)
Is there any issue related to 32-64bit?
Appreciate very much any helps. Thank you. Lean Chew
|
|
|
|
|
Given that we do not have access to the image, and you have not shown any of the code you are using, it is impossible to guess.
[edit]
I just tried your code and the image was correctly resized. You need to provide more information.
[/edit]
modified 2hrs 10mins ago.
|
|
|
|
|
2010 to 2022 is a big leap. The VS 2022 designer looks at the possible screen sizes / resolutions more closely; using them as defaults during the design. (No idea what "phase" you are talking about)
My current "default design surface" is: "13.5 in. Surface Book (3000x2000)" ... for no obvious reason since my monitors are 27 and 45 in; though it doesn't impact the way I actually use what create.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Hello all...im new and im not even a coder. I just do some apps once in a while to keep the head busy and exercise my mind.
im actually trying to make an mp3 tagger. All is good but i cannot tag new files..only pre-tagged files...it says it cannot convert string to byte in the "Track" and "Genre" fields.
This is the class im using
<pre>Imports System.IO
Public Class MP3ID3v1
Public Sub New(Optional ByVal Filename As String = "")
MyBase.New()
If (Filename <> "") Then Me.Filename = Filename
End Sub
#Region " Declarations "
Public Enum Genres As Byte
Blues = 0
ClassicRock = 1
Country = 2
Dance = 3
Disco = 4
Funk = 5
Grunge = 6
HipHop = 7
Jazz = 8
Metal = 9
NewAge = 10
Oldies = 11
Other = 12
Pop = 13
RnB = 14
Rap = 15
Reggae = 16
Rock = 17
Techno = 18
Industrial = 19
Alternative = 20
Ska = 21
DeathMetal = 22
Pranks = 23
Soundtrack = 24
EuroTechno = 25
Ambient = 26
TripHop = 27
Vocal = 28
JazzFunk = 29
Fusion = 30
Trance = 31
Classical = 32
Instrumental = 33
Acid = 34
House = 35
Game = 36
SoundClip = 37
Gospel = 38
Noise = 39
AlternRock = 40
Bass = 41
Soul = 42
Punk = 43
Space = 44
Meditative = 45
InstrumentalPop = 46
InstrumentalRock = 47
Ethnic = 48
Gothic = 49
Darkwave = 50
TechnoIndustrial = 51
Electronic = 52
PopFolk = 53
Eurodance = 54
Dream = 55
SouthernRock = 56
Comedy = 57
Cult = 58
Gangsta = 59
Top40 = 60
ChristianRap = 61
PopFunk = 62
Jungle = 63
NativeAmerican = 64
Cabaret = 65
NewWave = 66
Psychadelic = 67
Rave = 68
Showtunes = 69
Trailer = 70
LoFi = 71
Tribal = 72
AcidPunk = 73
AcidJazz = 74
Polka = 75
Retro = 76
Musical = 77
RocknRoll = 78
HardRock = 79
None = 255
End Enum
Public Enum FrameTypes As Byte
Title = 0
Artist = 1
Album = 2
Year = 3
Track = 4
Comment = 5
Genre = 6
End Enum
#End Region
#Region " Properties "
Private mstrFilename As String
Public Property Filename() As String
Get
Return mstrFilename
End Get
Set(ByVal Value As String)
Dim objFile As File
If (objFile.Exists(Value)) Then
mstrFilename = Value
Refresh()
Else
Throw New System.IO.FileLoadException("The specified file does not exist", Value)
End If
End Set
End Property
Private mblnTagExists As Boolean
Public ReadOnly Property TagExists() As Boolean
Get
Return mblnTagExists
End Get
End Property
Private mobjFrame(7) As Object
Public Property Frame(ByVal FrameType As FrameTypes)
Get
Return mobjFrame(FrameType)
End Get
Set(ByVal Value)
mobjFrame(FrameType) = Value
End Set
End Property
#End Region
#Region " Methods "
Public Sub Refresh()
Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)
Dim bytDummy As Byte
Dim bytTrack As Byte
Dim bytGenre As Byte
Dim intFile As Integer = FreeFile()
FileOpen(intFile, mstrFilename, OpenMode.Binary, OpenAccess.Read, OpenShare.LockWrite)
Dim lngLOF As Long = LOF(intFile)
If (lngLOF > 128) Then
FileGet(intFile, strTag, lngLOF - 127, True)
If (strTag.ToUpper <> "TAG") Then
mblnTagExists = False
mobjFrame(0) = ""
mobjFrame(1) = ""
mobjFrame(2) = ""
mobjFrame(3) = ""
mobjFrame(4) = ""
mobjFrame(5) = ""
mobjFrame(6) = ""
Else
mblnTagExists = True
FileGet(intFile, strTitle)
FileGet(intFile, strArtist)
FileGet(intFile, strAlbum)
FileGet(intFile, strYear)
FileGet(intFile, strComment)
FileGet(intFile, bytDummy)
FileGet(intFile, bytTrack)
FileGet(intFile, bytGenre)
mobjFrame(0) = strTitle
mobjFrame(1) = strArtist
mobjFrame(2) = strAlbum
mobjFrame(3) = strYear
mobjFrame(4) = bytTrack
mobjFrame(5) = strComment
mobjFrame(6) = bytGenre
End If
End If
FileClose(intFile)
End Sub
Public Sub Update()
Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)
Dim bytDummy As Byte
Dim bytTrack As Byte
Dim bytGenre As Byte
Dim intFile As Integer = FreeFile()
FileOpen(intFile, mstrFilename, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockWrite)
Dim lngLOF As Long = LOF(intFile)
If (lngLOF > 0) Then
If (lngLOF > 128) Then
FileGet(intFile, strTag, lngLOF - 127)
If (strTag.ToUpper <> "TAG") Then
Seek(intFile, lngLOF)
strTag = "TAG"
FilePut(intFile, strTag)
End If
strTitle = LSet(mobjFrame(0), Len(strTitle))
strArtist = LSet(mobjFrame(1), Len(strArtist))
strAlbum = LSet(mobjFrame(2), Len(strAlbum))
strYear = LSet(mobjFrame(3), Len(strYear))
bytTrack = mobjFrame(4)
strComment = LSet(mobjFrame(5), Len(strComment))
bytGenre = mobjFrame(6)
FilePut(intFile, strTitle)
FilePut(intFile, strArtist)
FilePut(intFile, strAlbum)
FilePut(intFile, strYear)
FilePut(intFile, strComment)
FilePut(intFile, bytDummy)
FilePut(intFile, bytTrack)
FilePut(intFile, bytGenre)
End If
End If
FileClose(intFile)
End Sub
#End Region
End Class
and this is my code:
<pre>Imports System.IO
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
Imports System.Resources.ResXFileRef
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
ListBox1.Items.Clear()
Dim fileNames = My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly, "*.mp3")
For Each fileName As String In fileNames
Dim result As String = Path.GetFileName(fileName)
ListBox1.Items.Add(result)
Next
End If
ComboBox1.DataSource = System.Enum.GetValues(GetType(MP3ID3v1.Genres))
Label1.Text = "Title :"
Label2.Text = "Artist :"
Label3.Text = "Album :"
Label4.Text = "Year :"
Label5.Text = "Track :"
Label6.Text = "Comment :"
Label7.Text = "Genre : "
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
ListBox1.Items.Clear()
If FolderBrowserDialog1.SelectedPath = "" Then
Dim r8 As DialogResult = MessageBox.Show(Me, "You need to load a folder.",
"Load Files", MessageBoxButtons.OK)
Else
Dim fileNames = My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly, "*.mp3")
For Each fileName As String In fileNames
Dim result As String = Path.GetFileName(fileName)
ListBox1.Items.Add(result)
Next
End If
ComboBox1.DataSource = System.Enum.GetValues(GetType(MP3ID3v1.Genres))
Label1.Text = "Title :"
Label2.Text = "Artist :"
Label3.Text = "Album :"
Label4.Text = "Year :"
Label5.Text = "Track :"
Label6.Text = "Comment :"
Label7.Text = "Genre : "
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboBox1.DataSource = System.Enum.GetValues(GetType(MP3ID3v1.Genres))
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
Dim objMP3V1 As New MP3ID3v1(FolderBrowserDialog1.SelectedPath & "\" & ListBox1.SelectedItem)
If (objMP3V1.TagExists) Then
Label1.Text = "Title : " & (objMP3V1.Frame(MP3ID3v1.FrameTypes.Title))
Label2.Text = "Artist : " & (objMP3V1.Frame(MP3ID3v1.FrameTypes.Artist))
Label3.Text = "Album : " & (objMP3V1.Frame(MP3ID3v1.FrameTypes.Album))
Label4.Text = "Year : " & (objMP3V1.Frame(MP3ID3v1.FrameTypes.Year))
Dim TR = (objMP3V1.Frame(MP3ID3v1.FrameTypes.Track))
Label5.Text = "Track : " & (TR.ToString)
Label6.Text = "Comment : " & (objMP3V1.Frame(MP3ID3v1.FrameTypes.Comment))
Dim GR As MP3ID3v1.Genres = (objMP3V1.Frame(MP3ID3v1.FrameTypes.Genre))
Label7.Text = "Genre : " & (GR.ToString)
Else
Label1.Text = "Title :"
Label2.Text = "Artist :"
Label3.Text = "Album :"
Label4.Text = "Year :"
Label5.Text = "Track :"
Label6.Text = "Comment :"
Label7.Text = "Genre : "
ComboBox1.DataSource = System.Enum.GetValues(GetType(MP3ID3v1.Genres))
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If ListBox1.Text = "" Then
Dim r8 As DialogResult = MessageBox.Show(Me, "No File Selected!",
"Select Files", MessageBoxButtons.OK)
Else
Dim objMP3V1 As New MP3ID3v1(FolderBrowserDialog1.SelectedPath & "\" & ListBox1.SelectedItem)
If CheckBox1.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Title) = TextBox1.Text
objMP3V1.Update()
End If
If CheckBox2.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Artist) = TextBox2.Text
objMP3V1.Update()
End If
If CheckBox3.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Album) = TextBox3.Text
objMP3V1.Update()
End If
If CheckBox4.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Year) = TextBox4.Text
objMP3V1.Update()
End If
If CheckBox5.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Track) = TextBox5.Text
objMP3V1.Update()
End If
If CheckBox6.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Comment) = TextBox6.Text
objMP3V1.Update()
End If
If CheckBox7.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Genre) = ComboBox1.SelectedValue
objMP3V1.Update()
End If
Dim r9 As DialogResult = MessageBox.Show(Me, "Operation Complete!",
"Tagged Files!", MessageBoxButtons.OK)
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
ListBox1.Items.Clear()
ComboBox1.DataSource = System.Enum.GetValues(GetType(MP3ID3v1.Genres))
End Sub
End Class
What am i doing wrong?..Thanks!!
Duarte
|
|
|
|
|
Just dumping all your code and expecting someone to fix it is quite rude. We have no idea where the error occurs. So please edit the question, remove all the code that is not relevant to the problem, mark the point where the error occurs, and include the complete text of the error message.
|
|
|
|
|
Hi..sorry..i posted all the code cause i do not know what is happenning at all...
anyway...thanks and i can resume yes...
when i try to save the tags:
Dim bytTrack As Byte
Dim bytGenre As Byte
the error returns it cannot convert String to Byte..but this is only happenning in new files..if i use a pretagged file all seems good.
im using this method:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If ListBox1.Text = "" Then
Dim r8 As DialogResult = MessageBox.Show(Me, "No File Selected!",
"Select Files", MessageBoxButtons.OK)
Else
Dim objMP3V1 As New MP3ID3v1(FolderBrowserDialog1.SelectedPath & "\" & ListBox1.SelectedItem)
If CheckBox1.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Title) = TextBox1.Text
objMP3V1.Update()
End If
If CheckBox2.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Artist) = TextBox2.Text
objMP3V1.Update()
End If
If CheckBox3.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Album) = TextBox3.Text
objMP3V1.Update()
End If
If CheckBox4.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Year) = TextBox4.Text
objMP3V1.Update()
End If
If CheckBox5.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Track) = TextBox5.Text
objMP3V1.Update()
End If
If CheckBox6.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Comment) = TextBox6.Text
objMP3V1.Update()
End If
If CheckBox7.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Genre) = ComboBox1.SelectedValue
objMP3V1.Update()
End If
Dim r9 As DialogResult = MessageBox.Show(Me, "Operation Complete!",
"Tagged Files!", MessageBoxButtons.OK)
End If
End Sub
|
|
|
|
|
You are trying to store the text strings into both those fields which are (presumably) byte types. So you need to convert the strings into their correct value types first. As someone who claims not to be a programmer, that is a lot of code that you have written.
|
|
|
|
|
Thanks...i use a lot of snippets too....so how do i convert them properly?..i already tried some methods but i could not do it!
anyway..the code is functionning for pre-tagged files...i just cannot write the properties into new files 
|
|
|
|
|
I don't know how you convert them because I am not clear on what type the target is. So you need to check the definition of those fields and use an appropriate method of the Convert Class (System) | Microsoft Learn[^].
|
|
|
|
|
well..they are just the Track ID and Genre ID in an mp3 file...can i change the main code and switch them to string?...this is why i posted the full code on the start!!!
|
|
|
|
|
I don't know the answer. You first need to know what actual type they are in the file: Byte, String, Int32, Int64, Bool etc. You then need to set a matching type in your code. Then when you get the user's selection, you may or may not need to convert what the user chooses into the appropriate type. But all that detail should have been decided before you put all this code together. And I am afraid there is far too much for anyone other than you, to know where to do this.
|
|
|
|
|
i think i can do the conversion here:
Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)
Dim bytDummy As Byte
Dim bytTrack As Byte
Dim bytGenre As Byte
setting the "as byte" to "new string" but i do not know about the numbers here??!!!
|
|
|
|
|
As I said above, You need to match your definitions with the actual types that are used in the file. So you need to find the definition of the file types you are trying to modify and check the requirements.
|
|
|
|
|
i think is Int32 
|
|
|
|
|
Fine, but you need to be certain.
|
|
|
|
|
i tried this but no luck:
If CheckBox5.Checked = True Then
Dim txt = TextBox5.Text
Dim tt As Integer = Convert.ToInt32(txt)
tt = objMP3V1.Frame(MP3ID3v1.FrameTypes.Track) & vbLf
objMP3V1.Update()
End If
If CheckBox6.Checked = True Then
objMP3V1.Frame(MP3ID3v1.FrameTypes.Comment) = TextBox6.Text
objMP3V1.Update()
End If
If CheckBox7.Checked = True Then
Dim xt = ComboBox1.SelectedValue
Dim xx As Integer = Convert.ToInt32(xt)
xx = objMP3V1.Frame(MP3ID3v1.FrameTypes.Genre) & vbLf
objMP3V1.Update()
End If
|
|
|
|
|
Member Alienoiz wrote: i tried this but no luck: Why are you trying to store 32 bit integer values in 8 bit byte fields?
|
|
|
|
|
well..,like i say..im no coder...i just read snippets and try by error!
|
|
|
|
|
can it be here?
' Fix the length of the frames
strTitle = LSet(mobjFrame(0), Len(strTitle))
strArtist = LSet(mobjFrame(1), Len(strArtist))
strAlbum = LSet(mobjFrame(2), Len(strAlbum))
strYear = LSet(mobjFrame(3), Len(strYear))
bytTrack = mobjFrame(4)
strComment = LSet(mobjFrame(5), Len(strComment))
bytGenre = mobjFrame(6)
sorry im blind about it for now (
|
|
|
|
|
Sorry, I really have no idea what that code is trying to do, so I cannnt say whether it is correct or not.
|
|
|
|
|
Unless you know "why" you want to convert a string to "byte" (which makes little sense in your present context) even knowing "how", will only get you a little bit further. And maybe "deeper" in the wrong direction.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Debugging methodology - there are others though.
Start removing or commenting out code until the error goes away. Obviously you must give some thought to exactly which code you do this to.
Then when the error goes away you have found the problem.
Then you can create a much smaller example code to test that functionality and figure out how to make it work correctly. Then you fix the original code and put everything else back.
|
|
|
|
|
I have developed an HR system in MS Access and want to use a camera attached to the computer to capture staff pictures on the form to store in a table with link as staff number of employee.
I asked once and I was directed to a sample code which I copied and used but it does not work.
can someone be of help?
|
|
|
|
|