Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840

Как правильно открыть TXT файл для чтения, например чтобы запихнуть в TextBox или просто загрузить в массив строк

17.09.2023, 18:23. Показов 3935. Ответов 82
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я ещё раньше не занимался этим вопросом с помощью API-функций, так как всегда работал с помощью стандартных методов VB6. А теперь, поняв фундаментальный недостаток VB6-метода (отсутствие поддержки юникода в именах файлов), я хочу научиться открывать/загружать стандартный текстовый файл с помощью API.

Итак, за это отвечает у нас функция ReadFile, но уважаемый The Trick, я посмотрел, загружает файлы каким-то странным, другим способом, через функции CreateFileMapping и MapViewOfFile, я если честно в этом ничего не понимаю. Смотрел описание этих функций так толком и не понял зачем их использовать вместо стандартного ReadFile.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2023, 18:23
Ответы с готовыми решениями:

GDI+ как освободить файл или открыть только для чтения
Добрый день! Занимаюсь написанием своего графического редактора на ассемблере. Последняя версия http://esm.ho.ua/Automat.html Нужна...

Как открыть доступ для чтения файла 'output.txt'?
Пример: program Project2; {$APPTYPE CONSOLE} uses SysUtils; var f1,f2:Text;

Как поток чтения (или записи) запихнуть в класс?
Здравствуйте!!! Ребят, подскажите пожалуйста, собственно, как запихнуть в класс поток ifstream? Че-то я озадачен оказался *-) Без...

82
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
21.09.2023, 17:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от HackerVlad Посмотреть сообщение
Примерно 125 млск
у меня 47млск в vba
Ну преимущество api видно конечно. Если в цикле делать, будет заметно.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 17:15  [ТС]
testuser2, ну а если загрузить мегабайт 300 или 500 сам подумай. Целую секунду можно сэкономить.

Добавлено через 34 секунды
Цитата Сообщение от testuser2 Посмотреть сообщение
у меня 47млск в vba
какой у тебя процессор, что так быстро

Добавлено через 30 секунд
И не у всех людей такие мощные компьютеры
0
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
21.09.2023, 17:18
Цитата Сообщение от HackerVlad Посмотреть сообщение
уже использовать Space$ не имеет смысла. Медленно будет. Я думал ты это знаешь.
Нет я спейс не очень ,лучше vbnullchar (перепутал сдесь с vbnullstring) vbnullchar это нуль, готовое место под запись

Добавлено через 2 минуты
Цитата Сообщение от HackerVlad Посмотреть сообщение
какой у тебя процессор, что так быстро
Ноутбуг, фирмы DNS ) процессор i5-3210m раньше в Дерт ралли на нем гонял
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 17:22  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
Нет я спейс не очень ,лучше vbnullchar
Кому что нравится, хоть буквой Г можешь всё заполнить, но Space$ во всяком случае короче будет по написанию

Добавлено через 1 минуту
Цитата Сообщение от testuser2 Посмотреть сообщение
Ноутбуг, фирмы DNS ) процессор i5-3210m раньше в Дерт ралли на нем гонял
сколько ядер?

Добавлено через 2 минуты
testuser2, кстати если ты уж так любишь использовать String, то хотябы тогда используй String$ знак доллара, иногда, тоже может сэкономить кучу времени, на практике знаю, с долларом можно и пол секунды сэкономить даже
0
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
21.09.2023, 17:22
2 ядра, 4 потока
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 17:27  [ТС]
Чтобы программа работала быстрее всегда так же используй Mid$ вместо простого Mid, разница в скорости будет заметна, если обрабатывать текст десятками, а то и сотнями мегабайт данных

Добавлено через 1 минуту
testuser2, а у меня 4 ядра и процессор вроде 3800 Мегагерц и всё равно медленнее, странно это конечно) Может в VB6 медленнее просто, не знаю)

Добавлено через 2 минуты
testuser2, хотя скорость в IDE VB6 и в EXE у меня одинаковая я посмотрел
0
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
21.09.2023, 17:30
Цитата Сообщение от HackerVlad Посмотреть сообщение
так же используй Mid$ вместо простого Mid
Это я знаю, даже когда-то тестировал. Например arr() будет быстрее чем arr (variant) и т.д., на темах всех бывал уже про быстродействие. Есть много нюансов и много функций (если не большинство) которые если переписат на vb/vba-шный код, будет работать быстрее. VB не плохой старичек.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 17:34  [ТС]
testuser2, да и кстати String$ и Space$ имеет ограничение примерно на 500 Мб данных. В отличии от API. Хотя на самом деле строка должны быть до 2 Гб как минимум.

Добавлено через 1 минуту
testuser2, сам посмотри:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
    Dim tick As Long
    Dim str As String
    
    tick = GetTickCount
    
    str = String$(260000000, vbNullChar) ' Работает! Примерно 500 Мб строки данных (по два байта на один символ)
    'str = String$(265000000, vbNullChar) ' Уже не работает! Недостаточно места в строке
    
    Print GetTickCount - tick ' Примерно 180 млск у меня в IDE VB6
End Sub
Добавлено через 2 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
VB не плохой старичек.
VB очень даже отличный старичок) и программы работают быстро, если правильно и грамотно писать)
0
21.09.2023, 17:37

Не по теме:

VB(VBA) в сфере макросов, абсолютный лидер по скорости и удобству, и конечно коду уже набито за 100 лет немеряно.

0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 17:41  [ТС]
testuser2, так что теперь, для выделения строки, используй связку PutMem4 и SysAllocStringLen/SysAllocStringByteLen
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.09.2023, 18:29
Цитата Сообщение от HackerVlad Посмотреть сообщение
The trick, вот переделал как ты просил:
Что будет если SysAllocStringByteLen зафейлится?

Цитата Сообщение от HackerVlad Посмотреть сообщение
If MidB$(stringbuffer, 1, 3) = ChrW(&HBBEF) & ChrB(&HBF) Then ' Если есть запись BOM
                   lpMultiByteStr = StrPtr(stringbuffer) + 3
                Else
                    lpMultiByteStr = StrPtr(stringbuffer)
                End If
Запись BOM бывает в разных форматах, я бы так не делал. Прочитал в байтовый массив первые несколько байт как у себя я делал.

Добавлено через 1 минуту
Цитата Сообщение от testuser2 Посмотреть сообщение
Но строка не работает, не хочет заполнять нулями.
Мб vbNullChar все-таки?
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 18:31  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Что будет если SysAllocStringByteLen зафейлится?
Когда это он фейлился ты мне скажи?
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.09.2023, 18:32
Цитата Сообщение от HackerVlad Посмотреть сообщение
Когда это он фейлился ты мне скажи?
Когда памяти не будет хватать.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 18:51  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Прочитал в байтовый массив первые несколько байт как у себя я делал.
Зачем мне байтовый массив если я могу работать сразу со строкой? Нормально у меня всё, я считаю.

Цитата Сообщение от The trick Посмотреть сообщение
Запись BOM бывает в разных форматах
Для UTF8 только в таком. Код ChrW(&HBBEF) & ChrB(&HBF) является нормальным вполне по моему.

Добавлено через 46 секунд
Ну могу ещё три ChrB соединить но это одно и тоже получится

Добавлено через 54 секунды
Ну или байтовый массив, как ты предлагаешь и сравнивать первые три байта, но это одно и тоже будет.

Добавлено через 2 минуты
Думаешь MidB$(stringbuffer, 1, 3) медленно работать будет что ли. Думаю так же быстро как и сравнивать первые три байта из байтового массива.

Добавлено через 7 минут
Цитата Сообщение от The trick Посмотреть сообщение
Когда памяти не будет хватать.
Ну зафейлится так зафейлится. Пусть будет неожиданный крах программы тогда. Какая мне разница, слцчай один на миллион.

Добавлено через 50 секунд
Всё равно я регистрирую свою программу к перезапуску в случае сбоя

Добавлено через 5 минут
The trick, кстати говоря ты вот любишь использовать Space$ для выделения строки, а если у тебя зафелится эта команда? То вообще будет Run-time error 14 Недостаточно места в строке. Фиг ты проверишь хватит памяти или не хватит.
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.09.2023, 19:04
Цитата Сообщение от HackerVlad Посмотреть сообщение
Зачем мне байтовый массив если я могу работать сразу со строкой? Нормально у меня всё, я считаю.
Со строкой медленней, чем непосредственно чтение из массива. Вот это:
Цитата Сообщение от HackerVlad Посмотреть сообщение
MidB$(stringbuffer, 1, 3) = ChrW(&HBBEF) & ChrB(&HBF)
- создает целую кучу ненужных команд, а если необходимо проверить несколько вариантов BOM'а то это вообще будет уже намного менее производительным. Вообще есть такое мнение что для бинарных данных нужно использовать массивы, для строк - строки. Если у тебя данные могут быть в формате UTF-16 то да, можно использовать стразу строки, а иначе это уже бинарные данные которые тебе необходимо конвертировать в строки.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Для UTF8 только в таком. Код ChrW(&HBBEF) & ChrB(&HBF) является нормальным вполне по моему.
Вот это создает 2 временных строки, затем создает 3 временную строку, потом 2 первые освобождаются, а затем и 3-я освобождается. Для чего все это когда нам нужно только проверить 3 байта? Проверка b(0) = &HEF ... будет намного быстрее и меньше по размеру.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Какая мне разница, слцчай один на миллион.
Да мне тоже, просто ты скинул код, я думал ты хочешь услышать мнение по этому коду.

Цитата Сообщение от HackerVlad Посмотреть сообщение
The trick, кстати говоря ты вот любишь использовать Space$ для выделения строки, а если у тебя зафелится эта команда?
Ну на сотни МБ я Space не использую обычно. Для мелких UFT-16 строк юзаю, а где теоретически может возникнуть ошибка там ставлю обработчики исключений и краха не будет.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 19:26  [ТС]
The trick, я проверю насколько быстрее будет с массивом. На миллисекунд 10 может)

Добавлено через 15 минут
The trick, переопределять границы массива лучше всего через ReDim Preserve или через просто ReDim?
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.09.2023, 19:46
HackerVlad, если тебе нужна макс скорость то лучше не массив юзать а просто память выделить. При выделении массива время тратится также на его зануление.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 19:50  [ТС]
The trick, переписал на байтовый массив - ничем не отличается по скорости вообще для 100 Мб

Добавлено через 2 минуты
The trick, пробую теперь на 200 Мб и смотрю и вижу что мой первоначальный вариант со строкой оказался быстрее по скорости

Добавлено через 50 секунд
Может конечно медленно работает ReDim Preserve byte_array(FileSize - 1) но факт остаётся фактом что со строкой мой первый код работает быстрее у меня

Добавлено через 1 минуту
842 ml строка
889 ml байтовый массив
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.09.2023, 19:50
HackerVlad, тебе уже написал что Redim зануляет память, а тебе не нужно это.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
21.09.2023, 20:08  [ТС]
Так что зря ты мне посоветовал на байтовый массив переходить

Добавлено через 1 минуту
Цитата Сообщение от The trick Посмотреть сообщение
то лучше не массив юзать а просто память выделить
Я не умею. Да и ты советовал именно байтовый массив. Сам же советовал. А оказалось это медленнее.

Добавлено через 1 минуту
The trick, ты мне советовал именно байтовый массив, ругая меня, что я использую строку. А оказалось что строка быстрее.

Добавлено через 2 минуты
Цитата Сообщение от The trick Посмотреть сообщение
а просто память выделить.
вот этого я делать не умею, да и ты говорил именно про массив мол якобы он быстрее будет чем мои строки

Добавлено через 51 секунду
The trick, вот, смотри сам:

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
Option Explicit
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, ByVal lpBuffer As Long, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Sub PutMem4 Lib "msvbvm60" (ByVal Ptr As Long, ByVal Value As Long)
Private Declare Function SysAllocStringByteLen Lib "oleaut32" (ByVal olestr As Long, ByVal BLen As Long) As Long
Private Declare Function SysAllocStringLen Lib "oleaut32" (ByVal olestr As Long, ByVal BLen As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cbMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileW" (ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
 
Private Const OPEN_EXISTING As Long = 3
Private Const GENERIC_READ As Long = &H80000000
Private Const CP_UTF8 As Long = 65001
Private Const GENERIC_WRITE As Long = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const CREATE_ALWAYS = 2
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const INVALID_HANDLE_VALUE As Long = -1
 
Public Function ReadFromTextFileUTF8(ByVal FileName As String) As String
    Dim hFile As Long
    Dim stringbuffer As String
    Dim numread As Long
    Dim FileSize As Long
    Dim nOutputCharLen As Long
    Dim lpMultiByteStr As Long
    
    hFile = CreateFile(StrPtr(FileName), GENERIC_READ, FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0)
    
    If hFile <> INVALID_HANDLE_VALUE Then
        FileSize = GetFileSize(hFile, ByVal 0&) ' Этот метод только до 2Гб
        
        If FileSize > 0 Then
            PutMem4 VarPtr(stringbuffer), SysAllocStringByteLen(0&, FileSize) ' Мгновенно выделить память для строки
            
            If ReadFile(hFile, StrPtr(stringbuffer), FileSize, numread, ByVal 0&) > 0 Then
                If MidB$(stringbuffer, 1, 3) = ChrW(&HBBEF) & ChrB(&HBF) Then ' Если есть запись BOM
                    lpMultiByteStr = StrPtr(stringbuffer) + 3
                Else
                    lpMultiByteStr = StrPtr(stringbuffer)
                End If
                
                nOutputCharLen = MultiByteToWideChar(CP_UTF8, 0&, lpMultiByteStr, FileSize, 0&, 0&)
                If nOutputCharLen > 0 Then
                    PutMem4 VarPtr(ReadFromTextFileUTF8), SysAllocStringLen(0&, nOutputCharLen)
                    MultiByteToWideChar CP_UTF8, 0&, lpMultiByteStr, FileSize, StrPtr(ReadFromTextFileUTF8), nOutputCharLen ' Преобразовать кодировки
                End If
            End If
        End If
        
        CloseHandle hFile
    End If
End Function
 
Public Function ReadFileUTF(ByVal FileName As String) As String
    Dim hFile As Long
    Dim byte_array() As Byte
    Dim numread As Long
    Dim FileSize As Long
    Dim nOutputCharLen As Long
    Dim lpMultiByteStr As Long
    
    hFile = CreateFile(StrPtr(FileName), GENERIC_READ, FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0)
    
    If hFile <> INVALID_HANDLE_VALUE Then
        FileSize = GetFileSize(hFile, ByVal 0&) ' Этот метод только до 2Гб
        
        If FileSize > 0 Then
            ReDim Preserve byte_array(FileSize - 1)
            
            If ReadFile(hFile, VarPtr(byte_array(0)), FileSize, numread, ByVal 0&) > 0 Then
                If byte_array(0) = &HEF And byte_array(1) = &HBB And byte_array(2) = &HBF Then ' Если есть запись BOM
                    lpMultiByteStr = VarPtr(byte_array(3))
                Else
                    lpMultiByteStr = VarPtr(byte_array(0))
                End If
                
                nOutputCharLen = MultiByteToWideChar(CP_UTF8, 0&, lpMultiByteStr, FileSize, 0&, 0&)
                If nOutputCharLen > 0 Then
                    PutMem4 VarPtr(ReadFileUTF), SysAllocStringLen(0&, nOutputCharLen)
                    
                    If Len(ReadFileUTF) = nOutputCharLen Then ' Если строка была успешно выделена (специально для The Trick) чтобы не придерался ко мне
                        MultiByteToWideChar CP_UTF8, 0&, lpMultiByteStr, FileSize, StrPtr(ReadFileUTF), nOutputCharLen ' Преобразовать кодировки
                    End If
                End If
            End If
        End If
        
        CloseHandle hFile
    End If
End Function
 
' Тестируем загрузку файла размером 180 Мб
Private Sub Command1_Click()
    Dim tick As Long
    Dim str As String
    
    tick = GetTickCount
    
    str = ReadFromTextFileUTF8("C:\Test\Test.txt") ' 843 ml
    
    Me.Caption = GetTickCount - tick
    
    Text1.Text = Mid$(str, 1, 1000)
End Sub
 
Private Sub Command2_Click()
    Dim tick As Long
    Dim str As String
    
    tick = GetTickCount
    
    str = ReadFileUTF("C:\Test\Test.txt") ' 889 ml
    
    Me.Caption = GetTickCount - tick
    
    Text1.Text = Mid$(str, 1, 1000)
End Sub
Добавлено через 53 секунды
The trick, ну вот я тебе и доказал, что ты был неправ, что массив быстрее будет

Добавлено через 11 минут
Цитата Сообщение от The trick Посмотреть сообщение
Проверка b(0) = &HEF ... будет намного быстрее
сама по себе эта проверка может и чуть быстрее, но использование байтового массива медленнее, кроме как ReDim я не знаю как определить массив ещё и вряд ли ты в своих кодах писал как-то иначе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2023, 20:08

Открыть файл и загрузить содержимое в TextBox
Доброго времени суток! Ребят помогите справиться с задачей есть код по открытие файла private void toolStripMenuItem2_Click(object...

Как расшифровать файл dat или просто открыть его и вывести на экран
Мне нужно открыть файл с расширением dat и вывести на экран Как это сделать, дайте пожалуйста примерный код

Открыть для записи текстовый файл data.txt и записать в него полученный массив, закрыть файл
Составить программу с подпрограммами для выполнения следующего алгоритма (предусмотреть процедуры записи и чтения информации из файла). ...

Как открыть файл для чтения?
некоторый дивайс пишет данные в текстовый файл , мне нужно не прерывая и не мешая дивайсу прочитать этот файл делаю так var ...

Файл: Как можно открыть файл txt и занести из него данные в массив?
как можно открыть файл txt и занести из него данные в массив, а после из этого массива вывести в выпадающий список значения? заранее...


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

Или воспользуйтесь поиском по форуму:
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