Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];

Вниз

Программа выдаёт ошибку "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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.042 c
15-1212432475
@!!ex
2008-06-02 22:47
2008.07.20
Нужен хост под SVN.


3-1202888164
Olegus
2008-02-13 10:36
2008.07.20
поле типа блоб


15-1212563337
Kolan
2008-06-04 11:08
2008.07.20
Есть подозрение, что найдено средство от зависания отладки...


1-1195656625
GIo
2007-11-21 17:50
2008.07.20
Помогите разобраться


8-1182769628
DV
2007-06-25 15:07
2008.07.20
перечисление пинов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский