Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1

Получить информацию об аудио-файле из плейлиста/с CD/DVD, изменить текущую позицию

25.03.2013, 23:49. Показов 1620. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В моем аудио-плеере есть всего заметных невооруженным глазом бага: не выходит получить информацию об аудио-файле из плейлиста [формат M3U] и также из CD/DVD диска (то есть название, альбом, год, если они записаны в тегах). И ещё нельзя перемотать на нужное место запись из плейлиста и диска.

Вот фрагменты кода, которые работают с обычными аудио-файлами и совершенно не работают с плейлистами и дисками.

Получить данные из тегов файла:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
' opredeliaem svoistva MP3 file
' delaem vidimimi LABELs
lblStatus.Visible = True
lblTitleHL.Visible = True
lblArtistHL.Visible = True
lblAlbumHL.Visible = True
lblYearHL.Visible = True
lblCommentHL.Visible = True
' vse peremenie localnie
Dim fNum As Integer
    Dim sTagIdent As String * 3
    Dim sTitle As String * 30
    Dim sArtist As String * 30
    Dim sAlbum As String * 30
    Dim sYear As String * 4
    Dim sComment As String * 30
    fNum = FreeFile
    ' esli iz file, to 4itaem tak
    If urlfile = True Then
    Open CDlg1.FileName For Binary As fNum
    Seek #fNum, LOF(fNum) - 127
    Get #fNum, , sTagIdent
    If sTagIdent = "TAG" Then
    Get #fNum, , sTitle
    Get #fNum, , sArtist
    Get #fNum, , sAlbum
    Get #fNum, , sYear
    Get #fNum, , sComment
    End If
    Close #fNum
    ' vivod
    lblTitleHL.Caption = "Title: " & sTitle
    lblArtistHL.Caption = "Artist: " & sArtist
    lblAlbumHL.Caption = "Album: " & sAlbum
    lblYearHL.Caption = "Year: " & sYear
    lblCommentHL.Caption = "Comment: " & sComment
    End If
Перемотать запись на нужное место [Position - это объект Slider]:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
' нажатие кнопки мыши на слайдер
Private Sub Position_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
' esli nazhatie na SLIDER - menyaem position
tmrUpdate.Enabled = False
Player.Controls.currentPosition = Position.Value
End Sub
 
' отпускание кнопки мыши со слайдера
Private Sub Position_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
' esli nazhatie na SLIDER - menyaem position
tmrUpdate.Enabled = True
Player.Controls.currentPosition = Position.Value
End Sub
 
' обновляется каждую миллисекунду и выводит текущее время записи
Private Sub tmrUpdate_Timer()
' position maximalnoe
If urlfile = True Then
' вызов функции Pos
Pos
' dvigat ego na SLIDER
Position.Value = Player.Controls.currentPosition
End If
End Sub
 
' позволяет получить время записи в секундах, используется функция из модуля
Public Function Pos()
' 2 znaka sleva - minuti
aPos = Left(MP3HeaderInfo.FPlayTime, 2) * 60
' pribavlyaem k secyndam
bPos = Right(MP3HeaderInfo.FPlayTime, 2) + aPos
' vivodim ograni4enye SLIDERa
Position.Max = bPos
End Function
Из модуля:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
Option Explicit
Public sGenreMatrix
 
Type Info
    sTitle As String * 30
    sArtist As String * 30
    sAlbum As String * 30
    sComment As String * 30
    sYear As String * 4
    sGenre As String * 21 ' NEW
End Type
 
Type HeaderInfo
    Layer As String
    Frequency As String
    Bitrate As String
    Mode As String
    MpegVersion As String
    Emphasis As String
    FPlayTime As String 'Formatted playing time - 04:32
    mFileSize As String
End Type
 
Public MP3Info As Info
Public MP3HeaderInfo As HeaderInfo
 
''''''Read MP3 Header BEGIN''''''
Public Function ReadMP3Header(sPassFileName As String)
Dim z, i
Dim BinaryString As String
Dim byteArray(4) As Byte    'array that store first four bytes
Dim bin As String           'string that store binary number converted from readed bytes
Dim BinString As String     'containing binary string
Dim DecString As Integer  'containing decimal extracted from BinString
'''''''''''''''end of declarations'''''''
On Error GoTo ende
Open sPassFileName For Binary Access Read As #1  'open file #1 for read
   For z = 1 To 4                           'step through four bytes
   Get #1, z, byteArray(z)                  'store every(z)byte  in array position z
   Next z                                   'back for next byte
 Close #1                                   'close file
 bin = ""                                   'reset and build the desired binary number in this string
   For z = 1 To 4                           'convert all bytes to binary
     For i = 0 To 7 Step 1                  'Here comes the decimal=>binary conversion
         If byteArray(z) And (2 ^ i) Then   'Use the logical "AND" operator.
            bin = bin + "1"
            Else
            bin = bin + "0"
         End If
         Next i                             'End of binary conversion
Next z
BinaryString = bin
'''''''''check MP3HeaderInfo.Frequency''''
DecString = 0
BinString = Mid(bin, 19, 2)         'take 19 to 21
For i = 1 To Len(BinString)         'convert to decimal
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Frequency = 44100
Case 1
MP3HeaderInfo.Frequency = 32000
Case 2
MP3HeaderInfo.Frequency = 48000
Case 3
End Select
'''''check MP3HeaderInfo.Layer''''
DecString = 0
BinString = Mid(bin, 10, 2)
For i = 1 To Len(BinString)
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Layer = ""
Case 1
MP3HeaderInfo.Layer = 2
Case 2
MP3HeaderInfo.Layer = 3
Case 3
MP3HeaderInfo.Layer = 1
End Select
''''check MP3HeaderInfo.Mode''''
DecString = 0
BinString = Mid(bin, 31, 2)
For i = 1 To Len(BinString)
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Mode = "Stereo"
Case 1
MP3HeaderInfo.Mode = "Dual Channel"
Case 2
MP3HeaderInfo.Mode = "Joint stereo"
Case 3
MP3HeaderInfo.Mode = "Mono"
End Select
''''check MP3HeaderInfo.MpegVersion
If Mid(bin, 12, 1) = 0 Then
MP3HeaderInfo.MpegVersion = 2
Else
MP3HeaderInfo.MpegVersion = 1
End If
'''''check MP3HeaderInfo.Bitrate''''
DecString = 0
BinString = Mid(bin, 21, 4)
For i = 1 To Len(BinString)
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Bitrate = 0
Case 1
MP3HeaderInfo.Bitrate = 112
Case 2
MP3HeaderInfo.Bitrate = 56
Case 3
MP3HeaderInfo.Bitrate = 224
Case 4
MP3HeaderInfo.Bitrate = 40
Case 5
MP3HeaderInfo.Bitrate = 160
Case 6
MP3HeaderInfo.Bitrate = 80
Case 7
MP3HeaderInfo.Bitrate = 320
Case 8
MP3HeaderInfo.Bitrate = 32
Case 9
MP3HeaderInfo.Bitrate = 128
Case 10
MP3HeaderInfo.Bitrate = 64
Case 11
MP3HeaderInfo.Bitrate = 256
Case 12
MP3HeaderInfo.Bitrate = 128 '48
Case 13
MP3HeaderInfo.Bitrate = 192
Case 14
MP3HeaderInfo.Bitrate = 96
Case 15
MP3HeaderInfo.Bitrate = 0
If MP3HeaderInfo.Layer = 1 Then
    Select Case DecString
    Case 0
MP3HeaderInfo.Bitrate = 0
    Case 1
  MP3HeaderInfo.Bitrate = 128
    Case 2
   MP3HeaderInfo.Bitrate = 64
    Case 3
MP3HeaderInfo.Bitrate = 256
    Case 4
MP3HeaderInfo.Bitrate = 48
    Case 5
MP3HeaderInfo.Bitrate = 192
    Case 6
MP3HeaderInfo.Bitrate = 96
    Case 7
    MP3HeaderInfo.Bitrate = 384
    Case 8
MP3HeaderInfo.Bitrate = 32
    Case 9
MP3HeaderInfo.Bitrate = 160
    Case 10
    MP3HeaderInfo.Bitrate = 80
    Case 11
MP3HeaderInfo.Bitrate = 320
    Case 12
MP3HeaderInfo.Bitrate = 56
    Case 13
MP3HeaderInfo.Bitrate = 224
    Case 14
  MP3HeaderInfo.Bitrate = 112
    Case 15
MP3HeaderInfo.Bitrate = 0
End Select
End If
End Select
'''''MP3HeaderInfo.Emphasis''''
DecString = 0
BinString = Mid(bin, 25, 2)
For i = 1 To Len(BinString)        'go from first
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Emphasis = "No"
Case 1
MP3HeaderInfo.Emphasis = "-?-"
Case 2
MP3HeaderInfo.Emphasis = "50/15"
Case 3
MP3HeaderInfo.Emphasis = "CITT j. 17"
End Select
 
With MP3HeaderInfo
    Dim min, sec
    .Bitrate = Int(.Bitrate)
    .mFileSize = FileSizeMP3(sPassFileName)
    .FPlayTime = ((.mFileSize * 8) / (.Bitrate * 1000))
    min = .FPlayTime \ 60         'minutes
    sec = .FPlayTime - (min * 60) 'seconds
    .FPlayTime = Format(min, "#0#") & ":" & Format(sec, "0#") 'format time to 00:00
End With
ende:
End Function
''''''Read MP3 Header END''''''
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2013, 23:49
Ответы с готовыми решениями:

Как получить текущую позицию курсора в TextBox?
Как получить текущую позицию курсора в TextBox?

Изменить информацию о внешнем файле
Всем привет. Подскажите как программно изменить название продукта и исходное имя внешнего файла который лежит в папке с программой. Просто...

Как изменить информацию о exe-файле, созданном в C++ Win32?
Например, добавить описание, номер версии и прочее:

7
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
27.03.2013, 23:17  [ТС]
Неужели никто не знает?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
28.03.2013, 07:33
Цитата Сообщение от Craw Посмотреть сообщение
не работают с плейлистами и дисками.
Просто вопрос не корректный.
Что такое плейлист? Не говоря уже о том, что форматов их несколько, в общем случае это обычный текстовый файл, в который помещен список музыкальных композиций.
Теперь вопрос - как из названия файла получить информацию об аудио-файле? Способ только один- загрузить эту музыку и всё узнать с помощью ваших чудесных фрагментов кода.
CD тоже бывают разные, записаны в различных аудио форматах. Вы про какие спрашиваете?
0
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
28.03.2013, 16:01  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
это обычный текстовый файл
Ну я просто не знал, что это обычный текстовой файл. У меня формат M3U только поддерживается пока, буду извлекать из файла тогда полные адреса файла.

С CD проблема - аудиозаписи на многих дисках не содержат тегов (лишь название track1), либо в не читаемом формате (например .cda). А если содержат и имеют формат MP3, то теоретически при нынешнем коде все должно работать. Тут нужно тестировать ещё разные диски.
0
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
01.04.2013, 19:10  [ТС]
Сегодня нашел время и взялся за это. Удалось сделать, чтобы проигрыватель выводил информацию об MP3-файле и из плейлиста. Столкнулся я же с проблемой, когда делал ограничение слайдера (для перемотки записи), чтобы его максимальное значение равнялось количеству секунд трека. Для этого ранее использовался вариант такой:
Кликните здесь для просмотра всего текста
Функция Pos определяла значение:
Visual Basic
1
2
3
4
5
6
7
8
Public Function Pos()
' 2 znaka sleva - minuti
aPos = Left(MP3HeaderInfo.FPlayTime, 2) * 60
' pribavlyaem k secyndam
bPos = Right(MP3HeaderInfo.FPlayTime, 2) + aPos
' vivodim ograni4enye SLIDERa
Position.Max = bPos
End Function
В свою очередь использовалась функция из модуля, которая определяла длину записи в формате 00:00, умножая битрейт на размер :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Public Function ReadMP3Header(sPassFileName As String)
Dim bin As String         
Dim BinString As String    
Dim DecString As Integer 
On Error GoTo ende
 
DecString = 0
BinString = Mid(bin, 21, 4)
For i = 1 To Len(BinString)
If Mid(BinString, i, 1) = 1 Then
DecString = DecString + 2 ^ (Len(BinString) - i)
End If
Next i
Select Case DecString
Case 0
MP3HeaderInfo.Bitrate = 0
Case 1
MP3HeaderInfo.Bitrate = 112
Case 2
MP3HeaderInfo.Bitrate = 56
Case 3
MP3HeaderInfo.Bitrate = 224
Case 4
MP3HeaderInfo.Bitrate = 40
Case 5
MP3HeaderInfo.Bitrate = 160
Case 6
MP3HeaderInfo.Bitrate = 80
Case 7
MP3HeaderInfo.Bitrate = 320
Case 8
MP3HeaderInfo.Bitrate = 32
Case 9
MP3HeaderInfo.Bitrate = 128
Case 10
MP3HeaderInfo.Bitrate = 64
Case 11
MP3HeaderInfo.Bitrate = 256
Case 12
MP3HeaderInfo.Bitrate = 128 '48
Case 13
MP3HeaderInfo.Bitrate = 192
Case 14
MP3HeaderInfo.Bitrate = 96
Case 15
MP3HeaderInfo.Bitrate = 0
If MP3HeaderInfo.Layer = 1 Then
    Select Case DecString
    Case 0
MP3HeaderInfo.Bitrate = 0
    Case 1
  MP3HeaderInfo.Bitrate = 128
    Case 2
   MP3HeaderInfo.Bitrate = 64
    Case 3
MP3HeaderInfo.Bitrate = 256
    Case 4
MP3HeaderInfo.Bitrate = 48
    Case 5
MP3HeaderInfo.Bitrate = 192
    Case 6
MP3HeaderInfo.Bitrate = 96
    Case 7
    MP3HeaderInfo.Bitrate = 384
    Case 8
MP3HeaderInfo.Bitrate = 32
    Case 9
MP3HeaderInfo.Bitrate = 160
    Case 10
    MP3HeaderInfo.Bitrate = 80
    Case 11
MP3HeaderInfo.Bitrate = 320
    Case 12
MP3HeaderInfo.Bitrate = 56
    Case 13
MP3HeaderInfo.Bitrate = 224
    Case 14
  MP3HeaderInfo.Bitrate = 112
    Case 15
MP3HeaderInfo.Bitrate = 0
End Select
End If
End Select
 
 
With MP3HeaderInfo
    Dim min, sec
    .Bitrate = Int(.Bitrate)
    .mFileSize = FileSizeMP3(sPassFileName)
    .FPlayTime = ((.mFileSize * 8) / (.Bitrate * 1000))
    min = .FPlayTime \ 60         'minutes
    sec = .FPlayTime - (min * 60) 'seconds
    .FPlayTime = Format(min, "#0#") & ":" & Format(sec, "0#") 'format time to 00:00
End With
ende:
End Function


Она не работает верно, так как выводит значения, которые больше, чем на самом деле. Это связанно с неправильным определением битрейта. В итоге пришлось забраковать и эти все функции как неправильные и искать другой вариант!

Самый очевидный и простой:

Visual Basic
1
Position.Max = Fix(Player.currentMedia.duration)
Максимальная позиция слайдера здесь равно округленной до целого длинны записи в секундах. Выдает ошибку "Invalid property value"! Как не бился над этим, я не в силах понять, что же тут не так!

Добавлено через 19 часов 44 минуты
Либо подскажите любой другой способ определения длинны аудио-записи в секундах, мне все равно, исправлять ли старые 2 варианта или новый делать.
Есть формула, по которой определяется объем звукового файла, её можно воспользоватся. Вопрос в том, как узнать для этого необходимые данные, чтобы сделать расчет?

Моно (1 звуковая дорожка):
V = ηvt,

Стерео (2 дорожки):
V = 2ηvt,

где:
V - размер файла
η - разрядность дискретизации, бит
v - частота дискретизации, Гц
t - время, сек
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.04.2013, 19:36
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от Craw Посмотреть сообщение
подскажите любой другой способ определения длинны аудио-записи в секундах,
Простейший код. Внимание на название песни - передается в кавычках!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim lTotalTime As Long
Dim strFileToPlay As String
 
Private Sub TotalTime()
    Dim TotalTime As String * 128
    mciSendString "open " & strFileToPlay & " type MPEGVideo", 0, 0, 0
    mciSendString "set " & strFileToPlay & " time format ms", TotalTime, 128, 0&
    mciSendString "status " & strFileToPlay & " length", TotalTime, 128, 0&
    lTotalTime = Val(TotalTime)
    
End Sub
 
Private Sub Command1_Click()
mciSendString "close all", 0, 0, 0
strFileToPlay = Chr(34) & "C:\E. Vaenga - Kurju.mp3" & Chr(34)
TotalTime
MsgBox lTotalTime / 1000 & "сек."
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
mciSendString "close all", 0, 0, 0
End Sub
1
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
01.04.2013, 23:26  [ТС]
Спасибо за код! Все работает с ним отлично, кроме перемотки. Почему значение Position.Max здесь не меняется, вроде все верно? Бывают же вещи, когда нельзя объяснить, почему работают или почему не работают...

Visual Basic
1
2
3
4
5
6
Public Function Pos()
mciSendString "close all", 0, 0, 0
strFileToPlay = Chr(34) & Player.URL & Chr(34)
TotalTime
Position.Max = Fix(lTotalTime / 1000)
End Function
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.04.2013, 06:29
Цитата Сообщение от Craw Посмотреть сообщение
кроме перемотки
Может надо
Visual Basic
1
mciSendString "close all", 0, 0, 0
применить сразу после того, как узнал время, перед использованием Position.Max?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2013, 06:29
Помогаю со студенческими работами здесь

Как получить информацию о файле?
Как получить информацию о файле с помощью C#?

Как получить информацию о файле
Необходимо получить информацию о типе файла, его атрибутах, времени создания. Подскажите как это сделать?

Получить информацию о файле из ресурсов
В ресурсах программы лежит exe. Извлекаю его так: File.WriteAllBytes("D:/file.exe", Properties.Resources.file); Как получить о нем...

Indy TIdHTTP получить информацию о файле
Требуется узнать дату создания/модификации файла на веб сервере не скачивая сам файл. Спасибо.

Как получить и вывести информацию о файле GIF
Подскажите, пожалуйста, как получить и вывести информацию без использования специальных классов каких-либо библиотек обработки формата GIF?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru