Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для Вадим Тукаев
310 / 291 / 116
Регистрация: 23.01.2018
Сообщений: 933

Программа для чтения csv

17.02.2020, 10:49. Показов 2184. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно прочитать csv-файл, записать в массив и потом делать с ним всякие манипуляции и сортировки (ну это как раз самое простое). У меня почему-то у меня даже файл не читается. Не пойму, в чём дело, вроде всё по докам делал. Я в паскале не специалист, очень редко с ним сталкиваюсь, и вообще мне больше C-подобные нравятся. Через указатели я бы лучше сделал.

Вот полный код программы (он ужасен, можно не смотреть).

Кликните здесь для просмотра всего текста
Pascal
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
program FilesCsv;
 
type Date = record
  day: integer;
  month: integer;
  year: integer;
end;
 
type Info = record
  fname: string;
  size: integer;
  kind: string;
  create: Date;
  change: Date;
  access: string;
end;
 
var f: file of char;
var infos: array[1..280] of Info;
 
procedure ReadName(i: integer);
var c: char;
begin
  infos[i].fname := '';
  while not eof(f) do begin
    read(f, c);
    if (ord(c) <> 13) and (ord(c) <> 10) then break;
  end;
  while c <> ',' do begin
    infos[i].fname := infos[i].fname + c;
    if eof(f) then break;
    read(f, c);
  end;
  writeln(infos[i].fname);
end;
 
procedure ReadSize(i: integer);
var c: char;
begin
  infos[i].size := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].size := infos[i].size * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadKind(i: integer);
var c: char;
begin
  infos[i].kind := '';
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].kind := infos[i].kind + c;
  end;
end;
 
procedure ReadCreate(i: integer);
var c: char;
begin
  infos[i].create.day := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].create.day := infos[i].create.day * 10 + ord(c) - ord('0');
  end;
  infos[i].create.month := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].create.month := infos[i].create.month * 10 + ord(c) - ord('0');
  end;
  infos[i].create.year := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].create.year := infos[i].create.year * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadChange(i: integer);
var c: char;
begin
  infos[i].change.day := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].change.day := infos[i].change.day * 10 + ord(c) - ord('0');
  end;
  infos[i].change.month := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].change.month := infos[i].change.month * 10 + ord(c) - ord('0');
  end;
  infos[i].change.year := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].change.year := infos[i].change.year * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadAccess(i: integer);
var c: char;
begin
  infos[i].access := '';
  while not eof(f) do begin
    read(f, c);
    if (ord(c) = 13) or (ord(c) = 10) then break;
    infos[i].access := infos[i].access + c;
  end;
end;
 
procedure ReadInfo();
var i: integer;
var c: char;
begin
  assign(f, 'files.csv');
  for i := 1 to 280 do begin
    ReadName(i);
    ReadSize(i);
    ReadKind(i);
    ReadCreate(i);
    ReadChange(i);
    ReadAccess(i);
  end;
  close(f);
end;
 
procedure PrintInfo();
var i: integer;
begin
  for i := 1 to 280 do begin
    write(i);
    write(' name: ');
    writeln(infos[i].fname);
    write('size: ');
    writeln(infos[i].size);
    write('kind: ');
    writeln(infos[i].kind);
    write('create: ');
    write(infos[i].create.day);
    write('.');
    write(infos[i].create.month);
    write('.');
    writeln(infos[i].create.year);
    write('change: ');
    write(infos[i].change.day);
    write('.');
    write(infos[i].change.month);
    write('.');
    writeln(infos[i].change.year);
    write('access: ');
    writeln(infos[i].access);
  end;
end;
 
begin
    ReadInfo();
    PrintInfo();
end.


Вот код, который я написал для выявления проблемы, но не работает даже он. Что-то я делаю принципиально не так, видимо.

Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var f: file of char;
var c: char;
 
begin
  assign(f, 'files.csv');
  reset(f);
  while not eof(f) do begin
    read(f, c);
    if c = ',' then begin
      writeln;
    end else begin
      write(c);
    end;
  end;
  close(f);
end.


Буду благодарен, если поможете хотя бы прочитать файл, а как максимум - дадите советы, как сделать мой код менее гадким. На каком-нибудь C/С++/C# я так не пишу, не говоря уж про Python. Я знаю и указатели, и регулярки, и много других страшных слов. Но как всем этим воспользоваться на паскале - не знаю. Видимо, никак. А написать надо на "чистом" паскале.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2020, 10:49
Ответы с готовыми решениями:

Программа для создания файла, записи в него, чтения и выведения результата по формуле
Помогите пожаолуйста.Завтра нужно сдать зачет.Среда Дэлфи. А. Создать файл, содержащий сведения о количестве изде¬лий категорий А, В, С,...

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

Программа останавливается во время чтения строк из массива
// . . . . . // . . . # # // . . # # # // . . . # # // . . . . . var a:array of string; j,n,i,k:integer; begin...

8
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
17.02.2020, 10:53
Что было найдено для чтения csv и вроде как проблемы были решены:
http://www.cyberforum.ru/pasca... 46855.html
Ваш код, извините, не смотрел.
0
 Аватар для Вадим Тукаев
310 / 291 / 116
Регистрация: 23.01.2018
Сообщений: 933
17.02.2020, 11:01  [ТС]
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Что было найдено для чтения csv и вроде как проблемы были решены:
Поглядел, там вроде бы запись csv.

Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Ваш код, извините, не смотрел.
Вот код из 5 строк, но даже он не работает. Вообще не понимаю, что происходит. Там негде ошибиться, как в трёх соснах...

Pascal
1
2
3
4
5
6
7
8
9
10
var f: file of char;
var c: char;
 
begin
  assign(f, 'files.csv');
  reset(f);
  read(f, c);
  writeln(c);
  close(f);
end.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
17.02.2020, 11:11
Что-то вы делаете не так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  f: text;
 
var
  c: string;
 
begin
  assign(f, 'книга1.csv');
  reset(f);
  while not eof(f) do
  begin
    readln(f, c);
    writeln(c);
  end;
  close(f);
end.
Добавлено через 42 секунды
Компьтеры;Процессоры;Разрядность
PS/2;286;16
MSX-2;z80;8
Укнц;вм-3;16
Отчего-то csv выдал ошибку загрузки
0
 Аватар для Вадим Тукаев
310 / 291 / 116
Регистрация: 23.01.2018
Сообщений: 933
17.02.2020, 11:27  [ТС]
О, вот такой код сработал. Я всего лишь закрыл файл перед тем, как выводить что-то на экран.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var n: integer;
var f: file of char;
var c: char;
 
begin
  n := 0;
  assign(f, 'files.csv');
  reset(f);
  while not eof(f) do begin
    read(f, c);
    if c = ',' then begin
      inc(n);
    end;
  end;
  close(f);
  writeln(n);
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.02.2020, 12:22
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
Нужно прочитать csv-файл, записать в массив
Я бы сначала переделал csv в txt потом прочитал массив.
Pascal
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
var f,g:text;
    a:array[1..100] of integer;
    s:string;
    n,i:integer;
begin
assign(f,'tablica.csv');
reset(f);
assign(g,'tablica_1.txt');
rewrite(g);
while not eof(f) do
 begin
  readln(f,s);
  for i:=1 to length(s) do
  if s[i] in [';',','] then s[i]:=' ';
  writeln(g,s);
 end;
close(f);
reset(g);
n:=0;
while not seekeof(g) do
 begin
  inc(n);
  read(g,a[n]);
  write(a[n]:3);
 end;
close(g)
end.
0
 Аватар для Вадим Тукаев
310 / 291 / 116
Регистрация: 23.01.2018
Сообщений: 933
17.02.2020, 15:20  [ТС]
Спасибо, я уже всё сделал. Код немножко в китайском стиле, потому что я на Паскале не умею в указатели и дженерики. Вот что у меня получилось на этот момент. Если кто-то прочитает эту простыню грязного и унылого кода, буду очень благодарен за любые советы, идеи и прочие улучшения. Во вложении - исходник, ТЗ и собственно файл для обработки.



Кликните здесь для просмотра всего текста
Pascal
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
program FilesCsv;
 
type Date = record
  day: integer;
  month: integer;
  year: integer;
end;
 
type Info = record
  name: string;
  size: longint;
  kind: string;
  create: Date;
  change: Date;
  access: string;
end;
 
var f: file of char;
var infos: array[1..280] of Info;
 
procedure ReadName(i: integer);
var c: char;
begin
  infos[i].name := '';
  while not eof(f) do begin
    read(f, c);
    if (c <> #13) and (c <> #10) then break;
  end;
  while c <> ',' do begin
    infos[i].name := infos[i].name + c;
    if eof(f) then break;
    read(f, c);
  end;
end;
 
procedure ReadSize(i: integer);
var c: char;
begin
  infos[i].size := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].size := infos[i].size * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadKind(i: integer);
var c: char;
begin
  infos[i].kind := '';
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].kind := infos[i].kind + c;
  end;
end;
 
procedure ReadCreate(i: integer);
var c: char;
begin
  infos[i].create.day := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].create.day := infos[i].create.day * 10 + ord(c) - ord('0');
  end;
  infos[i].create.month := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].create.month := infos[i].create.month * 10 + ord(c) - ord('0');
  end;
  infos[i].create.year := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].create.year := infos[i].create.year * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadChange(i: integer);
var c: char;
begin
  infos[i].change.day := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].change.day := infos[i].change.day * 10 + ord(c) - ord('0');
  end;
  infos[i].change.month := 0;
  while not eof(f) do begin
    read(f, c);
    if c = '.' then break;
    infos[i].change.month := infos[i].change.month * 10 + ord(c) - ord('0');
  end;
  infos[i].change.year := 0;
  while not eof(f) do begin
    read(f, c);
    if c = ',' then break;
    infos[i].change.year := infos[i].change.year * 10 + ord(c) - ord('0');
  end;
end;
 
procedure ReadAccess(i: integer);
var c: char;
begin
  infos[i].access := '';
  while not eof(f) do begin
    read(f, c);
    if (c = #13) or (c = #10) then break;
    infos[i].access := infos[i].access + c;
  end;
end;
 
procedure ReadInfo();
var i: integer;
var c: char;
begin
  assign(f, 'files.csv');
  reset(f);
  for i := 1 to 280 do begin
    ReadName(i);
    ReadSize(i);
    ReadKind(i);
    ReadCreate(i);
    ReadChange(i);
    ReadAccess(i);
  end;
  close(f);
end;
 
procedure PrintInfo();
var i: integer;
begin
  for i := 1 to 280 do begin
    writeln(i, ' name: ', infos[i].name);
    writeln('size: ', infos[i].size);
    writeln('kind: ', infos[i].kind);
    writeln('create: ', infos[i].create.day, '.', infos[i].create.month, '.', infos[i].create.year);
    writeln('change: ', infos[i].change.day, '.', infos[i].change.month, '.', infos[i].change.year);
    writeln('access: ', infos[i].access);
  end;
end;
 
procedure TaskA();
var audios, videos, images, presentations, texts, spreadsheets, i: integer;
begin
  audios := 0;
  videos := 0;
  images := 0;
  presentations := 0;
  texts := 0;
  spreadsheets := 0;
  for i := 1 to 280 do begin
    if infos[i].kind = 'аудио' then begin
      inc(audios);
    end else if infos[i].kind = 'видео' then begin
      inc(videos);
    end else if infos[i].kind = 'изображение' then begin
      inc(images);
    end else if infos[i].kind = 'презентация' then begin
      inc(presentations);
    end else if infos[i].kind = 'текстовый' then begin
      inc(texts);
    end else if infos[i].kind = 'электронная таблица' then begin
      inc(spreadsheets);
    end;
  end;
  writeln('Аудио: ', audios);
  writeln('Видео: ', videos);
  writeln('Изображений: ', images);
  writeln('Презентаций: ', presentations);
  writeln('Текстовых: ', texts);
  writeln('Электронных таблиц: ', spreadsheets);
  writeln('Всего: ', audios + videos + images + presentations + texts + spreadsheets);
end;
 
procedure TaskB();
var i: integer;
var t: Info;
begin
  i := 2;
  while i <= 280 do begin
    if (i = 1) or (infos[i-1].size >= infos[i].size) then begin
      inc(i);
    end else begin
      t := infos[i];
      infos[i] := infos[i-1];
      infos[i-1] := t;
      dec(i);
    end;
  end;
  i := 2;
  while i <= 10 do begin
    if (i = 1) or (infos[i-1].name <= infos[i].name) then begin
      inc(i);
    end else begin
      t := infos[i];
      infos[i] := infos[i-1];
      infos[i-1] := t;
      dec(i);
    end;
  end;
  for i := 1 to 10 do begin
    writeln(i, ' большой файл: ', infos[i].name, ', размер: ', infos[i].size);
  end;
end;
 
procedure TaskV();
var n, i: integer;
var t: Info;
begin
  n := 0;
  for i := 1 to 280 do begin
    if (infos[i].kind = 'презентация') and (infos[i].access = 'ограничен') and (infos[i].change.year = 2012) then begin
      inc(n);
      t := infos[i];
      infos[i] := infos[n];
      infos[n] := t;
    end;
  end;
  i := 2;
  while i <= n do begin
    if (i = 1) or (infos[i-1].name <= infos[i].name) then begin
      inc(i);
    end else begin
      t := infos[i];
      infos[i] := infos[i-1];
      infos[i-1] := t;
      dec(i);
    end;
  end;
  for i := 1 to n do begin
    writeln(i, ' презентация ограниченного доступа, изменённая в 2012 году: ', infos[i].name);
  end;
end;
 
procedure TaskG();
var n, i: integer;
var t: Info;
begin
  n := 0;
  for i := 1 to 280 do begin
    if (infos[i].kind = 'видео') and (infos[i].size > 102400) and (infos[i].create.year = 2011) and (infos[i].create.month > 5) then begin
      inc(n);
      t := infos[i];
      infos[i] := infos[n];
      infos[n] := t;
    end;
  end;
  i := 2;
  while i <= n do begin
    if (i = 1) or (infos[i-1].size >= infos[i].size) then begin
      inc(i);
    end else begin
      t := infos[i];
      infos[i] := infos[i-1];
      infos[i-1] := t;
      dec(i);
    end;
  end;
  for i := 1 to n do begin
    writeln(i, ' видео размером > 100МБайт, созданное во II половине 2011 года: ', infos[i].name);
  end;
end;
 
begin
    ReadInfo();
    PrintInfo();
    TaskA();
    TaskB();
    TaskV();
    TaskG();
end.
Вложения
Тип файла: zip files.zip (6.5 Кб, 7 просмотров)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
18.02.2020, 11:21
Если знаем, что длина строк в файле не более 255, чтение могло быть таким:
типы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  TDate = record
    Day, Month: Byte;
    Year: Integer;
  end;
  
  TFileInfo = record
    Name: String[127];
    Size: Longint;
    Kind: String[63];
    Created,
    Changed: TDate;
    Access: String[11];
  end;
чтение:
Pascal
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
procedure ReadInfo(const fName: String; var Infos: array of TFileInfo; var Count: Integer);
 
  procedure ToDate(const s: String; var d: TDate);
  var i: Integer;
  begin with d do begin
    FillChar(d,SizeOf(d),#0); i:=0;
    while (i<=Length(s)) and (s[i]<>'.') do begin
      Day:=Day*10+Ord(s[i])-Ord('0');
      Inc(i);
    end; Inc(i);
    while (i<=Length(s)) and (s[i]<>'.') do begin
      Month:=Month*10+Ord(s[i])-Ord('0');
      Inc(i);
    end; Inc(i);
    while i<=Length(s) do begin
      Year:=Year*10+Ord(s[i])-Ord('0');
      Inc(i);
    end;
  end; end;
 
var
  f: Text;
  s: String;
  p, r: Integer;
begin
  Assign(f,fName); Reset(f); Count:=0;
  while (not EoF(f)) and (Count<=High(Infos)) do
  with Infos[Count] do begin
    ReadLn(f,s);
    p:=Pos(',',s); if p=0 then Continue;
    Name:=Copy(s,1,p-1); Delete(s,1,p);
    p:=Pos(',',s); if p=0 then Continue;
    Val(Copy(s,1,p-1),Size,r); Delete(s,1,p);
    if r<>0 then Continue;
    p:=Pos(',',s); if p=0 then Continue;
    Kind:=Copy(s,1,p-1); Delete(s,1,p);
    p:=Pos(',',s); if p=0 then Continue;
    ToDate(Copy(s,1,p-1),Created); Delete(s,1,p);
    p:=Pos(',',s); if p=0 then Continue;
    ToDate(Copy(s,1,p-1),Changed); Delete(s,1,p);
    Access:=s;
    Inc(Count);
  end;
  Close(f);
end;
использование:
Pascal
62
63
64
65
66
67
68
69
var
  Infos: array [0..279] of TFileInfo;
  InfosCnt: Integer;
 
begin
  ReadInfo('files.csv',Infos,InfosCnt);
  { ... }
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
18.02.2020, 13:20
Для заданий "б"-"г" можно отметить, что производится выборка/сортировка по одному критерию, затем сортировка отобранного по второму критерию. Это "затем" легко использовать -- достаточно для добавления очередного подходящего элемента в начало массива использовать шаг сортировки вставками:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure Top10BySize(var Infos: array of TFileInfo; Count: Integer);
var
  i, j, k, m: Integer; t: TFileInfo;
begin
  for i:=0 to 9 do begin
    m:=i; for j:=i+1 to Count-1 do if Infos[m].Size<Infos[j].Size then m:=j;
    k:=i; t:=Infos[i];
    while (k>0) and (Infos[k-1].Name>Infos[m].Name) do begin
      Infos[k]:=Infos[k-1]; Dec(k);
    end;
    if m>i then begin
      Infos[k]:=Infos[m]; Infos[m]:=t;
    end else
      Infos[k]:=t;
  end;
  WriteLn('Десятка самых больших:');
  for i:=0 to 9 do with Infos[i] do WriteLn(Size:10,' ',Name);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2020, 13:20
Помогаю со студенческими работами здесь

Bat - файл для чтения только одной строки из файла CSV
Добрый день! Подскажите пожалуйста как сделать батник чтобы он выводил только одну (2, 3, 4,...) строку из файла CSV. На текущий...

Как правильно написать скрипт для чтения файла с расширением .csv(Excel) ?
как правильно написать скрипт для чтения файла с расширением .csv(Excel) пишу вот такой програмный код: &lt;? $count = 1; $file =...

Программа для Андроид (TX33) для чтения exe-файлов, написанных на C#
Где найти программу, которая устанавливается на Андроид (TX33) и позволяет работать с exe-файлом, написанном на С#?

Программа для чтения pdf
программа для чтения pdf что бы при выходе запонила номер страницы.(например как на Windjview) Есть ли такая программа????

Программа для чтения книг на QT
Доброго времени суток! Хотел бы узнать с чего начать писать программу для чтения книг с разных текстовых файлов на QT, надо использовать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru