0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
1

Сохранение и перезапись в файле

19.12.2019, 21:54. Показов 2332. Ответов 16
Метки нет (Все метки)

Добрый вечер! Я заполняю таблицу и при выходе из формы задаю сообщение о том, желаю ли я сохранить данные таблицы в файл.
Если да, то организовываю поиск: если в файле есть уже записи с такими же датами, что я указала в cbb1 и cbb2, то появляется сообщение, хочу ли я перезаписать значения с этими датами в файле.
Если всё хорошо, и в файле еще нет записей с такими датами, они записываются в файл.
Я попробовала записать код:
Delphi
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
procedure TReestr.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Res, Rez,i:integer;
  reest, tmp : RecReestr;
begin
  Res := MessageBox(Self.Handle, PChar('Желаете сохранить документ?'), PChar('Сохранение'),
    MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL);
  case Res of
//если нажал на кнопку ДА
    IDYES :
    begin
      AssignFile(fileReestr, 'reestr.db');
      Reset(fileReestr);
      Seek(fileReestr,0);
      while not Eof(fileReestr) do
      begin
        read(fileReestr, tmp);
 
        if (tmp.mounth = cbb1.Text) and (tmp.year = StrToInt(cbb2.Text)) then //если нашли совпадение по дате
        begin
          Rez := MessageBox( Self.Handle, PChar('За данный период уже сделан расчёт. Перезаписать?'), PChar('Сохранение'),
          MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL);
          case Res of
          IDYES :
          begin
            AssignFile(fileReestr, 'reestr.db');
            Rewrite(fileReestr);
            for i:= 1 to StringGridTab.RowCount - 1 do
            begin
            reest.IdWorker:= StrToInt(StringGridTab.Cells[0,i]);
            reest.NameWorker:= StringGridTab.Cells[1,i];
            reest.Zp:=StrToInt(StringGridReestr.Cells[2,i]);
            reest.mounth:=cbb1.Text;
            reest.year:=StrToInt(cbb2.Text);
            Seek(fileReestr, FileSize(fileReestr));
            Write(fileReestr, reest);
            end;
          end; 
          IDNO :
          begin
            Close;
          end;
          end;
        end
 //не нашли совпадение по дате       
        else
        begin
          AssignFile(fileReestr, 'reestr.db');
          Reset(fileReestr);
          for i:= 1 to StringGridTab.RowCount - 1 do
          begin
          reest.IdWorker:= StrToInt(StringGridTab.Cells[0,i]);
          reest.NameWorker:= StringGridTab.Cells[1,i];
          reest.Zp:=StrToInt(StringGridReestr.Cells[2,i]);
          reest.mounth:=cbb1.Text;
          reest.year:=StrToInt(cbb2.Text);
          Seek(fileReestr, FileSize(fileReestr));
          Write(fileReestr, reest);
          end;
        end;
      Close;
      end;
    end;
//если нажал на кнопку НЕТ
    IDNO :
    begin
      Close;
    end;
  end;
end;
Но у меня возникли проблемы:
1)Если я пытаюсь сохранить информацию за даты, которые есть в файле, то система находит совпадения по дате только по записям,которые находятся вверху файла. Т.е. если записи в конце файла, то система не находит по ним соответствия и добавит в файл новый дубликат с такими же датами.

2)Если же система находит совпадения по дате(а это только 1 запись находящаяся вверху файла), то она перезаписывает ВЕСЬ файл, включая записи с другими датами

Помогите, пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2019, 21:54
Ответы с готовыми решениями:

Перезапись строк в файле
Люди пожалуйста подскажите как можно перезаписать строку в файле. Не используя fstream.

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

Перезапись строки в файле
Приветствую всех! Тут возникла необходимость перезаписать единственную строку в файле. 1....

перезапись строки в файле
Здравствуйте! Такая задумка: в таймере записывается строка в файл(StreamWriter,sw.write("dsfs");,...

16
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 01:10 2
А ничего, что Rewrite(fileReestr); перезаписывает файл?

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

Добавлено через 5 минут
Либо переходи на более современные функции FileOpen, FileRead, FileWrite, FileSeek, FileClose:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  f: integer;
  MyRec, RecPos: integer;
begin
  f := FileOpen('test1.txt', fmOpenReadWrite); // Открыть файл для чтения и записи
 
  FileRead(f, MyRec, SizeOf(MyRec)); // Прочитать заданное количество байт
 
  RecPos := 1;
  FileSeek(f, SizeOf(MyRec)* RecPos, 0); // Переместить позицию на указанный байт от начала файла
 
  FileWrite(f, MyRec, SizeOf(MyRec)); // Записать заданное количество байт
 
  FileClose(f); // Закрыть файл
end;
Тогда можно работать в одном файле, прыгая туда-сюда.
Перемещение в конец файла: FileSeek(f, 0, 2); Последний параметр задаёт относительно чего перемещаться: 0 - относительно начала файла, 1 - относительно текущей позиции, 2 - относительно конца файла.
1
пофигист широкого профиля
4579 / 3049 / 847
Регистрация: 15.07.2013
Сообщений: 17,519
20.12.2019, 01:51 3
Цитата Сообщение от AzAtom Посмотреть сообщение
Тогда можно работать в одном файле, прыгая туда-сюда.
Работать в одном файле, прыгая туда-сюда можно и с помощью "старых паскалевских" процедур. Только не надо использовать Rewrite, если не нужно стирать старый файл и записывать заново новый с тем же именем. Процедура Reset по умолчанию открывает файл в режиме Read/Write access.

P.S. Я не против перехода на более современные функции. Я против незнания старых.
1
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
20.12.2019, 11:53  [ТС] 4
northener, Ладно, оставим пока перезаписывание, мне бы для начала разобраться с нахождением одинаковых записей
Я сначала связываю переменную с файлом и открываю для чтения/дозаписи. Вроде верно, так?
Я встаю на начала файла и пока он не закончится, считываю данные:
Delphi
1
2
3
4
5
  Seek(fileReestr,0);
  while not Eof(fileReestr) do
      begin
        read(fileReestr, tmp);
        . . .
Потом начинаю поиск по такому же месяцу и году в файле, но он находит соответствия только по первой записи в файле, ниже на другие даты не спускается
Я как то неправильно оформила цикл?
0
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 12:02 5
Цитата Сообщение от pirab Посмотреть сообщение
Потом начинаю поиск по такому же месяцу и году в файле
Когда "потом"? Зачем ещё раз по такому же месяцу и году искать?

Как я понял, надо проверить, есть ли в файле запись, если запись найдена, то заменить её, а если не найдена, то дописать в конец файла новую запись. И такая запись в файле может быть только одна. Если так, то нужно просто искать запись до конца файла и при обнаружении устанавливать указатель на начало записи и прерывать цикл поиска. После цикла просто записывать новую запись, при этом, указатель будет стоять там, где нужно записать.
0
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
20.12.2019, 12:41  [ТС] 6
Цитата Сообщение от AzAtom Посмотреть сообщение
Когда "потом"? Зачем ещё раз по такому же месяцу и году искать?
Нет, нет, я просто описывала первоначальную последовательность действий, с самого начала, я не ищу повторно.
Хорошо, сейчас попробую

Добавлено через 30 минут
AzAtom, я попробовала написать....но все равно не работает
я так поняла, в качестве указателя после нахождения не надо использовать Seek?...
Delphi
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
      AssignFile(fileReestr, 'reestr.db');
      Reset(fileReestr);
      Seek(fileReestr,0);
      while not Eof(fileReestr) do
      begin
        read(fileReestr, tmp);
        if ((tmp.mounth = cbb1.Text) and (tmp.year = StrToInt(cbb2.Text))) then //если нашли такой период
        begin
          Seek(fileReestr, FileSize(fileReestr));
          CloseFile(fileReestr);
          Rez := MessageBox( Self.Handle, PChar('За данный период уже сделан расчёт'), PChar('Сохранение'),
          MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL);
          case Res of
          IDYES :
          begin
            {Здесь будет перезаписи}
            Exit;
          end;
          IDNO :
          begin
            Close;
          end;
          end;
        end
       
       else
        begin
          AssignFile(fileReestr, 'reestr.db');
          Reset(fileReestr);
          for i:= 1 to StringGridTab.RowCount - 1 do
          begin
          reest.IdWorker:= StrToInt(StringGridTab.Cells[0,i]);
          reest.NameWorker:= StringGridTab.Cells[1,i];
          reest.Zp:=StrToInt(StringGridReestr.Cells[2,i]);
          reest.mounth:=cbb1.Text;
          reest.year:=StrToInt(cbb2.Text);
          Seek(fileReestr, FileSize(fileReestr));
          Write(fileReestr, reest);
          end;
        end;
      Close;
      end;
    end;
. . .
0
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 13:17 7
Цитата Сообщение от pirab Посмотреть сообщение
в качестве указателя после нахождения не надо использовать Seek?...
Надо. Если запись найдена, значит, она прочитана и указатель стоит на следующей записи, поэтому, надо вернуться назад на одну запись (и прервать цикл поиска).
Вот если запись не найдена, то после чтения последней записи указатель уже стоит в конце файла и можно туда сразу дописать новую запись.

Добавлено через 14 минут
Вот примерно так:
Delphi
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
type
  Rec1 = record
    i: integer;
    s: string[50];
  end;
...
implementation
...
 
procedure TForm1.Button1Click(Sender: TObject);
var
  f: file of Rec1;
  r: Rec1;
begin
  // Создать файл с 3 записями
  AssignFile(f, 'test2.db');
  Rewrite(f);
 
  r.i := 48;
  r.s := 'Запись 0';
  Write(f, r);
 
  r.i := 49;
  r.s := 'Запись 1';
  Write(f, r);
 
  r.i := 50;
  r.s := 'Запись 2';
  Write(f, r);
 
  CloseFile(f);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  f: file of Rec1;
  r: Rec1;
begin
  // Заменяет существующую запись
  AssignFile(f, 'test2.db');
  Reset(f);
 
  while not Eof(f) do begin
    Read(f, r);
    if r.i = 49 then begin // Если найдена нужная запись, то
      Seek(f, FilePos(f)-1); // Передвинуть указатель на одну запись назад
      Break; // и прервать цикл
    end;
  end;
 
  r.i := 49;
  r.s := 'Запись 4';
  Write(f, r);
 
  CloseFile(f);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  f: file of Rec1;
  r: Rec1;
begin
  // Добавляет существующую запись
  AssignFile(f, 'test2.db');
  Reset(f);
 
  while not Eof(f) do begin
    Read(f, r);
    if r.i = 51 then begin // Если найдена нужная запись, то
      Seek(f, FilePos(f)-1); // Передвинуть указатель на одну запись назад
      Break; // и прервать цикл
    end;
  end;
 
  r.i := 51;
  r.s := 'Запись 3';
  Write(f, r);
 
  CloseFile(f);
end;
Код кнопок 2 и 3 одинаков за исключением чисел для сравнения записи. В одном случае запись найдена, а в другом случае запись не найдена.
1
554 / 225 / 86
Регистрация: 11.07.2015
Сообщений: 800
20.12.2019, 14:18 8
У меня перебирает все записи
Delphi
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
procedure TReestr.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Res, Rez, i: integer;
  reest, tmp: RecReestr;
begin
  Res := MessageBox(Self.Handle, PChar('Желаете сохранить документ?'), PChar('Сохранение'), MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL);
  case Res of
    //если нажал на кнопку ДА
    IDYES:
      begin
        AssignFile(fileReestr, 'reestr.db');
        Reset(fileReestr);
        Seek(fileReestr, 0);
        while not Eof(fileReestr) do
        begin
          read(fileReestr, tmp);
          if (tmp.mounth = cbb1.Text) and (tmp.year = StrToInt(cbb2.Text)) then //если нашли совпадение по дате и месяцу
          begin
            for i := 1 to StringGridTab.RowCount - 1 do
            begin
              reest.IdWorker := StrToInt(StringGridTab.Cells[0, i]);
              reest.NameWorker := StringGridTab.Cells[1, i];
              reest.Zp := StrToInt(StringGridReestr.Cells[3, i]);
              reest.mounth := cbb1.Text;
              reest.year := StrToInt(cbb2.Text);
            end;
          end;
        end;
        CloseFile(fileReestr);
      end;
  end;
end;
0
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
20.12.2019, 15:23  [ТС] 9
AzAtom, я прописываю пока только нахождение похожей записи и если такой нет, её запись в файл.
я адаптировала ваш код на свой, но он все равно продолжает записывать
пробовала цикл
Delphi
1
while not Eof(f) do
закончить раньше, сразу после break, но тогда программа все равно продолжает вписывать

вот если что мой проект. текст находится в форме UnitReestr с подписью Закрытие формы(строка 327).
чтобы занести информацию в файл перейдите по кнопке "Рассчитать зарплату", выберите дату, перейдите во вкладку зарплатный реестр и нажмите правой кнопкой мыши рассчитать. При выходе на крестик форма сама предложит сохраниться.
чтобы посмотреть записалось или не записалось ли в файл перейдите по кнопке "Банк Данных" там отражаются все записи файла, куда сохраняем инфу.

я не знаю, что еще сделать....
Вложения
Тип файла: rar проект.rar (484.2 Кб, 7 просмотров)
0
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 17:50 10
Цитата Сообщение от pirab Посмотреть сообщение
тогда программа все равно продолжает вписывать
Конечно продолжает, лишние end стоят и заканчивают цикл, после него уже идёт добавление.

Кстати, добавляется много записей. Так можно испортить существующие записи из другого периода. Надо изменить логику. Думаю, всё же без промежуточного файла не обойтись. Ищем период, который надо сохранить, а пока не дошли до него прочитанную запись записываем во временный выходной файл. Когда дошли до искомого периода, то теперь записываем те записи, которые видим в таблице. После этого в файле базы опять ищем, но уже окончание искомого периода и дописываем оставшиеся записи в выходной файл.
Потом остаётся удалить исходный файл, а промежуточный, в который сохранены новые записи, переименовать в "reestr.db".

По крайней мере, я бы так сделал.

Добавлено через 3 минуты
Если перезапись всего файла кажется нехорошей идеей, то можно сделать файл с базой и файл с указателями. Файл с указателями содержит просто номера действующих записей и флаг "Запись удалена". Можно даже обойтись без номеров записей, оставив только флаг. Тогда удаление старых записей будет сводиться только к установке соответствующего флага, а новые действительные записи просто приписываются в конец файла с базой, что происходит одинаково быстро при практически любом размере файла базы.

Добавлено через 2 минуты
И откат сохранения можно реализовать, если сохранить старый файл флагов.

Правда, при любом изменении файл базы будет всё время увеличиваться. Для борьбы с этим можно периодически проводить сжатие, перемещая действительные записи ближе к началу файла, а удалённые действительно удаляя.

Добавлено через 1 час 36 минут
Хотя нет. Я бы при открытии формы прочитал бы весь файл в массив записей типа RecReestr и работал бы с ним, а потом при нажатии кнопки "Сохранить" просто записал бы все эти записи подряд обратно в файл.
1
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 20:36 11
Лучший ответ Сообщение было отмечено pirab как решение

Решение

Переделал вот так:
Delphi
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
//Закрытие формы
procedure TReestr.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Res, Rez, i: integer;
  reest, tmp: RecReestr;
  FileReestr, FileDest : file of RecReestr;
  fUpdated: boolean;
begin
  if IDNO = MessageBox(Self.Handle, PChar('Желаете сохранить документ?'), PChar('Сохранение'),
    MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL) then Exit;
 
    begin
      AssignFile(fileReestr, 'reestr.db');
      Reset(fileReestr);
      AssignFile(FileDest, 'reestr.tmp');
      Rewrite(FileDest);
      fUpdated := false;
 
      while not Eof(fileReestr) do
      begin
        Read(fileReestr, tmp);
        if ((tmp.mounth = cbb1.Text) and (tmp.year = StrToInt(cbb2.Text))) then //если нашли такой период, то
        begin
          if not fUpdated then // если ещё не обновлён, то обновить
          begin
            fUpdated := true; // Далее все записи за этот период из исходного файла будут пропускаться
 
            // Записать содержимое таблицы в файл
            if IDYES = MessageBox( Self.Handle, PChar('За данный период уже сделан рассчёт. Перезаписать?'),
                PChar('Сохранение'), MB_YESNO + MB_ICONINFORMATION + MB_APPLMODAL) then begin
              for i:= 1 to StringGridTab.RowCount - 1 do
              begin
                reest.IdTime     := StrToInt(StringGridTab.Cells[0, i]);
                reest.IdWorker   := StrToInt(StringGridTab.Cells[1, i]);
                reest.NameWorker :=          StringGridTab.Cells[2, i];
                reest.rab_dni    := StrToInt(StringGridTab.Cells[3, i]);
                reest.otr_dni    := StrToInt(StringGridTab.Cells[4, i]);
                reest.dop        :=          StringGridTab.Cells[5, i];
                reest.sum_dop    := StrToInt(StringGridTab.Cells[6, i]);
                reest.Schetorker :=          StringGridReestr.Cells[2, i];
                reest.Zp         := StrToInt(StringGridReestr.Cells[3, i]);
                reest.mounth     := cbb1.Text;
                reest.year       := StrToInt(cbb2.Text);
                Write(FileDest, reest);
              end;
            end;
          end;
        end else begin
          // Иначе, если период другой, то записать в выходной файл как есть
          Write(FileDest, tmp);
        end;
      end;
 
      CloseFile(FileReestr);
      CloseFile(FileDest);
      DeleteFile('reestr.db'); // Удалить исходный файл
      RenameFile('reestr.tmp', 'reestr.db'); // Переименовать новый файл
    end;
end;
Почему-то, в первый раз в периоде "март 2019" файл базы уменьшился. Во второй раз уже не уменьшается.

Так же, в формах Vedomost и Bank открытие файла reestr.db перенёс из FormCreate в FormShow - туда, где этот файл используется, и добавил закрытие файла после чтения. Без этого файл держится открытым и удалить его не получается.


Ещё программа позволяет начать сохранение, когда суммы не рассчитаны, из-за этого процедура сохранения прерывается с ошибкой. Нужно защитить от такого.
Вложения
Тип файла: rar проект.rar (134.5 Кб, 5 просмотров)
1
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 20:36 12
pirab, надо потестировать. Возможно, я что-то упустил.
0
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
20.12.2019, 21:18  [ТС] 13
AzAtom, Господи, СПАСИБО ВАМ БОЛЬШОЕ!!!!

Добавлено через 19 секунд
Но, чет новые записи не хотят записываться....

Добавлено через 2 минуты
И больше в "Сводные данные" не открываются...
0
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 21:33 14
Лучший ответ Сообщение было отмечено pirab как решение

Решение

Цитата Сообщение от pirab Посмотреть сообщение
И больше в "Сводные данные" не открываются...
Не надо лениться открывать файл перед чтением и закрывать за собой. И использование глобальной переменной файла из другого модуля - плохая идея. Лучше её объявлять тут же в процедуре, где производится чтение файла.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Процедура заполнения таблицы ведомости
procedure TVedomost.FillVedTable();
var
  reest: RecReestr;
  tmpJob: RecReestr;
  fs, i, ne_bil, vse_dni, otr_dni, sum, r :integer;
begin
  AssignFile(fileReestr, 'reestr.db'); // Добавлено
  {$I-}
  Reset(fileReestr); // Добавлено
  {$I+}
 
  begin
    StringGridVed.RowCount := 1;
    for i := 0 to StringGridVed.ColCount - 1 do
     StringGridVed.Cells[i, 1] := '';
  end;
  Seek(fileReestr, 0);
...
Чтение
...
  CloseFile(fileReestr); // Добавлено
Добавлено через 2 минуты
Цитата Сообщение от pirab Посмотреть сообщение
чет новые записи не хотят записываться....
Похоже, проблема в том же. Теперь файл не открыт всё время, поэтому, ничего в него не добавляется.


Если так сильно хочется держать файл открытым, то при сохранении нового файла можно закрыть старый, сохранить новый, удалить старый, переименовать новый и открыть обратно уже новый файл. Но лично я так не сделал бы здесь.
1
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 151
20.12.2019, 21:56  [ТС] 15
Цитата Сообщение от AzAtom Посмотреть сообщение
закрыть старый, сохранить новый, удалить старый, переименовать новый и открыть обратно уже новый файл
Всё это прописывается в этом блоке?
Delphi
1
2
3
4
5
6
procedure TReestr.FormClose(Sender: TObject; var Action: TCloseAction);
. . . 
 end else begin
 //Иначе, если период другой, то записать в выходной файл как есть
   Write(FileDest, tmp);
 end;
0
Модератор
3105 / 1749 / 634
Регистрация: 15.11.2015
Сообщений: 6,928
20.12.2019, 22:17 16
Цитата Сообщение от pirab Посмотреть сообщение
Всё это прописывается в этом блоке?
Я так попробовал и не получилось сразу - там ещё связи с другими формами остались. Слишком переплетено, из-за этого сложно что-то менять.
0
northener
21.12.2019, 02:13     Сохранение и перезапись в файле
  #17

Не по теме:

AzAtom, вы уж извините, что невольно заставил вас принять более тщательное участие в топике. Я не к этому писал свой пост :(

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2019, 02:13

Перезапись байтов в файле
Всем привет! Вопрос возможно к гуру. Подскажите как поменять в бинарном файле байт (или группу...

Чтение и перезапись числа в файле
есть файл в нем число допусти 1000, по нажатию на кнопку мне его нужно считать в textBox...после...

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

Поиск строки в файле и её перезапись
Здравствуйте, я хочу чтобы моя программа находила строку в файле config.cfg и перезаписывала её....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru