Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 3

Экспортировать данные из DataGridView в БД dbf

03.06.2016, 07:52. Показов 6775. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
КАК ЗАПИСАТЬ (СДЕЛАТЬ EXPORT) из грида в dbf? FoxPro
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2016, 07:52
Ответы с готовыми решениями:

Как из Excel экспортировать данные в dbf
Можно в самом Excel сделать форму на ней кнопку "Экспорт"?

Помогите экспортировать данные объекты DataGrid в формат dbf
Получаю данные с SQL Servera, сохранил в DataSet, заполнмл объект DataGrid просмотрел содержимое на экране, а теперь необходимо...

Экспортировать данные из DataGridView в Excel
Всем доброго времени суток! В статье http://www.sources.ru/vb.net/Export-DataGridView-to-Excel.html имеется пример о том, как можно...

7
C# = ♫♪♫♪♪♫
 Аватар для Sanek32
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
03.06.2016, 08:41
Через ODBC. Подключаем драйвер и указываем путь к DBF
C#
1
2
3
4
5
6
7
8
9
/// <summary>
        /// Подключение к файлу
        /// </summary>
        /// <param name="t">Путь к файлу (Директория расположения файла)</param>
        internal void Odbccon(string t)
        {
            Conn = new OdbcConnection();
            Conn.ConnectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + t + "; encoding=ANSI";
        }
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
/// <summary>
        /// Подключение к источнику данных
        /// </summary>
        private OdbcConnection Conn = null;
 
        /// <summary>
        /// Выполнение команды SQL
        /// </summary>
        /// <param name="Command">SQL код</param>
        /// <returns></returns>
        public DataTable Execute(string Command)
        {
            DataTable dt = null;
            if (Conn != null)
            {
                try
                {
                    Conn.Open();
                    dt = new DataTable();
                    OdbcCommand oCmd = Conn.CreateCommand();
                    oCmd.CommandText = Command;
                    dt.Load(oCmd.ExecuteReader());
                    Conn.Close();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
 
            return dt;
        }
 
        /// <summary>
        /// Загрузка всех колонок
        /// </summary>
        /// <param name="DB_path">Путь</param>
        /// <returns></returns>
        public DataTable GetAll(string DB_path)
        {
            return Execute("SELECT * FROM " + DB_path);
        }
 
        /// <summary>
        /// Получает количество строк в базе
        /// </summary>
        /// <returns></returns>
        private long limitrows(string DB_path)
        {
            try
            {
                long lim = 0;
                DataTable tempTable = Execute("SELECT count(*) FROM " + DB_path);
                lim = Convert.ToInt64(tempTable.Rows[0]["count"].ToString());
                tempTable.Dispose();
                return lim;
            }
            catch (Exception)
            {
                throw;
            }
 
        }
0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 3
03.06.2016, 09:07  [ТС]
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
private void button6_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Dbf files (*.dbf)|*.dbf";
            saveFileDialog.FileName = "MVAL_" + this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "_" + this.dateTimePicker2.Value.ToString("yyyy-MM-dd") + ".dbf";
            int num1 = (int)saveFileDialog.ShowDialog();//saveFileDialog. true;
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + saveFileDialog.FileName;
 
            conn.Open();
            OleDbCommand comm = conn.CreateCommand();
            comm.CommandText = "CREATE TABLE mytable(SerialNo int(4),CCode varchar(9),UID2 varchar(20),UID1 varchar(20),Name varchar(20),GroupName varchar(20),date(8),DevTypeId int(4),DeviceId int(4),import Decimal(11),total Decimal(11))";
            comm.ExecuteNonQuery();
            for (int index = 0; index < this.dataGridView1.RowCount; ++index)
            {
                int counter = Convert.ToInt32(this.dataGridView1.Rows[index].Cells[1].Value);
                string ccodee = Convert.ToString(this.dataGridView1.Rows[index].Cells[2].Value);
                string uid2 = Convert.ToString(this.dataGridView1.Rows[index].Cells[3].Value);
                string uid1 = Convert.ToString(this.dataGridView1.Rows[index].Cells[4].Value);
                string name = Convert.ToString(this.dataGridView1.Rows[index].Cells[5].Value);
                string groupn = Convert.ToString(this.dataGridView1.Rows[index].Cells[6].Value);
                DateTime datee = Convert.ToDateTime(this.dataGridView1.Rows[index].Cells[7].Value);
                int devtype = Convert.ToInt32(this.dataGridView1.Rows[index].Cells[8].Value);
                int devid = Convert.ToInt32(this.dataGridView1.Rows[index].Cells[9].Value);
                decimal imp = Convert.ToDecimal(this.dataGridView1.Rows[index].Cells[10].Value);
                decimal tot = Convert.ToDecimal(this.dataGridView1.Rows[index].Cells[11].Value);
                comm.CommandText = "insert into mytable(SerialNo, CCode, UID2, UID1, Name,  GroupName, Time, DevTypeId, DeviceId,import,total) values    ('" + counter + "'," + ccodee + ",'" + uid2 + "','" + uid1 + "','" + name + "','" + groupn + "','" + datee + "','" + devtype + "','" + devid + "','" + imp + "','" + tot + "')";
                comm.ExecuteNonQuery();
            }
        }
Выдает ошибку
0
C# = ♫♪♫♪♪♫
 Аватар для Sanek32
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
03.06.2016, 09:48
Data Source должна получать только путь без указания имени C:\Test\
C#
1
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + saveFileDialog.FileName;
Добавлено через 7 минут
Да и мне кажется CREATE TABLE работать не будет. Сам фаил надо создавать бинарно

Добавлено через 7 минут
Откопал вот это
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// Бинарное создание DBF
private void DataTableSaveToDBF(DataTable DT, string Folder)
{
// Создаю таблицу
System.IO.File.Delete(Folder+""+DT.TableName+".DBF");
System.IO.FileStream FS = new System.IO.FileStream(Folder+""+DT.TableName+".DBF", System.IO.FileMode.Create);
// Формат dBASE III 2.0
byte[] buffer = new byte[]{0x03, 0x63, 0x04, 0x04}; // Заголовок 4 байта
FS.Write(buffer, 0, buffer.Length);
buffer = new byte[]{
(byte)(((DT.Rows.Count % 0x1000000) % 0x10000) % 0x100),
(byte)(((DT.Rows.Count % 0x1000000) % 0x10000) / 0x100),
(byte)(( DT.Rows.Count % 0x1000000) / 0x10000),
(byte)( DT.Rows.Count / 0x1000000)
}; // Word32 -> кол-во строк 5-8 байты
FS.Write(buffer, 0, buffer.Length);
int i = (DT.Columns.Count+1)*32+1; // Изврат
buffer = new byte[]{
(byte)( i % 0x100),
(byte)( i / 0x100)
}; // Word16 -> кол-во колонок с извратом 9-10 байты
FS.Write(buffer, 0, buffer.Length);
string[] FieldName = new string[DT.Columns.Count]; // Массив названий полей
string[] FieldType = new string[DT.Columns.Count]; // Массив типов полей
byte[] FieldSize = new byte[DT.Columns.Count]; // Массив размеров полей
byte[] FieldDigs = new byte[DT.Columns.Count]; // Массив размеров дробной части
int s = 1; // Считаю длину заголовка
foreach (DataColumn C in DT.Columns)
{
string l = C.ColumnName.ToUpper(); // Имя колонки
while (l.Length < 10) {l = l + (char)0;} // Подгоняю по размеру (10 байт)
FieldName[C.Ordinal] = l.Substring(0, 10) + (char)0; // Результат
FieldType[C.Ordinal] = "C"; 
FieldSize[C.Ordinal] = 50;
FieldDigs[C.Ordinal] = 0;
switch (C.DataType.ToString())
{
case "System.String" : 
{
DataRow[] DR = DT.Select("", C.ColumnName+" DESC");
if (DR.Length > 0) 
{
if (DR[0][C].ToString().Trim().Length > 255)
FieldSize[C.Ordinal] = 255;
else
FieldSize[C.Ordinal] = (byte)DR[0][C].ToString().Trim().Length;
}
break;
}
case "System.Boolean" : {FieldType[C.Ordinal] = "L"; FieldSize[C.Ordinal] = 1; break;}
case "System.Byte"   : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 1; break;}
case "System.DateTime" : {FieldType[C.Ordinal] = "D"; FieldSize[C.Ordinal] = 8; break;}
case "System.Decimal" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 38; FieldDigs[C.Ordinal] = 5; break;}
case "System.Double" : {FieldType[C.Ordinal] = "F"; FieldSize[C.Ordinal] = 38; FieldDigs[C.Ordinal] = 5; break;}
case "System.Int16" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 6; break;}
case "System.Int32" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 11; break;}
case "System.Int64" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 21; break;}
case "System.SByte" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 6; break;}
case "System.Single" : {FieldType[C.Ordinal] = "F"; FieldSize[C.Ordinal] = 38; FieldDigs[C.Ordinal] = 5; break;}
case "System.UInt16" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 6; break;}
case "System.UInt32" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 11; break;}
case "System.UInt64" : {FieldType[C.Ordinal] = "N"; FieldSize[C.Ordinal] = 21; break;}
}
s = s + FieldSize[C.Ordinal];
}
buffer = new byte[]{
(byte)(s % 0x100), 
(byte)(s / 0x100)
}; // Пишу длину заголовка 11-12 байты
FS.Write(buffer, 0, buffer.Length);
for (int j = 0; j < 17; j++) {FS.WriteByte(0x00);} // Пишу всякий хлам — 17 байт
buffer = new byte[]{0x26, 0x00, 0x00}; // И ещё 3 байта
FS.Write(buffer, 0, buffer.Length); // Итого: 32 байта — базовый заголовок DBF
// Заполняю заголовок
foreach (DataColumn C in DT.Columns)
{
buffer = System.Text.Encoding.Default.GetBytes(FieldName[C.Ordinal]); // Название поля
FS.Write(buffer, 0, buffer.Length);
buffer = new byte[]{
System.Text.Encoding.ASCII.GetBytes(FieldType[C.Ordinal])[0],
0x00, 
0x00,
0x00, 
0x00
}; // Размер
FS.Write(buffer, 0, buffer.Length);
buffer = new byte[]{
FieldSize[C.Ordinal],
FieldDigs[C.Ordinal]
}; // Размерность
FS.Write(buffer, 0, buffer.Length);
buffer = new byte[]{0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}; // 14 нулей
FS.Write(buffer, 0, buffer.Length);
}
FS.WriteByte(0x0D); // Конец описания таблицы
System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
string Spaces = ""; 
while (Spaces.Length < 255) Spaces = Spaces + " ";
foreach (DataRow R in DT.Rows)
{
FS.WriteByte(0x20); // Пишу данные
foreach (DataColumn C in DT.Columns)
{
string l = R[C].ToString();
if (l != "") // Проверка на NULL
{
switch (FieldType[C.Ordinal])
{
case "L" : 
{
l = bool.Parse(l).ToString();
break;
}
case "N" :
{
l = decimal.Parse(l).ToString(nfi);
break; 
}
case "F" :
{
l = float.Parse(l).ToString(nfi);
break; 
}
case "D" :
{
l = DateTime.Parse(l).ToString("yyyyMMdd");
break;
}
default : l = l.Trim() + Spaces; break;
}
}
else 
{
if (FieldType[C.Ordinal] == "C"
|| FieldType[C.Ordinal] == "D")
l = Spaces;
}
while (l.Length < FieldSize[C.Ordinal]){l = l + (char)0x00;} 
l = l.Substring(0, FieldSize[C.Ordinal]); // Корректирую размер
buffer = System.Text.Encoding.GetEncoding(866).GetBytes(l); // Записываю в кодировке (MS-DOS Russian)
FS.Write(buffer, 0, buffer.Length);
}
}
FS.WriteByte(0x1A); // Конец данных
FS.Close();
}
0
5 / 1 / 1
Регистрация: 15.05.2016
Сообщений: 10
04.06.2016, 11:06
Есть такая библиотека - DotNetDBF, https://www.nuget.org/packages/dotnetdbf/
Кардинально упрощает работу с DBF.
1
 Аватар для Дианка89
0 / 0 / 1
Регистрация: 04.11.2014
Сообщений: 13
19.09.2016, 12:29
Цитата Сообщение от MasterKolka Посмотреть сообщение
Есть такая библиотека - DotNetDBF, https://www.nuget.org/packages/dotnetdbf/
Кардинально упрощает работу с DBF.
Извините за тупой вопрос,но как им пользоваться? \ подключила в референс, дефинировала.и приехали в инете нигде не нашла примеров, а т.н. "подсказки " не понимаю..
цель- прочитать в датагридвью,внести изменения, сохранить из таблицы в дбф обратно...
0
5 / 1 / 1
Регистрация: 15.05.2016
Сообщений: 10
19.09.2016, 12:48
Пример вычитывания из файла в DataTable (myTable).
Тут конечно сделан небольшой костыль, если в dbf поля могут быть в разном порядке. Если формат точно определён, то это можно убрать.
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
private void ImportDBF_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                AddExtension = true,
                DefaultExt = ".dbf",
                Filter = "DBF(*.dbf)|*.dbf"
            };
            bool? result = dialog.ShowDialog();
            if (result == true)
            {
                using (Stream fs = dialog.OpenFile())
                {
                    DBFReader aDbf = new DBFReader(fs)
                    {
                        CharEncoding = Encoding.GetEncoding(1251)
                    };
                    int SKN = -1, TNVED_CODE = -1, NAME = -1, CERTFLAG = -1;
                    for (int i = 0; i < aDbf.Fields.Length; i++)
                    {
                        switch (aDbf.Fields[i].Name)
                        {
                            case "SKN":
                                SKN = i;
                                break;
                            case "TNVED_CODE":
                                TNVED_CODE = i;
                                break;
                            case "NAME":
                                NAME = i;
                                break;
                            case "CERTFLAG":
                                CERTFLAG = i;
                                break;                            
                        }
                    }
 
                    for (int i = 0; i < aDbf.RecordCount; i++)
                    {
                        object[] data = aDbf.NextRecord();
 
                        var tnvedcode = data[TNVED_CODE] as string;
                        var skn = data[SKN] as string;
                        var name = data[NAME] as string;
                        var certflag = data[CERTFLAG] is DBNull ? 0 : Convert.ToInt32(data[CERTFLAG]);
 
                        if (myTable.Select(String.Format("TNVED_CODE='{0}' AND SKN='{1}'", tnvedcode, skn)).Length == 0)
                        {
                            var row = myTable.NewRow();
                            row["ARTICULUS"] = Database.GetNextArticulusFromDataTable(myTable, tnvedcode);
                            row["TNVED_CODE"] = tnvedcode;
                            row["SKN"] = skn;
                            row["NAME"] = name;
                            row["CERT_FLAG"] = certflag;                            
 
                            myTable.Rows.Add(row);
                        }
                    }
                }
                SKNList.ItemsSource = myTable.DefaultView;
            }
        }
Пример сохранения в файл из DataTable (myTable)
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
private void Export_TnvedSknArt_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog()
            {
                AddExtension = true,
                DefaultExt = ".dbf",
                Filter = "DBF(*.dbf)|*.dbf"
            };
            bool? result = dialog.ShowDialog();
            if (result == true)
            {
                using (Stream fs = dialog.OpenFile())
                {
                    var Data = myTable.Select("ARTICULUS IS NOT NULL", "TNVED_CODE ASC")
                                      .Select(itm => new Tuple<string, string, string>(itm["TNVED_CODE"] as string, itm["SKN"] as string, itm["ARTICULUS"] as string))
                                      .Distinct();
 
                    using (var BaseWriter = new DotNetDBF.DBFWriter(fs)
                    {
                        CharEncoding = Encoding.ASCII,
                        Fields = new DBFField[] { new DBFField("TNVED_CODE", NativeDbType.Char, 10), new DBFField("SKN", NativeDbType.Char, 10), new DBFField("ARTICULUS", NativeDbType.Char, 10) }
                    })
                    {
                        foreach (var item in Data)
                        {
                            BaseWriter.WriteRecord(item.Item1, item.Item2, item.Item3);
                        }
                    }
                }
            }
        }

P.S. Исправленная библиотека (исправляет работу с числами с плавающей точкой) - https://1drv.ms/u/s!AqXf1PuM3By4g51Qv26dr_wkcU1oHQ
На GitHub этой библиотеки даже request сделали, но автор, похоже, больше не поддерживает эту библиотеку.
0
 Аватар для Дианка89
0 / 0 / 1
Регистрация: 04.11.2014
Сообщений: 13
21.09.2016, 12:55
Цитата Сообщение от MasterKolka Посмотреть сообщение
Тут конечно сделан небольшой костыль
Добрый день , как видимо было понятно я об Ваши костыли поломалась )) я забыла предупредить ,что я чайник...
пошла каким то другим путем,и запнулась...(просто метод дотнетдбф,мне показался каким то сложным и не обычным)

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

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
 private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\test";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            using (OleDbCommand command = connection.CreateCommand())
            {
                connection.Open();
                for (int i = 0; i < dataGrid.Rows.Count; i++)
                {
                   OleDbParameter script = new OleDbParameter("script", @"INSERT INTO mzag2 (nakl ,data  ,tiptov ,kol ,sum0  ,pvn ,sum2  )+ VALUES("
                                + dataGrid.Rows[i].Cells["Nakl"].Value+ ", "
                                + dataGrid.Rows[i].Cells["Data"].Value + ", "
                                + dataGrid.Rows[i].Cells["tiptov"].Value.ToString() + ", "
                                + dataGrid.Rows[i].Cells["kol"].Value.ToString() + ", "
                                + dataGrid.Rows[i].Cells["sum0"].Value + ", "
                                 + dataGrid.Rows[i].Cells["pvn"].Value + ", "
                                + dataGrid.Rows[i].Cells["sum2"].Value + ");");
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "ExecScript";
                command.Parameters.Add(script);
                command.ExecuteNonQuery();
                connection.Close();
                connection.Dispose();
                }
            }
 
            MessageBox.Show("Table Updated", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }
тип данных мне известен,и меняться не будет )
там еще немножно была проблема с кодировками,я ее решила
C#
1
2
3
4
5
foreach (DataRow dr in dataSet.Tables[0].Rows)
                {
                    dr[2] = Encoding.UTF8.GetString((Encoding.Convert(Encoding.GetEncoding("Windows-1257"),
                                          Encoding.UTF8, Encoding.Default.GetBytes(dr["TIPTOV"].ToString()))));
                }
а типы данных
char
date
char (хотя тут должна быть кодировка)
float -4
Миниатюры
Экспортировать данные из DataGridView в БД  dbf  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2016, 12:55
Помогаю со студенческими работами здесь

Какими средствами Oracle экспортировать данные из таблицы Oracle в dbf-файл?
Здравствуйте! Не подскажите чайнику какими средствами Oracle экспортировать данные из таблицы Oracle в dbf-файл? Спасибо.

Экспортировать DBF таблицу в SQL server
Добрый день.Есть дбфка.Как ее экспортировать в sql server при помощи SQL server management studio???

Работа с dbf в C# - вывести содержимое dbf в dataGridView
Необходимо вывести содержимое dbf в dataGridView, подскажите как сделать.... Заранее спасибо....

Экспортировать весь список из DataGridView в Excel
Всем привет! Необходимо экспортировать весь список из datagridview в эксель (.xlsx). Через SaveFileDialog произвести его сохранение и...

Экспортировать данные в Word
Добрый день, не могу разобраться с правильным импортом в word. Существует таблица со списком продукции, каждый из продуктов привязан к...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru