Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
RAD XE3+

Где лучше хранить большую текстовую базу?

09.09.2023, 10:35. Показов 6344. Ответов 86

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Столкнулся с проблемой.
У меня есть база в Memo1 -занимает 100 000 строк.

Ищет в случае обращения поиском по данному мемо если всё хранить в нёпочемуто долго, а если рядом созраняю с прогой текстовый файл и ищу по нему то тоже долго, есть ли какойто быстрый вариант для работы с бальшими базами данных именно в Delphi?

Спасибо за ответ(ы).

С уважением, Денис.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2023, 10:35
Ответы с готовыми решениями:

Где лучше хранить данные
Проблема вот в чем. Один знакомый попросил написать для него прогу для составление и хранение данных о своей семье в виде генеологического...

Где лучше хранить 100-500 записей
Доброго времени суток! Столкнулся с таким вопросом: в программе храню настройки в ini - файле. Теперь необходимо сделать возможность...

Где лучше всего хранить базу данных больших размеров ?
Всем привет! Подскажите пожалуйста где лучше всего хранить базу данных больших размеров порядка 50 - 70 GB. ? С помощью MySQL или MS SQL...

86
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
19.09.2023, 19:53
Студворк — интернет-сервис помощи студентам
В общем с этим файлом конечно беда, но после доработки напильником все же получилось. Прикрепляю допиленный файл и скрипт который его в SqLite импортирует. Импортирует кстати очень быстро.
TIR.rar
SQL
1
2
.open d:\\WORK\\tir.db3
CREATE TABLE City AS SELECT json_extract(VALUE, '$.id') AS id,json_extract(VALUE, '$.name') AS name,json_extract(VALUE, '$.countrySign') AS countrySign, json_extract(VALUE, '$.areaId') AS areaId, json_extract(VALUE, '$.lat') AS lat,json_extract(VALUE, '$.lon') AS lon,json_extract(VALUE, '$.postcode') AS postcode FROM json_each(readfile('d:\work\tir.txt'));
1
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
20.09.2023, 02:59  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
допиленный файл и скрипт который его в SqLite импортирует. Импортирует кстати очень быстро.
Супер! Очень удобный инструмент! Спасибо.


1. Итак база tir.db3 создана;

Остались 2 пункта:
2. Как добавить её в Delphi?
3. Какой командой произвести поиск строки, которая содержит например слово Москва и взять эту строку в текстовую переменную (дальше понятно)?

п.с.
у меня ощущение что это будет намного быстрее чем работа с 80 000 строками из мемо )
Господи хоть бы всё получилось!

С уважением, Денис.
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
20.09.2023, 07:46
Цитата Сообщение от Ltybcrf Посмотреть сообщение
Как добавить её в Delphi?
почитать документацию по FireDAC, там есть примеры.
Цитата Сообщение от Ltybcrf Посмотреть сообщение
Какой командой произвести поиск строки, которая содержит например слово Москва
Неправильная постановка вопроса! Правильнее было бы сказать: "Выбрать все записи, в которых значение поля NAME равно "Москва". Для этого надо выполнить SQL-запрос:
SQL
1
SELECT * FROM City WHERE Name="Москва"
ну, или в программе Дельфи использовать компонеyт FDQuery:
Delphi
1
2
FDQuery1.SQL.Text := 'SELECT * FROM City WHERE Name="Москва"';
FDQuery1.Open;
Цитата Сообщение от Ltybcrf Посмотреть сообщение
и взять эту строку в текстовую переменную (дальше понятно)
Нет, не понятно. Хотя бы по тому, что в контексте работы с БД нет такого понятия как "текстовая строка", вообще нет понятия "строка" - есть запись таблицы БД, и запись эта состоит из набора полей. И вот значение каждого из полей Вы, естественно, можете разнести по переменным:
Delphi
1
2
3
var a, b: double;
a := FDQuery1.FieldByName('lat').AsFloat;
b := FDQuery1.FieldByName('lon').AsFloat;
0
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
20.09.2023, 11:50
С БД невозможно работать не зная принципов организации БД. Ну конкретно в нашем случае реляционных БД. Т. е. ключи, индексы, отношения (хотя понять их формальные определения в той же Вики без бутылки невозможно), хотя бы базовые операторы SQL (про Transact SQL не говорю, для встраиваемых в ПО SQL-запросов его можно обойти средствами работы со строками самого ЯП, хотя SQL-пуристы скажут, что я нубас и ничего не понимаю), транзакции, механизмы обслуживания используемой СУБД.
0
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
22.09.2023, 15:16  [ТС]
С БД невозможно работать не зная принципов организации БД
Проштудировал теорию вдоль и поперек. В принципе мне понятно что нужно делать, но как только накидал компонентов которые оказались к нашей test.db3 относятся посредственно, NextGrid, StringGrid, попробовалчёто неработает как надо..

Так как воз и ныне там, обращаюсь к Вам друзья!

1. tir.db3 создана, надо ли заливать наш файл в программу или работать с ним отдельно-лежащим?
2. Какие компоненты добавить на форму?

По использованию запросов SQL разобрался.
Но чтобы делать запросы SQL я совсем запутался, надо же подтянуть рядом лежащий файл базы или добавить его в программу в таблицу чтбы уже к ней обращаться с запросами, и вот тут я завис если чесно...
Подскажите пожалуйста как базу именно *.db3 добавить в прогу?

С уважением, Денис.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
22.09.2023, 16:51
ничего не понял. все на видео которые я присылал вроде есть?

бд лежит в файле. при старте программы компонент FDConnection настраивается на файл БД и подключается к ней.
остальные компоненты подключаются к FDConnection
в том числе запросы FDQuery
если надо что-то запросить из базы, составляем запрос, при работе программы задаем в нем условия и открываем.
Датасет (в данном случае например FDQuery) закачивает выбранные данные из БД в программу.
Эти данные можно посмотреть например подключив к нему Datasource и далее DBGrid или любые другие DB-компоненты.
Или просто в программе бегать по датасету и брать данные из полей датасета.

Вот еще одно видео, на русском. С середины где-то Совцов подробненько кидает компоненты на форму и запускает запрос.
https://www.youtube.com/watch?v=Scljb5TtR4k
1
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
22.09.2023, 17:31
Вообще любая работа с БД начинается с загрузки в компонент соединения настроечных параметров для подключения. В случае FireDAC - это обычный TStrings с параметрами, что туда прописывается при настройке в редакторе можно посмотреть. Могут быть необязательные параметры, например, язык. Т. к. в зависимости от языковых настроек форматы даты\времени, десятичной точки в запросах могут быть разными. Я, например, всегда использую с MS SQL Server формат времени yyyy.MM.dd.

БД может быть файлом, может быть сервером с адресом, именем базы, возможно, методами аутентификации, логином, паролем. Под каждый тип базы это надо прописывать отдельно, посмотрев, как настроено в редакторе.

Компонент соединения при запуске программы должен быть отключен. В противном случае он после запуска полезет по настройкам, которые вы указали на свою отладочную базу. И не найдет ее, прога зависнет, пока не будет таймаута, или найдет, но это еще хуже, т. к. ошибку сразу не видно. При этом любые операции с визуальными компонентами, требующие подключения к БД, например, запрос списка полей, или проверка правильности запроса, автоматически включают соединение. Я для борьбы с этим просто сразу при создании дата-модуля проверяю на активность соединения, и если включено, то прога сразу завершается с сообщением "Закрой соединение".

После настройки соединения уже можно делать соединению Connected:=True и открывать необходимые датасеты, желательно, в правильном порядке. Хотя если у вас есть связь по lookup-полям, то lookup-датасет откроется автоматом.

Так же в FireDAC по умолчанию соединение возвращает только 50 записей, если это неудобно, т. к. TFDQuery.RecordCount показывает фуфло, то можно переключить FetchMode в fmAll.

Добавлено через 18 минут
Вообще принципы работы, что FireDAC, что ADO (категория компонентов dbGo), что IBExpress схожи. У вас есть компонент соединения к которому подключаются компоненты наборов данных, к этbм компонентfv подключается прокладка в виде компонента DataSource, и к ней подключаются визуальные компоненты, например DBGrid, или DBLookupComboBox, последний настраивается на 2 Datasource, если пишет данные и на один если нужно только показывать список. В этом плане можно почитать даже старые книги, вышедшие еще до FireDAC.

Если показывать не нужно, или показывать нестандартным способом, то делается проход по датасету методами First, Next и т. п. Правда еще есть закладки, метод Locate, фильтры на датасете, индексы датасета. В общем у датасета есть курсор, показывающий активную запись в нем. Ее можно редактировать, удалять, вставлять новую запись с переходом курсора на нее.
1
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
23.09.2023, 01:58  [ТС]
Благословенного вечера!

Сделал:
1. бд лежит в файле. при старте программы компонент FDConnection настраивается на файл БД и подключается к ней.
2. остальные компоненты подключаются к FDConnection в том числе запросы FDQuery

3. Несколько раз пересмотрел видео, подсмотрел код, проанализировал, многое стало понятно.



Запускаю ни в DBGrid, NextDBGrid, StringGrid нигде немогу отобразить бузу из списка.
Ладно думаю зачем мне визуально её видеть можно же просто взаимодействовать, ну а пытаясь взаимодействовать вобще завал.

Ругайте, обзывайте если Вам это приносит удовольствие, но помогите понять остальную последовательность:


1. Есть файл базы test.db3
2. Добавил путь к нему в FDConnection1
3. Все компоненты попереподключал междусобой (тут вопрос, в моём случае какие компоненты нужны чтобы лишние не бросать на форму?)
4. Правильными командами/запросами SQL вооружился

5. ... и дальше я зависаю, это нужно увидеть хотябы один раз или понять .
Подтолкните пожалуйста, что делать дальше? Напишите пожалуйста коротко, сделай 1,2,3 ..

С уважением, Денис.
0
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
23.09.2023, 08:37
Если у тебя в дизайнере подключилось без ошибок, то после того, как включишь FDQuery.Active с правильным запросом у тебя в привязанном к нему DBGrid'е должно отобразиться его содержимое. Стандартная первая проверка на то, что настройка на тестовую базу и связей м/у компонентами.

Могу пустой шаблон для FireDAC дать, на котором сам, обычно, начинаю работать. Правда, там линки на несколько моих юнитов.

FormReports просто удали из проекта и все обращения к нему, он пустышка.
Вложения
Тип файла: rar Каркас АРМ на FireDAC.rar (43.2 Кб, 3 просмотров)
Тип файла: rar Формы соединения.rar (14.8 Кб, 3 просмотров)
Тип файла: rar Units.rar (7.3 Кб, 3 просмотров)
0
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
23.09.2023, 08:40
В нем грид настроен на QMain, остальные 2 FDQuery пустые. Ну и еще там есть ключ для XOR шифровки пароля. Так се защита, конечно, на 10 минут, умеющему в отладчик, ну какая есть. Обычно, я его в новом проекте перебиваю, а потом просто заново ввожу в форме подключения пароль.
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.09.2023, 11:04
Для отладки приложения с SQLite в Delphi, вам надо изменить свойство подключения LockingMode на Normal

Если этого не сделать, то при запуске приложения из IDE, вы получите ошибку подключения к БД.
0
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
23.09.2023, 22:06  [ТС]
Запустил біло несколько ошибок какието поборол но єти две остались ... юнитов таких файлов, может пару файлов гдет у Вас остались или мне добавить чтото.. погуглил пишут что єто чтото от старой версии ФаерДака у меня видимо новая последняя версия плюс делфи 11.3...


С остальным работаю только с работы пришел а тут инфы новой столько. Сейчас попробую реализовать вот этот фрагмент рекеомендации:
Если у тебя в дизайнере подключилось без ошибок, то после того, как включишь FDQuery.Active с правильным запросом у тебя в привязанном к нему DBGrid'е должно отобразиться его содержимое.
С уважением, Денис.
Миниатюры
Где лучше хранить большую текстовую базу?  
0
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
23.09.2023, 22:10  [ТС]
А еще, какой минимум компонентов должен быть чтобы всё работало?
я уверен что вот столько ненужно ..
0
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
23.09.2023, 22:37
Версия не имеет особого значения. Можно просто конвертнуть на месте. FireDAC вообще появилась довольно поздно, в XE4, кажется.

Минимум компонентов: TFDConnection, TFDQuery, TFDGUIxWaitCursor, (эта штука просто бросается в проект, она нужна для предотвращения зависаний) TDataSource, если есть линки к визуальным компонентам.

TAvgClassifierForm - это моя стандартная форма для таблиц справочников, обеспечивающая минимальный интерфейс, редактирование в сетке, редактирование в форме, если таковая назначена, поиск в столбцах, переключение между таблицами, для FireDAC сортировка на датасете, если определены нужные индексы.

Avg мой личный префикс имен библиотек и компонентов, сокращение от Avenger, в честь юнита, лазерной зенитки из C&C Generals Zero Hour.
Вложения
Тип файла: rar AvgTableCollector.rar (34.6 Кб, 0 просмотров)
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.09.2023, 22:46
Цитата Сообщение от Ltybcrf Посмотреть сообщение
какой минимум компонентов должен быть чтобы всё работало
Вопрос несколько неправильно задан. Количество компонент определяется задачей и их необходимостью. Для начинающего, любой запрос к БД предполагает компонент FDQuery на форме. Другой подход, это создание компонента динамически, по мере необходимости. Даже коннект к БД можно реализовать без создания визуального компонента и такой подход может оказаться эффективнее. Все приходит в процессе вашего профессионального роста.
0
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
23.09.2023, 22:52  [ТС]
----------------------------------------
Создал проэкт.



Ребята, ну вот что не так смотрите:
1. Есть файл test.db3;
2. Подключил путь к файлу в FDConnection1;
3. Добавил компоненты: FDConnection1, FDQuery1, FDLocalSQL1, DataSet1, FDUpdateSQL1 (незнаю надо ли все добавлять или чтото ненужно или чегото нехватает);
4. Добавил на форму DBGrid и подключил к нему DataSet1;
5. Добавил кнопку и в неё прописал:
Delphi
1
2
3
4
5
procedure TForm1.btn3Click(Sender: TObject);
begin
  FDQuery1.SQL.Text := 'SELECT * FROM City WHERE Name="Москва"';
  FDQuery1.Open;
end;
Результат нажатия:

Попробовал поставить галочку активейт на FDConnection начал пароль требовать которого и нет у меня нигде:

************************
Я получил от Вас друзья большой пакет знаний, но наверное пока сам не увидешь как оно должно выглядеть на самом деле, не поймёшь всех тонкостей, я тогла вникну во все настройки, проанализирую. А сейчас у Нас как на поле чудес викторина, вот куча подсказок, угадай как оно должно быть на самом деле )


Ребята, извините ради Б*га, но может ли кто-нибудь создать образец, с минимальным колличеством компонентов для отображения приложеной ниже таблицы/базы городов (tir.db3) и кнопкой по нажатию на которую найдётся строка с например городом "Москва" с занесением этой строки в переменную типа string?


С уважением, Денис.
0
 Аватар для Beltar
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,658
23.09.2023, 23:01
А пароль вы должны задать в СУБД. И чтобы не спрашивало при каждом коннекте нужно отключить свойство LoginPrompt у коннекшена. Я работал только с MS SQL Server, Access, Excel и Interbase, у Access с Excel, по умолчанию, никаких ограничений нет, у MS SQL Server всегда есть системный пользователь sa, пароль к нему и возможные режимы подключения (он может через юзера винды аутентификацию делать) задаются обязательно еще при установке, у Interbase всегда по умолчанию есть админ SYSDBA с паролем masterkey. Какой администратор и какой у него пароль по умолчанию смотрите в справке по вашей СУБД.
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
24.09.2023, 06:47
Цитата Сообщение от Ltybcrf Посмотреть сообщение
приложеной ниже таблицы/базы городов (tir.db3)
А где база-то?
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
24.09.2023, 12:45
1. Добавьте на форму компонент FDConnection1 и для него установите свойства:
LoginPrompt := False;
Params.DriverID := SQLite;
Params.Database := 'D:\Work\tir.db3';
Params.LockingMode := lmNormal;
2. Добавьте на форму компонент FDQuery1 и для него установите свойства:
SQL := 'select * from City where name=:name';
Params.Name := 'Москва';
3. Добавьте на форму компонент DataSource1 и для него установите свойство:
DataSet := FDQuery1;
4. Добавьте на форму компонент DBGrid1 и для него установите свойства:
DataSource := DataSource1;
5. Установите свойство FDQuery1.Active := True;
Все.

Добавлено через 1 час 27 минут
И вот еще какой нюанс работы с SQLite. SQLite не поддерживает некоторые функции работы с русским языком, а потому эту проблему приходится решать добавлением своей функции, для этого надо:
6. Добавьте на форму компонент FDPhysSQLiteDriverLink1
7. Добавьте на форму компонент FDSQLiteFunction1 и для него установите свойства:
ArgumentsCount := 1;
DriverLink := FDPhysSQLiteDriverLink1;
FunctionName := LoCase;
Создать обработчик события OnCalculate и там написать такой код:
Delphi
1
2
3
4
5
procedure TForm1.FDSQLiteFunction1Calculate(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs;
  AOutput: TSQLiteOutput; var AUserData: TObject);
begin
  AOutput.AsString := AnsiLowerCase(AInputs[0].AsString);
end;
и установить свойство FDSQLiteFunction1.Active := True;
После этого можно в тексте SQL запроса использовать функцию LoCase:
SQL
1
SELECT * FROM City WHERE LoCase(name) LIKE :name
но заработает корректно это все только после запуска приложения, в IDE результата вы не увидите.
1
1 / 1 / 0
Регистрация: 29.06.2015
Сообщений: 134
24.09.2023, 20:56  [ТС]
Благословенного времени суток!

Уууухххх .... спасибо Ребята от всей Души!!!!
Господин Пытливый Вы очень мудрый, хладнокровный и благородный Человек! Спасибо.

Что Мы имеем:
1. Создал форму.
2. Добавил все перечисленные выше компоненты (подключил их и прописал везде всё правильно, будем считать так).
3. Добавил DBGrid и подключив его появились колонки данных из файла tir.db3, у каждой колонки появилось название.
4. Добавил дополнительную часть FDPhysSQLiteDriverLink1 и т.д. считаем что всё идеально .....


Однако, задача у нас стоит следующая. Как Мы помним нам надо получить например из 55 строки данные .. но перед этим найти их. Тепер новые вопросы:
1. Надо ли отображать всю базу городов в таблице DBGrid или искать не добавляя в DBGrid думаю что быстрее будет не добавляя
2. Как по нажатию на кнопку найти строку где будет город Москва, любую первую попавшуюся и поместить данные из этой строки в пеерменную x (x := id + name + lot+ ...)?
Покачто я попытался отобразить в таблице всю базу скорее всего неправильно и у меня появилась разумеется ошибка ..

**************************

Осталось понять как должэна выглядеть команда поиска строки с ключевым словом и помещение искомого в переменную или ряд пеерменных .. и тогда я проведу эксперимент добавив в основную программу Наше творение и появится понимание того насколько быстрее работать с БД SQL в чём я уже не сомневаюсь, но осталась вишенка на торте это команда поиска искомой строки и добавление в переменную/ые.
****
С меня в конце отчет по скорости, исходник творения и полный отчёт для будущих поколений.
BAZA_DB_TIR.rar
Исходник покачто имеющегося творения. Нужно только указать верный путь к tir.db3 который я поместил в корень архива.
****

С уважением, Денис.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2023, 20:56

Как и где хранить текстовую информацию для программы тестирования?
Создаю проект по тестированию. Как и где можно хранить информацию по вопросам и ответам, т.е. откуда брать вопросы? И как их извлекать в...

Как лучше хранить большую корзину (больше 140-170 товаров)?
Сейчас храню корзину в куках (id-товара и количество). Но при количестве товаров больше 140-170 они начинают пропадать из корзины (из-за...

Как лучше сделать большую базу данных?
Уважаемые знатоки, подскажите, пожалуйста, как лучше сделать большую базу данных. Уже несколько дней сижу и перечитываю все возможные...

Где хранить базу данных?
Нужно разработать программу которая работает по локальной сети. С ее помощью можно отправлять и получать сообщения. Я всё сделал, но на ...

Где лучше хранить информацию
Здравствуйте уважаемые форумчане. У меня есть числовой набор данных. При нажатии на submit какое то из этих чисел будет обновляться....


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru