Главная страница
    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.044 c
15-1212473791
Tornado
2008-06-03 10:16
2008.07.20
Разрешить доступ


2-1213793347
Dmitry1987
2008-06-18 16:49
2008.07.20
Извлечь значение


1-1195486930
dreamse
2007-11-19 18:42
2008.07.20
Как запретить завершать свой приложение?


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


2-1213613675
EgorovAlex
2008-06-16 14:54
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский