Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59

Не сохраняются данные и не работает таймер

16.12.2013, 21:24. Показов 2565. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, сейчас пишу одну программу, вообщем необходимо сохранить в файл данные, у меня есть файловая переменная, вот код программы:
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
type
  TFile=record
  q:ShortString;
  n:byte;
  v:ShortString;
  v2:ShortString;
  v3:ShortString;
  v4:ShortString;
  time:integer;
  t:integer;
  img:boolean;
  image:ShortString;
end;
 var
  f:file of TFile;
  tf:TFile;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 assignfile(f,'file.quest');
 ReWrite(f);
 SpinEdit1.MinValue:=2;
 SpinEdit1.MaxValue:=4;
 SpinEdit1.Value:=4;
 SpinEdit2.MinValue:=1;
 SpinEdit2.MaxValue:=4;
 Button2.Visible:=false;
 CheckBox1.Checked:=false;
 Edit6.Visible:=false;
 Timer1.Interval:=1000;
 Button3.Visible:=False;
 Timer1.Enabled:=false;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 with tf do begin
  q:=Edit1.Text;
  n:=SpinEdit1.Value;
  v:=Edit2.Text;
  v2:=Edit3.Text;
  v3:=Edit4.Text;
  v4:=Edit5.Text;
  t:=SpinEdit2.Value;
  img:=CheckBox1.Checked;
  image:=Edit6.Text;
  time:=SpinEdit3.Value;
 end;
 try
  if (SaveDialog1.Execute) then
  write(f,tf);
  f.saveToFile(SaveDialog1.FileName);
 except
  showmessage('NO');
 end;
Выдает такую вот ошибку :
[Error] Unit1.pas(107): Record, object or class type required
И ссылается на эту строку:
f.saveToFile(SaveDialog1.FileName);
Что необходимо заменить чтобы программа работала, уже час голову ломаю. И вот еще есть проблема с таймером,
есть таймер который выводится в label, и нужно чтобы время декрементировалось(уменьшалось на 1), вот код с таймером:
Delphi
1
2
3
4
procedure Timer1Timer(Sender:TObject);
begin
Label2.Caption:=inttostr(dec(strtoint(Label2.Caption)));
if Label2.Caption='0' then begin
Ссылает ошибку на эту строку Label2.Caption:=inttostr(dec(strtoint(La bel2.Caption)))
Сама ошибка:
Unit1.pas(138): Left side cannot be assigned to.
Что нужно изменить чтобы работало нормально? Прошу помощи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2013, 21:24
Ответы с готовыми решениями:

Не работает программа. Я что-то не учел. Данные с клавы не сохраняются.
помогите пожалуйста.В коде я упустил какую то маленькую деталь. Код работает, но данные которые я ввожу с клавы не сохраняются. 1...

Не сохраняются данные
здравствуйте.не могу разобраться.все данные прописывал в ручную.кнопка сохранить не работает CREATE TABLE `seting` ( `alog`...

Не сохраняются данные в БД
Привет программисты !) Прошу помощи так как сам уже не знаю что делать, сам не сильный в С++, но пытаюсь сохранить данные из DBEdit...

35
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
16.12.2013, 22:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 4ipalino Посмотреть сообщение
необходимо мне сохранение, а не копирование...
Мне кажется, что у Вас проблемы с выражением своих желаний. Сначала Вы говорите, что
Мне нужно сохранять это файл, ибо файл 'file.quest', будет перезаписыватся постоянно, а мне необходимо, чтобы он не перезаписывался, а чтобы этот файл сохранялся в любом имени
теперь Вам надо
Цитата Сообщение от 4ipalino Посмотреть сообщение
необходимо мне сохранение, а не копирование...
Я так и не понял, Вам что в итоге надо?

Добавлено через 1 минуту
Если Вас не устраивает, что файл перезаписывается с каждым перезапуском программы - так ничего удивительного - у Вас ведь Rewrite в OnCreate. Замените на Reset. Если Вам надо дублировать этот файл - то по ссылке. приведённой мной выше.
0
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
16.12.2013, 22:39  [ТС]
Изначально я и сказал, что мне нужно сохранение файла, где я написал про копирование или перезапись, допустим мне нужно создать 20 файлов, то-есть по вашему методу эти 20 файлов мне нужно перекидать в 20 разных директорий, потом вручную переименновать и сбросить в одну директорию... ЗАМЕЧАТЕЛЬНО ПРОСТО!!!
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
16.12.2013, 22:41
Цитата Сообщение от 4ipalino Посмотреть сообщение
Ваш пост можно считать флудом...
Так же как и ваш вопрос можно считать флудом на тему Дельфи.
0
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
16.12.2013, 22:47  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Так же как и ваш вопрос можно считать флудом на тему Дельфи.
То-есть вы хотите сказать, что мой вопрос не реализуем в delphi... Не ожидал.

Добавлено через 2 минуты
Цитата Сообщение от Valenth Посмотреть сообщение
Мне кажется, что у Вас проблемы с выражением своих желаний. Сначала Вы говорите, что


теперь Вам надо


Я так и не понял, Вам что в итоге надо?

Добавлено через 1 минуту
Если Вас не устраивает, что файл перезаписывается с каждым перезапуском программы - так ничего удивительного - у Вас ведь Rewrite в OnCreate. Замените на Reset. Если Вам надо дублировать этот файл - то по ссылке. приведённой мной выше.
Я правильно понял про предлагаемую вами функцию, она просто кидает файл в разные директории, и это нужно прописывать все в ручную, даже если неообходимо 100 файлов, прийдется записать 100 случаев создать 100 директорий, собрати эти 100 файлов в 1 директорию... Или не так, или же можно проще, ответьте...
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
16.12.2013, 22:53
Цитата Сообщение от 4ipalino Посмотреть сообщение
То-есть вы хотите сказать, что мой вопрос не реализуем в delphi... Не ожидал.
Нет. Я просто считаю что вам нужно сначала внимательно прочитать учебник. Иначе действительно реализовать ничего не получится. Разве что кто-нибудь даст вам готовый код.
0
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
16.12.2013, 23:01  [ТС]
Я скинул, вам не полный код, а лишь то, в чем ошибка, я не могу понять как сохранять этот файл, код полностью готов, но нужно сделать сохранение файла, если вы знаете как это сделать то подскажите как, я перепробовал все свои знания, но программа так и не запустился, а запускается лишь с открытием одного и того-же файла, мне нужно чтобы просто файл сохранялся, а не перезаписовался... В этом мне тут не кто не может тут помочь я смотрю, уже начали сбрасывать тупое копирование файла...Вариант который у меня отпал сразу, если что-то знаете, то подскажите... Если нет то смысл ваших красивых слов?
0
angstrom
16.12.2013, 23:15
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
type
  TFile         = packed record
    q           : ShortString;
    n           : Byte;
    v           : ShortString;
    v2          : ShortString;
    v3          : ShortString;
    v4          : ShortString;
    time        : Integer;
    t           : Integer;
    img         : Boolean;
    image       : ShortString;
end;
 
var
  f  : file of TFile;
  tf : TFile;
 
procedure TForm1.Button13Click(Sender: TObject);
begin
  with tf do
  begin
    q  := 'qq';
    n  := 9;
    v  := 'qq';
    v2 := 'qq';
    v3 := 'qq';
    v4 := 'qq';
    t  := 10;
    img := True;
    image := 'qq';
    time  := 11;
  end;
 
  if SaveDialog1.Execute then
  begin
    AssignFile(f, SaveDialog1.FileName);
    Rewrite(f);
    Write(f, tf);
    CloseFile(f);
  end;
end;
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
16.12.2013, 23:21
До меня кажется дошло чем мучается ТС. Он думает что строкой
Delphi
1
write(f,tf);
он сохранил данные в какой-то неизвестной ему фигне с названием файловая переменная
Delphi
1
f:file of TFile;
А теперь чтобы сохранить эти данные на диск нужно для той фигни вызвать метод типа saveToFile выбрав предварительно имя файла через TSaveDialog. Для чего нужны и что делают процедуры assignfile и ReWrite ему не известно.
0
angstrom
16.12.2013, 23:23
Дык я выше уже написал как ТС нужно.
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
16.12.2013, 23:29  [ТС]
Спасибо angstorm, проблема решилась, как только убрал try и except, и использовал этот код:
Delphi
1
2
3
4
5
6
7
  if SaveDialog1.Execute then
  begin
    AssignFile(f, SaveDialog1.FileName);
    Rewrite(f);
    Write(f, tf);
    CloseFile(f);
  end;
Огромный + вам!

Добавлено через 3 минуты
А теперь подскажите, что я не так делаю с таймером, пишет, что вроде это код не из делфи, но я проверил все верно, как и должно быть, пробовал использовать переменную, присваивал ее лейблу, но все равно как-то не идет, таймер...
0
angstrom
16.12.2013, 23:36
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Timer1Timer(Sender: TObject);
var
  I : Integer;
begin
  I := StrToInt(Label2.Caption);
  Dec(I);
  Label2.Caption := IntToStr(I);
  if Label2.Caption = '0' then
  begin
  end;
end;
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
17.12.2013, 00:09  [ТС]
Спасибо огромное таймер работает, еще одна не приятная новость по вашему первому коду, получается файл уже сохранять можно все гуд, но я бы хотел чтобы файл снова не перезаписывался, а а продолжал с новой строки заполнится, пробовал:
Delphi
1
Append(f);
Но бил ошибки, пробовал и Reset, все равно файл перезаписуется, вот как я хочу, чтобы допустим вот я записал данные файл, сохранил его, а когда снова сохраняю в этот файл, файл бы не перезаписывался, а дополнялся вот наработки, прошу подкоректируйте:
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 TForm1.FormCreate(Sender: TObject);
begin
 assignfile(f,'file.test');
 Rewrite(f);
 SpinEdit1.MinValue:=2;
 SpinEdit1.MaxValue:=4;
 SpinEdit1.Value:=4;
 SpinEdit2.MinValue:=1;
 SpinEdit2.MaxValue:=4;
 Button1.Caption:='Äîáàâèòü â òåñò';
 Button2.Caption:='Èçìåíèòü êàðòèíêó...';
 Button2.Visible:=false;
 CheckBox1.Checked:=false;
 Edit6.Visible:=false;
 Timer1.Interval:=1000;
 Button3.Visible:=False;
 Button3.Caption:='Íà÷àòü àâòîîïðåäåëåíèå (ïðè íàâåäåíèè - ïîäñêàçêà)';
 Button3.Hint:='Äëÿ íà÷àëà îïðåäåëåíèÿ íàæìèòå íà ýòó êíîïêó, äëÿ êîíöà - íàæìèòå êíîïêó îïÿòü';
 Button3.ShowHint:=true;
 Timer1.Enabled:=false;
end;
procedure TForm1.FormClose(Sender: TObject);
begin
 closefile(f);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 with tf do begin
  q:=Edit1.Text;
  n:=SpinEdit1.Value;
  v:=Edit2.Text;
  v2:=Edit3.Text;
  v3:=Edit4.Text;
  v4:=Edit5.Text;
  t:=SpinEdit2.Value;
  img:=CheckBox1.Checked;
  image:=Edit6.Text;
  time:=SpinEdit3.Value;
 end;
 try
  if(saveDialog1.Execute) then
  begin
  Reset(f,saveDialog1.FileName);
  write(f,tf);
  showmessage('Çàïèñü äîáàâëåíà');
  end;
 except
  showmessage('Îøèáêà ïðè äîáàâëåíèè çàïèñè');
 end;
 Edit1.Text:='';
 Edit2.Text:='';
 Edit3.Text:='';
 Edit4.Text:='';
 Edit5.Text:='';
 Edit6.Text:='';
 CheckBox1.Checked:=false;
 SpinEdit1.Value:=4;
end;
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
17.12.2013, 00:23
Delphi
1
2
3
4
  Reset(f,saveDialog1.FileName);
  Seek(f,FileSize(f));
  write(f,tf);
  showmessage('Запись добавлена');
1
angstrom
17.12.2013, 00:34
Нужно для начала проверить, есть ли такой файл.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if SaveDialog1.Execute then
  begin
    AssignFile(f, SaveDialog1.FileName);
    if FileExists(SaveDialog1.FileName) then
    begin
      // далее код [B]northener[/B] 
      Reset(f, ЫaveDialog1.FileName);
      Seek(f, FileSize(f));
    end
    else
      Rewrite(f);
    Write(f, tf);
    CloseFile(f);
  end;
 Аватар для Valenth
120 / 110 / 19
Регистрация: 04.11.2013
Сообщений: 471
17.12.2013, 09:09
4ipalino, а Вы очень насточивы в своей упоротости я ведь уже написал почему файл перезаписывается, но, видимо, мимо Ваших ушей пролетело. Повторю ещё раз:
Rewrite - перезаписывает файл.
Reset - открывает для чтения.
Использовать надо один из этих вариантов, не оба сразу.

А если честно, после вашей попытки использовать Append, мне хочется отправить Вас учить матчасть. У Вас даже простейших знаний работы с файлами нет.
0
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 59
17.12.2013, 09:43  [ТС]
Спасибо всем кто помогал, теперь работает как и хотелось!
P.S.
Valenth, извинясь если вам показалось, что я упорот, я знаю, что Append используется только в текстовых файлах, с этим протупил конкретно, а по ReWrite и Reset, действительно моя полностью ошибка, всем сапсибо кто помогал и объяснял !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2013, 09:43

Данные не сохраняются в БД
Вообщем, я начинающий и учился работать с таблицами. И вот, вроде всё сделал, апдейтнул таблицу в ранее созданной БД и тут такое дело, что...

Не сохраняются данные
Сделал пример ввод данных в бд access по ссылке https://youtu.be/Aiu6ncsedx8?t=5m24s, запускаешь программу она вводит данные сохраняет их в...

Не сохраняются данные в БД
Подскажите пожалуйста, что я делаю не так. БД acsess подключена в delphi, если я вношу или удаляю данные в acsess, все сохраняется, если...

Не сохраняются данные
Здравствуйте, это снова я) сама не рада, что опять задаю вопросы, но это в последний раз, обещаю, буду учиться сама Суть вот в чем, есть...

Данные не сохраняются в БД
Компилятор выдает ошибку Работаю в Visual Studio 2015 на C# с формами WPF, БД делал там же в конструкторе, Уже сохранял туда данные...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru