Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.09.2008, 10:56
Аватар для _Baga_
_Baga_ _Baga_ вне форума
Прохожий
 
Регистрация: 28.08.2008
Сообщения: 12
Репутация: 10
Вопрос Посмотрите код

Мне нужно из 7-ми Edit-ов прочитать информацию, занести в файл, очистить Edit-ты и так по циклу.......

Код:
Procedure TForm1.Button1Click(Sender:TObject);
const
    n_file = 'c:\rec_file.bin';
Var
    F: File Of TRepp;
    RD: Array[0..200] of TRepp;
    PCount,j,i: integer;
begin  
    AssignFile(F, n_file);
    RD[j].FID := Edit1.Text;
    RD[j].PSurname := Edit2.Text;
    RD[j].PName := Edit3.Text;
    RD[j].PPatronymic := Edit4.Text;
    RD[j].Weight := StrToFloat(Edit5.Text);
    RD[j].Deqt := Edit6.Text;;
    RD[j].FDate := StrToDate(Edit7.Text);
    Writeln(F, RD[j]); ! Здесь выдает ошибку
    CloseFile(F);
    j:=j + 1;
    PCount:=j;
    For i := 0 To ComponentCount-1 Do ! Здесь выдает ошибку
      If Components[i] is TEdit Then
        (Components[i] as TEdit).Text := '';
end;
Ответить с цитированием
  #2  
Старый 08.09.2008, 11:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Файл надо не только назначить (AssignFile), но и открыть (Reset, например).
2. По моему, для типизированных файлов надо пользовать write, а не writeln.
3. По поводу последней ошибки - какая ошибка вылетает? Текст в студию.
Ответить с цитированием
  #3  
Старый 08.09.2008, 11:45
Аватар для _Baga_
_Baga_ _Baga_ вне форума
Прохожий
 
Регистрация: 28.08.2008
Сообщения: 12
Репутация: 10
По умолчанию 2-я ошибка

ComponentCount неизвестный идентификатор, так же Components[i]
Ответить с цитированием
  #4  
Старый 08.09.2008, 12:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

попробуй так:

Код:
  For I := 0 To Self.ComponentCount-1 Do
    If Self.Components[i] Is TEdit Then
      (Self.Components[i] As TEdit).Text := '';
Ответить с цитированием
  #5  
Старый 09.09.2008, 11:22
Аватар для _Baga_
_Baga_ _Baga_ вне форума
Прохожий
 
Регистрация: 28.08.2008
Сообщения: 12
Репутация: 10
Восклицание Ошибка

Код:
Код:
For I := 0 To Self.ComponentCount-1 Do 
           If Self.Components[i] Is TEdit Then 
             (Self.Components[i] As TEdit).Text := '';
Все равно выдает ошибку Undeclared Identificator Self.
Ответить с цитированием
  #6  
Старый 09.09.2008, 13:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ЧЕГО???

М-м-м... а может ты это делаешь не в форме (не в методе формы)?
Self дает ссылку на сам объект, которому принадлежит метод. Свойства ComponentCount и Components - это свойства формы. Проверь этот момент.

Ну или весь код в студию.
Ответить с цитированием
  #7  
Старый 09.09.2008, 15:39
Аватар для _Baga_
_Baga_ _Baga_ вне форума
Прохожий
 
Регистрация: 28.08.2008
Сообщения: 12
Репутация: 10
Вопрос Весь код

Код:
unit PWeigth;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, XPMan;

type
  TRepp = record
    FID: String[10];
    PSurname: String[30];
    PName: String[30];
    PPatronymic: String[30];
    Weight: Double;
    Deqt: String[50];
    FDate: TDateTime;
  end;
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Button1: TButton;
    BitBtn1: TBitBtn;
    XPManifest1: TXPManifest;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  n_file = 'C:\Program Files\Borland\Delphi7\Projects\RecPasFile.dat';

var
  Form1: TForm1;
  F: File Of TRepp;
  RD: Array[0..249] of TRepp;
  PCount,j,i: integer;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  begin
    AssignFile(F, n_file);
    Reset(F);
    Seek(F,FileSize(F));
    RD[j].FID := Edit1.Text;
    RD[j].PSurname := Edit2.Text;
    RD[j].PName := Edit3.Text;
    RD[j].PPatronymic := Edit4.Text;
    RD[j].Weight := StrToFloat(Edit5.Text);
    RD[j].Deqt := Edit6.Text;;
    RD[j].FDate := StrToDate(Edit7.Text);
    Write(F, RD[j]);
    CloseFile(F);
    j:=j + 1;
    PCount:=j;
    For I:=0 to Self.ComponentCount-1 do       ! Здесь выдает ошибку
      If Self.Components[i] Is TEdit then
        (Self.Components[i] As TEdit).Text:=’’;
  end;
end.
Ответить с цитированием
  #8  
Старый 10.09.2008, 18:38
Z@voorchik Z@voorchik вне форума
Прохожий
 
Регистрация: 07.09.2008
Сообщения: 15
Репутация: 10
По умолчанию

А если перед началом цикла сделать так:
comp := Self.ComponentCount-1 (объяви переменную comp как integer в начале процедуры),
а потом цикл:
For I:=0 to comp do
If Self.Components[i] Is TEdit then
(Self.Components[i] As TEdit).Text:=’’;

Может сработает...

Последний раз редактировалось Z@voorchik, 10.09.2008 в 18:40.
Ответить с цитированием
  #9  
Старый 10.09.2008, 19:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, мужик!
Ругается то на I!!!
Добавление выделено жирным.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var I :Integer;
  begin
    AssignFile(F, n_file);
    Reset(F);
    Seek(F,FileSize(F));
    RD[j].FID := Edit1.Text;
    RD[j].PSurname := Edit2.Text;
    RD[j].PName := Edit3.Text;
    RD[j].PPatronymic := Edit4.Text;
    RD[j].Weight := StrToFloat(Edit5.Text);
    RD[j].Deqt := Edit6.Text;;
    RD[j].FDate := StrToDate(Edit7.Text);
    Write(F, RD[j]);
    CloseFile(F);
    j:=j + 1;
    PCount:=j;
    For I:=0 to Self.ComponentCount-1 do       ! Здесь выдает ошибку
      If Self.Components[i] Is TEdit then
        (Self.Components[i] As TEdit).Text:=’’;
  end;
end.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:30.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025