Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152

FindFirstFile не корректно определяет имена файлов с диакритическими знаками

18.04.2023, 21:49. Показов 5436. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Делаю програмку, необходимо получить содержимое папки (список папок и файлов) и после определить ФАЙЛ или ПАПКА и другие атрибуты. Как всегда делал раньше, через API "FindFirstFile", привык, удобно и есть заготовки кода. И вот, выясняется такая неприятная ситуация. На компьютере есть несколько видео файлов с испанскими названиями.
В них содержатся слова с Диакритическими знаками.

например: "Niño cristiano GANA! concurso secular YouTube.flv español.mp4"

Как выяснилось, "FindFirstFile" возвращая имя этого файла, возвращает его как:
"Nino cristiano GANA! concurso secular YouTube.flv espanol.mp4" - ну и в дальнейшем соответственно вся обработка рушится.

Вот код, давно когда-то нашёл на просторах интернета и всегда использовал:

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
    Dim bstFileName As String
    Dim lngFileCount As Long
    Dim lngAPIReturn As Long
    Dim bstPath As String
    Dim bstCinteria As String
    Dim abstFileNames() As String
    Dim lngHSearch As Long
    Dim udtWFD As WIN32_FIND_DATA
   
    bstCinteria = iCinteria
    bstPath = iPath
    
    lngHSearch = INVALID_HANDLE_VALUE
    lngHSearch = FindFirstFile(bstPath & iCinteria, udtWFD)
    lngFileCount = -1&
       
    If lngHSearch <> INVALID_HANDLE_VALUE Then
        Do
            bstFileName = Left(udtWFD.cFileName, VBA.InStr(1, udtWFD.cFileName, Chr(0)) - 1) ', vbNullString)
            Stop
            If (bstFileName <> ".") And (bstFileName <> "..") Then
                lngFileCount = lngFileCount + 1
                ReDim Preserve abstFileNames(0& To lngFileCount) As String
                abstFileNames(lngFileCount) = bstFileName
            End If
            lngAPIReturn = FindNextFile(lngHSearch, udtWFD)
        Loop Until lngAPIReturn = 0&
        FindClose lngHSearch
    End If
 
    oFileNames = abstFileNames
    oMaxIdx = lngFileCount

Облазил весь интернет, так и не понял, как можно исправить данную ситуацию.

Читал на каком-то зарубежном С++ форуме, что используют FindFirstFileW и WIN32_FIND_DATAW
Но как это оформить и поможет ли это в моём случае, до конца так и не понял. Даже не понял, как объявить правильно на vb6.

Если не затруднит, подскажите кто знает, решение. А лучше готовый кусок кода. Буду очень признателен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2023, 21:49
Ответы с готовыми решениями:

Обработка символов с диакритическими знаками
Привет. Dim macron As String = &quot;M̄acron&quot; MsgBox(macron) For n As Integer = 0 To macron.Length - 1 MsgBox(macron(n)) ...

Укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить восклицательными знаками
Дан список из N имён. Необходимо укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить...

Работа с файлами поиск файлов FindFirstFile,FindNextFile
Доброго времени суток, спустя долгое время, с измученным гуглом я нашел решение проблемы, но создалась еще одна проблема ...

88
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.04.2023, 22:24
Студворк — интернет-сервис помощи студентам
Вот так будет работать правильно: Debug.Print AscW(Mid(DirName, 1, 1)) & " " & AscW(Mid(DirName, 2, 1)) & " " & AscW(Mid(DirName, 3, 1)) & " " & AscW(Mid(DirName, 4, 1))

Добавлено через 28 секунд
Просто поменять Asc на AscW и всё, для уникодных символов надо именно так

Добавлено через 1 минуту
Цитата Сообщение от Memfivosfey Посмотреть сообщение
это не опровержимый факт.
Я только что опроверг доказательствами со скринов.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
21.04.2023, 22:25  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Хотя нет, Mid использовать можно
Надо использовать AscW
Неважно что использовать. Я получил БАЙТ из строки. И вернул с байта ASC код. Если бы это был код UTF, любой символ, то байты были бы разные. Так как все четыре байта одинаковые, значит это 100% кодировка Windows. Так же я писал ЛОГ в файл. В UTF8 формате. Но там, так же знаки вопроса.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.04.2023, 22:31
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Ваш код возвращает знаки вопроса
Мой код не возвращает вопросы, это ваш самодельный код возвращает вопросы, а именно функция Asc

Добавлено через 2 минуты
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Если вы реально помочь не способны, психовать ненужно
Психуете здесь только Вы.

Добавлено через 4 минуты
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Ваш код получает Знаки вопроса
Мой код никогда не получает знаки вопросов. Мой код получает правильную строку с китайщиной. Я уже сто раз это доказал. Конечно же это враньё полное. Поэтому я нахожу это оскорбительным.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
22.04.2023, 12:25
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Неважно что использовать. Я получил БАЙТ из строки.
Нет, на самом деле ОЧЕНЬ важно, какую функцию использовать. Вы получили не байт из строки, а символ, в котором два байта. Функция Mid никогда не возвращает байт. Байт возвращает функция MidB. Если у вас не достаточно квалификации поучились бы лучше.

Добавлено через 3 минуты
Надо просто иметь банальные представления о том, в каком виде хранятся строки в VB6. Что такое байт, а что такое символ. Какие функции использовать. Знать функции Chr, ChrW, Asc, AscW, Mid, MidB как минимум...

Добавлено через 7 минут
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Так же я писал ЛОГ в файл. В UTF8 формате.
Интересно даже, что вы так уверены про UTF-8)))))))) Строки в VB6 по умолчанию хранятся в формате UTF-16 LE, но бывают и исключительные ситуации когда в переменной String может находится и любая другая кодировка, например после функций конвертаций строк. Кодировку UTF-8 просто так получить нельзя в переменной String без конвертаций. Стандартной такой конвертации в VB6 нету. Надо либо писать самому через CopyMemory например либо использовать API для конвертации кодировок это функция MultiByteToWideChar например. Так же нужно иметь представления о том, что такое байтовый массив, а что такое строка.

Добавлено через 27 минут
Цитата Сообщение от Memfivosfey Посмотреть сообщение
lpSTR = VarPtr(WFD.dwReserved1) + 4
            PutMem4 VarPtr(dirName), SysAllocStringLen(0, lstrlen(lpSTR))
            lstrcpy StrPtr(dirName), lpSTR
Данный код получает строки в стандартной кодировке строк UTF16 LE

Добавлено через 2 минуты
Для того чтобы скидывать в ЛОГ-файл нужно записывать файл на бинарном уровне через байтовый массив обязательно, а не через строку.

Добавлено через 49 минут
Вы даже поленились просто почитать справку по функциям Asc и AscW, просто даже нажав F2 в бейсике и введя имя функции можно же увидеть описание

Asc:

Function Asc(String As String) As Integer
Member of VBA.Strings
Returns the ANSI character code of the first character in a string


AscW:

Function AscW(String As String) As Integer
Member of VBA.Strings
Returns the native character code of the first character in a string (Unicode or ANSI)

Хочу подчеркнуть, что Asc возвращает только ANSI character code. AscW возвращает (Unicode or ANSI) ну это же очень просто ну

Добавлено через 1 минуту
Другими словами функция Asc никогда не сможет вернуть номер китайского символа.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 12:54  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Если у вас не достаточно квалификации поучились бы лучше.
Судя по всему вы имеете ввиду себя?) Я верно понимаю?))

HackerVlad,
Так вы разберитесь прежде, я всё-таки лгун? Или нет?
А то как-то непонятно знаете ли. За наше не такое уж и длительное общение, я о О СЕБЕ узнал от вас значительно больше нового , чем о Visual Basic. и оскорблений наслушался и определений. Теперь вот озадачен. Лгун я или просто не квалифицирован?

Уж простите, но увольте. С Вашими нервами и больным самолюбием... себе дороже.
Я возможно и не имею достаточно квалификации, но склонен прислушиваться к адекватным людям. Простите.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
22.04.2023, 13:37
Вот специально для вас написал пример (урок) по записи и чтению китайского символа.

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
Option Explicit
Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal uType As Long) As Long
 
Private Sub Command1_Click()
    Dim str As String
    
    str = ChrB(&HF7) & ChrB(&H62) ' Это китайский символ из совокупности двух байтов F7 и 62 в HEX-формате
    
    MessageBox hwnd, StrPtr(str), StrPtr(App.Title), 0 ' MessageBox с поддержкой уникода
    
    ' Сделать тоже самое можно через ChrW (через просто Chr это сделать невозможно!!!)
    str = ChrW(&H62F7) ' В данном примере байты меняются местами
    
    MessageBox hwnd, StrPtr(str), StrPtr(App.Title), 0 ' MessageBox с поддержкой уникода
    
    ' Получить ASC-код простой функций Asc НЕВОЗМОЖНО для китайских символов!!!
    MsgBox Asc(str) ' Будет 63 знак вопроса
    
    ' А вот так можно
    MsgBox AscW(str)
    
    ' И вот так можно в HEX-формате
    MsgBox Hex(AscW(str))
    
    ' Но, к сожалению функция AscW получает номер символа с поменяными местами байтами,
    ' и для правильного чтения нужно менять байты местами либо читать с помощью AscB и MidB лучше всего
    MsgBox Hex(AscB(MidB(str, 1, 1))) & Hex(AscB(MidB(str, 2, 1)))
End Sub
Добавлено через 6 минут
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Так вы разберитесь прежде, я всё-таки лгун? Или нет?
Ну это неоспоримый факт, что вы соврали, что мой код не работает и возвращает вопросы якобы. На самом деле виноват был ваш код.

Добавлено через 1 минуту
Я тоже не хочу с вами больше общаться.

Добавлено через 12 секунд
Никакой благодарности.

Добавлено через 31 минуту
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Судя по всему вы имеете ввиду себя?
Нет конечно, учитесь сами, читайте в интернете всё сами. Мне такие ученики уж точно не нужны.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 13:57  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
вы соврали,
Цитата Сообщение от HackerVlad Посмотреть сообщение
На самом деле виноват был ваш код.
Простите меня, я не силён в программировании, как вы видите, но достаточно силён в психологии. Дам вам один искренний совет, вам стоит очень серьёзно разобраться с "содержимым" Вашей головы. Вашими мыслями и пониманием. То, что вы Думаете и Говорите людям, как вы рассуждаете. Вашей логике. Так же, вам нужно обязательно разобраться в понятии Ложь.
Потому как то, что вы пишете..., боюсь даже представить, какими мыслями наполнена ваша голова. Ещё раз простите, без злого умысла. Это единственный совет который я вам дам и единственное вмешательство в ваши личные вопросы.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Вот специально для вас написал пример (урок) по записи и чтению китайского символа.
Цитата Сообщение от HackerVlad Посмотреть сообщение
Нет конечно, учитесь сами, читайте в интернете всё сами. Мне такие ученики уж точно не нужны.
Сразу видно, что никакой ответственности за свои слова вы нести не способны. Искренне благодарен за то, в чём помогли, всего доброго.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.04.2023, 19:08
Memfivosfey, приложите минимальный проект или код вместе с тестируемым набором данных, в котором легко воспроизводится озвученный вами баг, чтобы не возникало вот таких неловких ситуаций.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 19:43  [ТС]
Dragokas, вы меня простите, я конечно приму ваш совет к сведению в качестве информации на будущее,
Но к данной ситуации он не имеет никакого отношения. Корень этой ситуации совсем в другом.
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
22.04.2023, 20:47
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Последний "Debug.Print" возвращает 63 63 63 63 - код знака вопроса. Это значит, что проблема не в ОТОБРАЖЕНИИ, а в самой строке. Ваш код получает Знаки вопроса. А реальное имя файла: "バリバリ.png"
Проблема в функции Asc, нужно использовать AscW. Asc конвертирует юникодный символ сначала в ANSI и возвращает результат уже сконвертированного символа. Если такого нет в текущей кодовой странице то там получается вопрос.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 21:26  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Проблема в функции Asc
- это я уже понял.
Вы случайно не подскажете, как можно определить Какое имя файла в ЮНИКОДЕ, а какое нет.

Вот я получаю строковую переменную, в которой имя файла. Как мне при помощи VB6 выяснить, что это строка, которая содержит именно ЮНИКОД или ANSI?
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
22.04.2023, 21:28
Цитата Сообщение от Memfivosfey Посмотреть сообщение
Вот я получаю строковую переменную, в которой имя файла.
Как Вы его получаете? Если через W функцию - то это юникодные символы, если через A - то ANSI.
0
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 21:58  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Как Вы его получаете? Если через W функцию - то это юникодные символы, если через A - то ANSI.
Хм. Хорошо, я наверное не верно поставил вопрос. Мне нужно отловить файлы, с любыми "НЕСТАНДАРТНЫМИ" символами. Тоесть с такими символами, которые при конвертации в ANSI превращаются в знаки вопроса. И все эти символы в файлах, заменить к примеру на знак подчёркивания. "_" , но я не понимаю, каким образом, средствами VB6 определить, что в ИМЕНИ файла присутствуют такие символы. Надеюсь более правильно поставил вопрос.
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
22.04.2023, 22:04
Цитата Сообщение от Memfivosfey Посмотреть сообщение
И все эти символы в файлах, заменить к примеру на знак подчёркивания. "_" , но я не понимаю, каким образом, средствами VB6 определить, что в ИМЕНИ файла присутствуют такие символы.
Вызываете WideCharToMultiByte, последний параметры определяет то что Вам нужно.
1
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
22.04.2023, 22:05  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Вызываете WideCharToMultiByte, последний параметры определяет то что Вам нужно.
Хорошо, спасибо! попробую.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
22.04.2023, 22:10
Написал сейчас по быстрому функцию, вроде ничего сложного же

Visual Basic
1
2
3
4
5
6
7
8
9
Public Function IsUnicodeString(str As String) As Boolean
    Dim i As Long
    
    For i = 1 To Len(str) Step 2
        If AscB(MidB(str, i + 1, 1)) > 0 Then
            IsUnicodeString = True
        End If
    Next
End Function
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.04.2023, 15:36
HackerVlad, поиск NUL 2-го байта W-символа это так будет работать только с латиницей.
В расширенном ASCII 2 байт занят.
Если через стандартные функции, то можно просто if asc(char) = 63
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
23.04.2023, 15:47
Цитата Сообщение от Dragokas Посмотреть сообщение
то можно просто if asc(char) = 63
Я думал об этом, а если в тексте есть настоящие вопросы? Вот видишь...

Добавлено через 1 минуту
Надо тогда сравнивать два варианта текста получается. Оригинальный в Wide формате и текст отконвертированный в ANSI и проверять а появились ли вопросики там где их раньше небыло, другого на ум ничего не приходит тут уже

Добавлено через 3 минуты
Цитата Сообщение от Dragokas Посмотреть сообщение
только с латиницей
а русские кодируются в два байта? в W строках?

Добавлено через 5 минут
А вообще мне кажется надо просто знать номера символов которые интересуют для определения в диапазоне конечно и их искать, например:

If strW Like "*[" & ChrW(192) & "-" & ChrW(255) & "]*" Then ' Если строка содержит символы в диапазоне от 192 до 255 (обычно это кракозяблики, но не всегда)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.04.2023, 15:49
Цитата Сообщение от HackerVlad Посмотреть сообщение
а русские кодируются в два байта? в W строках?
ну сохрани тестовый файл в формате UTF16LE, и открой в хекс-редакторе и сам посмотри.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Я думал об этом, а если в тексте есть настоящие вопросы? Вот видишь...
В именах файлов знаки "?" недопустимы.

Добавлено через 1 минуту
Цитата Сообщение от HackerVlad Посмотреть сообщение
If strW Like "*[" & ChrW(192) & "-" & ChrW(255) & "]*" Then ' Если строка содержит символы в диапазоне от 192 до 255 (обычно это кракозяблики, но не всегда)
тут могут быть проблемы в зависимости от настроек локали в системе
1
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
23.04.2023, 16:08
Цитата Сообщение от Dragokas Посмотреть сообщение
В именах файлов знаки "?" недопустимы.
Ну да, я об этом не подумал конечно про эту конкретную задачу, хотя да хренг его знает может у него будет там какая-нибудь линукская файловая система которая позволяет вопросы в именах файлов кто его знает ну

Добавлено через 10 минут
А можно пойти от обратного и проверить

1. Если строка не содержит все латинские символы
2. Если строка не содержит все русские символы
3. Если строка не содержит все доступные спец символы

Значит логично что строка содержит экзотическую строку с уникодом типа китайщины

Добавлено через 38 секунд
А лучше всего всё-таки сразу диапазон китайщины знать и искать мне кажется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2023, 16:08

Создать файл, содержащий имена всех файлов системы, созданных в текущем месяце, имена пользователей, их создавших
Через командную строку необходимо: Создать файл, содержащий имена всех файлов системы, созданных в текущем месяце, имена пользователей,...

Функция поиска файлов, и вывод списка найденных (использую FindFirstFile, FindNextFile)
Друзья, возникла следующая сложность, написал функцию для поиска файлов(.txt) в текущей директории, название файлов нейзвестно, поэтому, с...

GetPixel не корректно определяет цвет
Добрый день! У меня стоит цель определять RGB пикселя в указанной курсором позиции в открытых изображениях. void...

OnEnterCollision не определяет имена и теги
Доброго времени суток, у меня возникла необходимость проверять на столкновения двух объектов, так вот я нашел функцию...

Переименование PDF-файлов в имена, берущиеся из содержимого этих файлов
Всем доброго времени суток!:) Подскажите, пожалуйста, как переименовать файл с расширением pdf, взяв сам текст для наименования файла из...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru