Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Программа выдаёт ошибку "Record, object or class type required "   Найти похожие ветки 

 
Viktor198 ©   (2008-06-17 11:41) [0]

Подскажите пожалуйста. Вот код программы:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids, ComCtrls, DateUtils;

type
 TForm1 = class(TForm)
   Button1: TButton;
   StringGrid1: TStringGrid;
   OpenDialog1: TOpenDialog;
   ComboBox1: TComboBox;
   Label1: TLabel;
   DateTimePicker1: TDateTimePicker;
   DateTimePicker2: TDateTimePicker;
   Button3: TButton;
   Label2: TLabel;
   Label3: TLabel;
   ProgressBar1: TProgressBar;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure ComboBox1Enter(Sender: TObject);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
type code_http=record
data,time,process,command,traffic:string;
date:TDateTime;
end;

var
 Form1: TForm1;
 tabl:code_http;
 Words:TStringList;// Список процессов
 numb:integer;
 bool:boolean;
 summa:int64;
 year,Month,Day:Word;
 F:textfile;
implementation

{$R *.dfm}
{$R resfile.res}
Function GetWord(var S:string):string;
{ Вспомогательная функция для выделения очередного слова из строки }
const     // Множество символов слова:
Letters: set of Char = [chr(33)..chr(255)];
begin
Result:="";
// Удаляем в начале строки все символы, не относящиеся к слову
while  (S <> "")  and not (S[1]  in Letters) do Delete(S,1,1);
// Формируем очередное слово
while  (S <> "")  and (S[1] in Letters) do begin
Result:=Result + S[1];
Delete(S,1,1);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
label 2;
var i:integer;s1,s:string;
begin
// Готовим список Words:
Words:=TStringList.Create;
Words.Sorted:=True; // Сортируем строки
Words.Duplicates  := dupIgnore;
// С помощью стандартного диалогового окна получаем имя файла
if not(OpenDialog1.Execute) then begin
// Файл нельзя открыть:
ShowMessage("Невозможно открыть файл  " + OpenDialog1.FileName); Exit;
end
else begin
AssignFile(F,  OpenDialog1.FileName);
if fileexists(OpenDialog1.FileName) then begin
Reset(F);
repeat
2:readln(F,S);
s1:=GetWord(S);s1:=GetWord(S);s1:=GetWord(S);
if (copy(s1,3,1)="/")or(copy(s1,1,1)<>"[") then goto 2
else s1:=copy(s1,2,pos(":",s1)-2);
Words.Add(s1);
Words.Add("все процессы");
until EOF(F);
closefile(f);
end;end;
ComboBox1.Enabled:=true;
DateTimePicker1.Enabled:=true;
DateTimePicker2.Enabled:=true;
Button3.Enabled:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin bool:=false;
StringGrid1.Cells[0,0]:="Дата";
StringGrid1.Cells[1,0]:="Время";
StringGrid1.Cells[2,0]:="Процесс";
StringGrid1.Cells[3,0]:="Событие";
StringGrid1.Cells[4,0]:="Трафик";
end;

procedure TForm1.ComboBox1Enter(Sender: TObject);
var i:integer;
begin
if bool=false then begin
for i:=0 to Words.Count-1 do ComboBox1.Items.Add(Words[i]);
bool:=true;end;
end;

procedure TForm1.Button3Click(Sender: TObject);
label 1;
var i,j:integer;S,stroka:string;
N : Integer;
begin
StringGrid1.RowCount:=2;
StringGrid1.Cells[0,1]:="";
StringGrid1.Cells[1,1]:="";
StringGrid1.Cells[2,1]:="";
StringGrid1.Cells[3,1]:="";
StringGrid1.Cells[4,1]:="";
// Пытаемся открыть файл

if fileexists(OpenDialog1.FileName) then begin
summa:=0;
Screen.Cursor:=crHourGlass;

with TStringList.Create do
begin
LoadFromFile(OpenDialog1.FileName);
ProgressBar1.Max := Count;
ProgressBar1.Position := 0;
i := 1;
for N := 1 to Count do
begin
1:
ProgressBar1.Position := N;
// Выделяем из строки слова и заносим их в запись.
stroka:=GetWord(S);
Year:=strtoint(copy(stroka,1,pos("/",stroka)-1));
stroka:=copy(stroka,pos("/",stroka)+1,length(stroka)-pos("/",stroka));
Month:=strtoint(copy(stroka,1,pos("/",stroka)-1));
Day:=strtoint(copy(stroka,pos("/",stroka)+1,length(stroka)-pos("/",stroka)));
tabl.date:=EncodeDate(Year,Month,Day);
tabl.data:=FormatDateTime("dddddd",tabl.date);
{tabl.data:=DateToStr(tabl.date); }
tabl.time:=GetWord(S);
tabl.process:=GetWord(S);
if (copy(tabl.process,3,1)="/")or(copy(tabl.process,1,1)<>"[") then goto 1
else tabl.process:=copy(tabl.process,2,pos(":",tabl.process)-2);
Words.Add(tabl.process);
Words.Add("все процессы");
tabl.command:=GetWord(S);
tabl.traffic:=GetWord(S);
if not((copy(tabl.traffic,1,1)<>"f")) then goto 1;
if ((CompareDate(DateTimePicker1.Date,tabl.date)=0)or(CompareDate(DateTimePicker1.D ate,tabl.date)=-1))and
((CompareDate(DateTimePicker2.Date,tabl.date)=0)or(CompareDate(DateTimePicker2.D ate,tabl.date)=1))and
((ComboBox1.Items.Strings[ComboBox1.ItemIndex]=tabl.process)or(ComboBox1.Items.S trings[ComboBox1.ItemIndex]="все процессы"))
then begin
StringGrid1.Cells[0,i]:=tabl.data;
StringGrid1.Cells[1,i]:=tabl.time;
StringGrid1.Cells[2,i]:=tabl.process;
StringGrid1.Cells[3,i]:=tabl.command;
StringGrid1.Cells[4,i]:=tabl.traffic;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
summa:=summa+strtoint (tabl.traffic);
i := i + 1;

end;  
end;

numb:=i-1;
Screen.Cursor:=crDefault;

Screen.Cursor:=crDefault;
if i>1 then StringGrid1.RowCount:=StringGrid1.RowCount-1;
Label1.Visible:=true;
summa:=(summa div 1024) div 1024;
Label1.Caption:="Сумма: "+inttostr(summa)+" Мбайт";

end;

end.



 
Игорь Шевченко ©   (2008-06-17 11:42) [1]

5000 евро


 
TUserClass   (2008-06-17 11:42) [2]

Какая строка то ?


 
Viktor198 ©   (2008-06-17 11:47) [3]

ошибка на последней строке "end."


 
Palladin ©   (2008-06-17 11:48) [4]

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


 
Ega23 ©   (2008-06-17 11:49) [5]


> Viktor198 ©   (17.06.08 11:41)


Отладчиком-то пользоваться умеешь?


 
Palladin ©   (2008-06-17 11:51) [6]

отладчик неумеет искать ошибки времени компиляции


 
Anatoly Podgoretsky ©   (2008-06-17 11:55) [7]

> Viktor198  (17.06.2008 11:41:00)  [0]

А нафига нам столько кода?


 
Viktor198 ©   (2008-06-17 11:56) [8]

А может кто явную ошибку подскажет?


 
Anatoly Podgoretsky ©   (2008-06-17 12:02) [9]

> Viktor198  (17.06.2008 11:56:08)  [8]

Игорь Шевченко готов.


 
Игорь Шевченко ©   (2008-06-17 12:02) [10]

Исправил:

unit Unit1; interface uses Windows, Messages, Forms,
SysUtils, Variants, Classes, Graphics, Controls, Dialogs, StdCtrls,
Grids, ComCtrls, DateUtils; type
TForm1 = class(TForm) Button1: TButton; StringGrid1:
TStringGrid; OpenDialog1: TOpenDialog; ComboBox1:
TComboBox; Label1: TLabel; DateTimePicker1:
TDateTimePicker; DateTimePicker2: TDateTimePicker; Button3:
TButton; Label2: TLabel; Label3: TLabel; ProgressBar1:
TProgressBar; procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure ComboBox1Enter(
Sender: TObject); procedure Button3Click(Sender: TObject);
private public end; type code_http=record data,time,process,
command,traffic:string; date:TDateTime; end;
var Form1: TForm1; tabl:code_http; Words:TStringList;// Список процессов
numb:integer; bool:boolean; summa:int64; year,Month,Day:
Word; F:textfile; implementation
{$R *.dfm} {$R resfile.res} Function GetWord(var S:string):string;
{ Вспомогательная функция для выделения очередного слова из строки }
const     // Множество символов слова:
Letters: set of Char = [chr(33)..chr(255)]; begin
Result:=""; // Удаляем в начале строки все символы, не относящиеся к слову
while  (S <> "")  and not (S[1]  in Letters) do Delete(S,1,
1); // Формируем очередное слово
while  (S <> "")  and (S[1] in Letters) do begin Result:=Result + S[
1]; Delete(S,1,1); end; end; procedure TForm1.
Button1Click(Sender: TObject); label 2; var i:integer;s1,s:string;
begin // Готовим список Words:
Words:=TStringList.Create; Words.Sorted:=True; // Сортируем строки
Words.Duplicates  := dupIgnore; // С помощью стандартного диалогового окна
// получаем имя файла
if not(OpenDialog1.Execute) then begin // Файл нельзя открыть:
ShowMessage("Невозможно открыть файл  " + OpenDialog1.FileName); Exit;
end else begin AssignFile(F,  OpenDialog1.FileName); if fileexists(OpenDialog1.
FileName) then begin Reset(F); repeat 2:readln(F,S); s1:=GetWord(S)
;s1:=GetWord(S);s1:=GetWord(S); if (copy(s1,3,1)="/")or(copy(s1,1,1)
<>"[") then goto 2 else s1:=copy(s1,2,pos(":",s1)-2); Words.Add(s1);
Words.Add("все процессы"); until EOF(F); closefile(f); end;end; ComboBox1.
Enabled:=true; DateTimePicker1.Enabled:=true; DateTimePicker2.Enabled:=
true; Button3.Enabled:=true; end; procedure TForm1.FormCreate(
Sender: TObject); begin bool:=false; StringGrid1.Cells[0,0]:=
"Дата"; StringGrid1.Cells[1,0]:="Время"; StringGrid1.Cells[2,0]:="Процесс";
StringGrid1.Cells[3,0]:="Событие"; StringGrid1.Cells[4,0]:="Трафик"; end;
procedure TForm1.ComboBox1Enter(Sender: TObject); var i:integer; begin
if bool=false then begin for i:=0 to Words.Count-1 do ComboBox1.Items.
Add(Words[i]); bool:=true;end; end; procedure TForm1.Button3Click(Sender:
TObject); label 1; var i,j:integer;S,stroka:string; N : Integer; begin
StringGrid1.RowCount:=2; StringGrid1.Cells[0,1]:=""; StringGrid1.Cells[1,1]
:=""; StringGrid1.Cells[2,1]:=""; StringGrid1.Cells[3,1]:=""; StringGrid1.
Cells[4,1]:=""; // Пытаемся открыть файл
if fileexists(OpenDialog1.FileName) then begin summa:=0; Screen.Cursor
:=crHourGlass; with TStringList.Create do begin LoadFromFile(
OpenDialog1.FileName); ProgressBar1.Max := Count; ProgressBar1.Position
:= 0; i := 1; for N := 1 to Count do begin 1: ProgressBar1.Position := N;
// Выделяем из строки слова и заносим их в запись.
stroka:=GetWord(S); Year:=strtoint(copy(stroka,1,pos("/",stroka)-1));
stroka:=copy(stroka,pos("/",stroka)+1,length(stroka)-pos("/",stroka));
Month:=strtoint(copy(stroka,1,pos("/",stroka)-1)); Day:=strtoint(copy(
stroka,pos("/",stroka)+1,length(stroka)-pos("/",stroka))); tabl.date:=
EncodeDate(Year,Month,Day); tabl.data:=FormatDateTime("dddddd",tabl.date);
{tabl.data:=DateToStr(tabl.date); } tabl.time:=GetWord(S); tabl.process:=
GetWord(S); if (copy(tabl.process,3,1)="/")or(copy(tabl.process,1,1)<>
"[") then goto 1 else tabl.process:=copy(tabl.process,2,pos(":",tabl.
process)-2); Words.Add(tabl.process); Words.Add("все процессы"); tabl.
command:=GetWord(S); tabl.traffic:=GetWord(S); if not((copy(tabl.traffic,
1,1)<>"f")) then goto 1; if ((CompareDate(DateTimePicker1.Date,tabl.
date)=0)or(CompareDate(DateTimePicker1.D ate,tabl.date)=-1))and ((CompareDate
(DateTimePicker2.Date,tabl.date)=0)or(CompareDate(DateTimePicker2.Date,tabl.
date)=1))and ((ComboBox1.Items.Strings[ComboBox1.ItemIndex]=tabl.process
)or(ComboBox1.Items.S trings[ComboBox1.ItemIndex]="все процессы")) then
begin StringGrid1.Cells[0,i]:=tabl.data; StringGrid1.Cells[1,i]:=tabl.time;
StringGrid1.Cells[2,i]:=tabl.process; StringGrid1.Cells[3,i]:=tabl.command;
StringGrid1.Cells[4,i]:=tabl.traffic; StringGrid1.RowCount:=StringGrid1.
RowCount+1; summa:=summa+strtoint (tabl.traffic); i := i + 1; end; end;
numb:=i-1; Screen.Cursor:=crDefault; Screen.Cursor:=crDefault;
if i>1 then StringGrid1.RowCount:=StringGrid1.RowCount-1; Label1.Visible
:=true; summa:=(summa div 1024) div 1024; Label1.Caption:="Сумма: "+inttostr(
summa)+" Мбайт"; end; end.


 
Anatoly Podgoretsky ©   (2008-06-17 12:07) [11]


> Игорь Шевченко ©   (17.06.08 12:02) [10]

То есть весь код явная ошибка?


 
Игорь Шевченко ©   (2008-06-17 12:07) [12]

Anatoly Podgoretsky ©   (17.06.08 12:07) [11]

Ошибка автора исчезла


 
Viktor198 ©   (2008-06-17 12:10) [13]

Чё то исправленного не видно, наверно мастер исправлений ничего не рубит в Delphi, в прочем как и я.


 
Anatoly Podgoretsky ©   (2008-06-17 12:13) [14]

Игорь марш на учебу и не пропускай занятия.


 
Игорь Шевченко ©   (2008-06-17 12:19) [15]


> Чё то исправленного не видно


че 5000 евро тоже не видно


 
Viktor198 ©   (2008-06-17 12:24) [16]

Дак и нефиг когда выпендриваться "Игорь Шевченко ©   (17.06.08 12:02) [10]

Исправил:..."


 
Viktor198 ©   (2008-06-17 12:24) [17]

Удалено модератором
Примечание: Дубль


 
Anatoly Podgoretsky ©   (2008-06-17 12:35) [18]

Все равно деньги вперед.


 
ЮЮ ©   (2008-06-17 12:55) [19]

> Программа выдаёт ошибку &laquo;Record, object or class type required
> &raquo;

Обращайся в службу поддержки Borland. А то взяли моду сырые продукты на рынок выбрасывать !!!

Там еще
  Unit1.pas(ххх): ";" expected but "." found
пишет

поставь пару

end;
end;


перед

end.


и программа Delphi будет работать без ошибок :)
Правда твоя без ошибок сможет работать тогда, когда ты end-ы поставишь в нужное место, которое бе форматирования определить сможешь тольк ты.



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.02 c
1-1192341690
3Lander
2007-10-14 10:01
2008.07.20
Как вставить справку в прогу


15-1212343059
Style
2008-06-01 21:57
2008.07.20
Помогите пожалуйста


15-1212725937
vajo
2008-06-06 08:18
2008.07.20
Екатеринбуржцы, помогите.


2-1213768672
lewka-serdceed
2008-06-18 09:57
2008.07.20
Открытие файла


2-1214204601
lewka-serdceed
2008-06-23 11:03
2008.07.20
Дополнительеая информация о файле