Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28

Форматирование текстового файла (перевод с Си)

10.12.2017, 16:18. Показов 3702. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, есть код на СИ, нужно его перевести на Java. Может кто-нибудь разбирается и сможет перевести небольшой кусочек кода? Буду очень признателен.

C
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
*
int SplitToLines (char *text, int buf, char *filename)
{ * FILE *f = fopen (filename, "w");
* * if (!f)
* * { * perror(" ");
* * * * return 0;
* * }
*
* * int len = 0;
* * char *temp = (char*) malloc (buf+1);
* * char *word = strtok (text," ");
* * 
* * while (word != NULL)
* * { * strcpy(temp, word);
* * * * len += strlen(temp)+1;
* * * * * * * * 
* * * * if (len < buf )
* * * * * * fprintf (f, "%s ", word);
* * * * else
* * * * { * fprintf (f, "\n%s ", word);
* * * * * * len = strlen(temp)+1;
* * * * }
* * * * word = strtok (NULL, " ");
* * }
*
* * fclose(f);
* * free (temp);
* * return 1;
}
*
int PrintLines (int buf, char *filename)
{ * FILE *f = fopen (filename, "r");
* * if (!f)
* * { * perror(" ");
* * * * return 0;
* * }
* * char *line = (char*) malloc (buf+1);
*
* * while (fgets(line, buf, f))
* * * * fprintf(stdout, "%s", line);
*
* * fclose(f);
* * free (line);
* * return 1;
}
*
int main()
{ * int buf = 50;
* * char *filename = "lines.txt";
* * 
* * char text[] = "Split string into tokens. A sequence of calls to this function split str into tokens, \
which are sequences of contiguous characters separated by any of the characters that are part of delimiters. \
On a first call, the function expects a C string as argument for str, whose first character is used as \
the starting location to scan for tokens. In subsequent calls, the function expects a null pointer and \
uses the position right after the end of last token as the new starting location for scanning.";
*
* * printf("\nOriginal text:\n\n");
* * puts(text);
*
* * SplitToLines (text, buf, filename);
* * printf("\nText in lines:\n\n");
* * PrintLines (buf, filename);
*
* * getchar ();
* * return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2017, 16:18
Ответы с готовыми решениями:

Форматирование текстового файла
Доброго времени суток! Укажите, пожалуйста, на путь истинный. Задача. Есть файл.лог в котором следующая запись 01.04.2012 - 12:00:00...

Форматирование текстового файла
Всем доброго времени суток.Помогите с кодом.У меня задание на форматирование текстовых файлов учитывая левую и правую границы. Есть...

Перевод текстового файла в UTF-8
Добрый день. Мне дали задание составить программу, конвертирующую текстовый файл (кириллица по идее) в UTF-8. Полагается, что...

27
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.12.2017, 23:12
словами напиши что оно должно делать
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
11.12.2017, 14:46  [ТС]
xoraxax, Нужно сделать так: Осуществить форматирование выбранного пользователем текстового файла, так чтобы все абзацы имели отступ ровно 3 пробела, а длина каждой строки была ровно 80 символов и не имела начальными и конечными символами пробел.

Либо можно вот так: Разделить заданный текст на строки длиной меньше 50 символов. Слова разделены пробелами. Переносить часть слова не разрешается.

Очень нужно.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
11.12.2017, 19:03
а с форматированным текстом что делать?
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
11.12.2017, 22:24  [ТС]
Цитата Сообщение от ArtemFM Посмотреть сообщение
а с форматированным текстом что делать?
записать в файл, либо вывести на экран. не важно
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
12.12.2017, 02:55
Java
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
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
 
public class Task011 {
    public static void main(String[] args) {
        String pathRead = "C:\\fin.txt";     //путь к файлу для чтения
        String pathWrite = "C:\\result.txt"; //создаём файл для записи
        int lengthLine = 80;                 //разрешённое кол-во символов в строке
        int tab = 3;                         //кол-во пробелов в начале абзаца
 
        List<String> list = readFile(pathRead);   //читаем файл в лист
        list = formatText(list, lengthLine, tab); //форматируем текст из листа
 
        list.forEach(System.out::println); //выводим текст в консоль
 
        writeFile(pathWrite, list); //записываем текст в файл
    }
 
    //читаем файл в коллекцию Лист
    public static List<String> readFile(String path) {
        List<String> list = null;
        if (path != null) {
            try {
                list = Files.readAllLines(Paths.get(path));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
 
    //записываем коллекцию типа Лист в файл
    public static void writeFile(String path, List<String> list) {
        try {
            Files.write(Paths.get(path), list);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    //общий метод форматирования
    public static List<String> formatText(List<String> list, int lengthLine, int tab) {
        List<String> resultList = new ArrayList<>();
        if (list != null && lengthLine > 0) {
            for (String line : list) {
                line = line.trim();
                line = setTab(line, tab);
                String[] array = getOfferNotMoreCountSymbols(line, lengthLine);
                array = getAlignmentText(array, lengthLine);
                resultList.addAll(Arrays.asList(array));
            }
        }
        return resultList;
    }
 
    //Разделяем строку на массив, где каждый индекс не больше заданного кол-ва символов (count).
    private static String[] getOfferNotMoreCountSymbols(String offer, int count) {
        int length = offer != null && count > 0 ? offer.length() / count + 1 : 0;
        String[] result = new String[length];
        if (length > 0) {
            int indexArray = 0;
            int indexSymbol = count - 1;
            while (offer.length() > count && indexSymbol != -1) {
                if (offer.charAt(indexSymbol) != ' ') {
                    indexSymbol--;
                } else {
                    result[indexArray++] = offer.substring(0, indexSymbol);
                    offer = offer.substring(indexSymbol + 1, offer.length());
                    indexSymbol = count - 1;
                }
                if (indexArray == length) {
                    result = Arrays.copyOf(result, indexArray + 1);
                }
            }
            result[indexArray] = offer;
        }
        return result;
    }
 
    //устанавливает в начале абзаца нужное кол-во пробелов
    private static String setTab(String offer, int countTab) {
        return offer != null && offer.length() > 0 ? getCountSpaces(countTab) + offer : null;
    }
 
    //получаем строку из заданного кол-ва пробелов
    private static String getCountSpaces(int count) {
        return count > 0 ? String.format(String.format("%s%d%s", "%", count, "s"), "") : "";
    }
 
    //получаем кол-во пробелов в предложении, кроме пробелов в начале или конце текста.
    private static int getCountSpaces(String offer) {
        int result = 0;
        offer = offer != null ? offer.trim() : "";
        for (int i = 0; i < offer.length(); i++) {
                if (offer.charAt(i) == ' ') {
                    result++;
                }
        }
        return result;
    }
 
    //выравниваем текст под нужное кол-во символов, добавляя между словами пробелы
    //случайным образом.
    private static String[] getAlignmentText(String[] array, int lengthLine) {
        if (array != null && array.length > 0) {
            StringBuilder sb = new StringBuilder();
            Random rand = new Random();
            for (int i = 0; i < array.length - 1; i++) {
                String offer = array[i];
                sb.delete(0, sb.length());
                int countSpaces = getCountSpaces(offer);
                int addSpaces = lengthLine - offer.length();
                if (countSpaces != 0 && addSpaces > 0) {
                    int spaces = addSpaces / countSpaces + 1;
                    for (int index = offer.length() - 1; index >= 0; index--) {
                        sb.append(offer.charAt(index));
                        if (offer.charAt(index) == ' ') {
                            if (addSpaces > 0) {
                                if (countSpaces == 1) {
                                    sb.append(getCountSpaces(addSpaces));
                                    addSpaces = 0;
                                } else if (countSpaces > 1){
                                    if (addSpaces > spaces) {
                                        int r = rand.nextInt(spaces) + 1;
                                        sb.append(getCountSpaces(r));
                                        addSpaces -= r;
                                    } else {
                                      sb.append(getCountSpaces(addSpaces));
                                      addSpaces = 0;
                                    }
                                }
                            }
                            countSpaces--;
                        }
                    }
                    array[i] = sb.reverse().toString();
                }
            }
        }
        return array;
    }
}
1
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
12.12.2017, 05:42
Лучший ответ Сообщение было отмечено nordmarin как решение

Решение

Разделить заданный текст на строки длиной меньше 50 символов. Слова разделены пробелами. Переносить часть слова не разрешается ->
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public static void main(String[] args)  {
        String line = "xoraxax, Нужно сделать так: Осуществить форматирование выбранного пользователем текстового файла, " +
                "так чтобы все абзацы имели отступ ровно 3 пробела, а длина каждой строки была ровно 80 символов и не " +
                "имела начальными и конечными символами пробел. \n" +
                "\n" +
                "Либо можно вот так: Разделить заданный текст на строки длиной меньше 50 символов. " +
                "Слова разделены пробелами. Переносить часть слова не разрешается. \n" +
                "\n" +
                "Очень нужно.";
 
        System.out.println(
                line.replaceAll("\\s*([\\w&[^\n]]{0,49}(\\p{L}\\b|\\p{Punct}))", "$1\n")
        );
    }
Bash
1
2
3
4
5
6
7
8
9
10
xoraxax, Нужно сделать так: Осуществить
форматирование выбранного пользователем текстового
файла, так чтобы все абзацы имели отступ ровно
3 пробела, а длина каждой строки была ровно
80 символов и не имела начальными и конечными
символами пробел.
Либо можно вот так: Разделить заданный текст на
строки длиной меньше 50 символов. Слова разделены
пробелами. Переносить часть слова не разрешается.
Очень нужно.
1
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 00:13  [ТС]
Цитата Сообщение от vcrop Посмотреть сообщение
line.replaceAll("\\s*([\\w&[^\n]]{0,49}(\\p{L}\\b|\\p{Punct}))", "$1\n")
Огромное спасибо. Все работает. Не могли бы объяснить этот паттерн подробнее?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 00:35
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"\\s*([\\w&[^\n]]{0,49}(\\p{L}\\b|\\p{Punct}))", "$1\n"
 
\\s - пробел
\\w - любая цифра, буква или _
& - и
^ - кроме
\n - новая строка
() - сохранить группу
{0.49} - кол-во символов пройти от 0 до 49
\\p{L} - любой символ
\\b - конец слова
| - или
\\p{Punct} - символ пунктуация (.,-!?)
$1 - сохранённая группа
Добавлено через 4 минуты
словесно выглядит так:

пропускаем пробелы в начале предложения, если есть, затем начинаем сохранять в группу символы:
(сохраняем любую цифру или букву или _ кроме символа новой строки и не больше 49 символов)
((сохраняем любой символ до конца слова или знака препинания))
$1\n - выводим то, что сохранили в группу и начинаем новую строку

Добавлено через 8 минут
Даже не так сказал:

пропускаем пробелы вначале строки и после них начинаем сохранять символы в группу по регулярке:
любая цифра или буква или _ кроме символа новой строки в кол-ве от 0 до 49
открываем новую группу сохранения, в которой сохраняем любой символ до конца слова или знака пунктуации и если кол-во символов прошлой группы меньше 49, то эту группу (слово) возвращаем в ту группу $1
в итоге вернули первую группу $1 + создали новую строку
$1 - строка, не больше 49 и заканчивающаяся словом или знаком припинания

и по кругу, пока не дойдём до конца текста
1
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 00:52  [ТС]
Цитата Сообщение от ArtemFM Посмотреть сообщение
$1\n - выводим то, что сохранили в группу и начинаем новую строку
Может вы знаете, как это вывести на форму? А то у меня выводит только первую строку.

Java
1
2
3
4
 PrintStream ps = new PrintStream(socket.getOutputStream());
                    ps.println("message");
                    ps.println(temp.replaceAll("\\s*([\\w&[^\n]]{0,79}(\\p{L}\\b|\\p{Punct}))", "$1\n"));
                    ps.flush();
Миниатюры
Форматирование текстового файла (перевод с Си)  
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 00:55
кода побольше скинь и сам текст из файла
1
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 00:59  [ТС]
Вот мой код. В классе SendMessage на Server осуществляется передача в Client. Очень благодарен, что помогаете.
Вложения
Тип файла: rar Корректный вывод.rar (90.3 Кб, 6 просмотров)
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 01:16
Java
1
2
3
4
5
6
7
8
9
10
temp = temp.replaceAll("\\s*([\\w&[^\n]]{0,79}(\\p{L}\\b|\\p{Punct}))", "$1\n");
try (PrintStream ps = new PrintStream(socket.getOutputStream())) {
      ps.println("message");
      for (String line : temp.split("\n")) {
            ps.println(line);
      }
      ps.flush();
} catch (FileNotFoundException e) {
      e.printStackTrace();
}
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 01:36  [ТС]
Не работает. Выводит первую строку и ловит catch

java.lang.NullPointerException
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 01:46
а что за текст ты паттерном прогоняешь? Пример

Добавлено через 28 секунд
У меня работает просто всё... На примере, который прислал человек, который писал регулярку тебе

Добавлено через 4 минуты
Что у тебя за ОС?

Добавлено через 51 секунду
Вот код-пример, который сохраняет текст в файл C:\result.txt
Java
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
import java.io.File;
import java.io.PrintStream;
 
public class Task015 {
    public static void main(String[] args) {
        String text = "xoraxax, Нужно сделать так: Осуществить форматирование выбранного пользователем текстового файла, " +
                "так чтобы все абзацы имели отступ ровно 3 пробела, а длина каждой строки была ровно 80 символов и не " +
                "имела начальными и конечными символами пробел. \n" +
                "\n" +
                "Либо можно вот так: Разделить заданный текст на строки длиной меньше 50 символов. " +
                "Слова разделены пробелами. Переносить часть слова не разрешается.\n" +
                "\n" +
                "Очень нужно.";
 
        text = text.replaceAll("\\s*([\\w&[^\n]]{0,49}(\\p{L}\\b|\\p{Punct}))", "$1\n");
 
        try (PrintStream ps = new PrintStream(new File("C:\\result.txt"))) {
            ps.println("Message");
            for (String line : text.split("\n")) {
                ps.println(line);
            }
            ps.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Добавлено через 1 минуту
у тебя может там вообще новая строка - это не \n
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 01:46  [ТС]
Цитата Сообщение от ArtemFM Посмотреть сообщение
а что за текст ты паттерном прогоняешь? Пример
{табуляция}Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 01:52
попробуй так:

Java
1
2
3
4
5
6
7
8
9
10
text = text.replaceAll("\\s*([\\w&[^\\d]]{0,79}(\\p{L}\\b|\\p{Punct}))", "$1" + System.lineSeparator());
        try (PrintStream ps = new PrintStream(socket.getOutputStream())) {
            ps.println("Message");
            for (String line : text.split(System.lineSeparator())) {
                ps.println(line);
            }
            ps.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
Добавлено через 2 минуты
у меня работает всё:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
        String text = "   Lorem Ipsum is simply dummy text of the printing and typesetting industry." +
                " Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, " +
                "when an unknown printer took a galley of type and scrambled it to make a type specimen book. " +
                "It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially " +
                "unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem " +
                "Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker " +
                "including versions of Lorem Ipsum.";
 
        text = text.replaceAll("\\s*([\\w&[^\\d]]{0,79}(\\p{L}\\b|\\p{Punct}))", "$1" + System.lineSeparator());
        try (PrintStream ps = new PrintStream(new File("C:\\res.txt"))) {
            ps.println("Message");
            for (String line : text.split(System.lineSeparator())) {
                ps.println(line);
            }
            ps.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 01:55  [ТС]
Аналогичная ситуация.
Я вывожу в jTextArea1, может это как-то имеет дело?

Может сможете прислать ваш проект?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.12.2017, 02:01
каким образом ты выводишь?

Добавлено через 1 минуту
там же просто выводить:
JTextArea memo = new JTextArea();
memo.setText("Message" + System.lineSeparator() + text);

Добавлено через 2 минуты
А что у тебя вообще за задача? При чём тут сервер и клиент?
Сама суть задачи? Расскажи
0
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 28
13.12.2017, 02:07  [ТС]
Цитата Сообщение от ArtemFM Посмотреть сообщение
Сама суть задачи? Расскажи
Создать клиент-серверное приложение, где клиент отправляет текст на сервер, а сервер заменяет все абзацы на 3 знака пробел и выводит в строке максимум 80 символов, при этом удаляя начальный и конечный пробелы в строке. Потом отправляет отредактированный текст клиенту.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2017, 02:07
Помогаю со студенческими работами здесь

Перевод текстового файла в XML формат
Здравствуйте, мне необходимо написать программу, которая получая на входе текстовый файл будет выдавать соответствующий ему файл xml. ...

Перевод содержимого текстового файла в верхний регистр
Собственно вопрос в шапке. Как перевести всё содержимое текстового файла в верхний регистр? Кодировка UTF-8 без BOM (хотя это особо и не...

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

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

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru