Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 15:09   #11
Garmon
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 47
По умолчанию

Код:
unit Main;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TMyClass=class
   private
     markauto:string;
  end;
  TVec=array of TmyClass;
var
  Form1: TForm1;
  Fnew:TextFile;
  Fname:string;
implementation

{$R *.dfm}


procedure TForm1.BitBtn1Click(Sender: TObject);
var

Vec:Tvec;
i,j:integer;st:string;
begin
OpenDialog1.Execute;
AssignFile(FNew,OpenDialog1.Filename);
Reset(FNew);
i:=1;j:=1;

Readln(Fnew,st);
SetLength(vec,500);
Vec[i].markauto:=copy(st,1,26);
StringGrid1.Cells[1,1]:=Vec[i].markauto;

CloseFile(fnew);
end;

end.
Из файла записываю в динамический массив строку и вывожу в стринггриде,но пишет ошибку в файле проэкта
Код:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.//сдесь ошибка
Garmon вне форума Ответить с цитированием
Старый 12.11.2011, 18:09   #12
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Зачем Вы используете классы, если не умеете с ними обращаться?

Чтобы использовать объект касса его надо сперва создать, а после использования удалить.
Код:
vec[i] := tmyclass.create; // создадим
Vec[i].markauto:=copy(st,1,26);
...
vec[i].free; // уничтожим
Ещё, на всякий, замечу, что дин.массивы индексируются от 0, а у Вас от 1
phomm вне форума Ответить с цитированием
Старый 12.11.2011, 19:22   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

phomm, АБСОЛЮТНО ПРАВ!

в качестве альтернативы предлагаю Вам выкинуть НАПРОЧЬ свой TVec вместе с TmyClass
и использовать что-то вроде:
Код:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  TS : TStringList;
   i   : integer;
begin
  if  Not  OpenDialog1.Execute then Exit;
  TS := TStringList.Create;
  try
    TS.LoadFromFile(OpenDialog1.Filename); 

    {мне непонятно, куда Вы ходите всё это загрузить,
        поэтому гружу всё тупо в 1-й столбец Грида!}  
    StringGrid1.FixedRows := 0;
    StringGrid1.FixedCols := 0;
    StringGrid1.RowCount := TS.Count;
    StringGrid1.ColCount := 1;

    for i:=0 to  TS.Count-1 do 
      StringGrid1.Cells[0,i]:=copy(TS.Strings[i],1,26);
  finally
     FreeAndNil(TS);
  end;

end;
p.s. разумеется, писал весь код я прямо тут, в браузере, поэтому возможны опечатки и неточности...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.11.2011, 19:54   #14
Garmon
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 47
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Зачем Вы используете классы, если не умеете с ними обращаться?[/CODE]
Ещё, на всякий, замечу, что дин.массивы индексируются от 0, а у Вас от 1
Задание такое.В своей программе должин быть минимум собственный класс.В универе ни черта не обьясняют,получаеться сам разбираюсь.,лажу по форумам,читаю и тд.Спасибо

Последний раз редактировалось mihali4; 12.11.2011 в 20:25.
Garmon вне форума Ответить с цитированием
Старый 12.11.2011, 20:26   #15
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Учебная программа.
Переезжает к студентам.
mihali4 вне форума Ответить с цитированием
Старый 13.11.2011, 16:23   #16
Garmon
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 47
По умолчанию

Код:
unit Main;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TMyClass=class
   private
     markauto:string[26];
     maxspeed:word;
  end;
  TVec=array of TmyClass;
var
  Form1: TForm1;
  Fnew:TextFile;
  Fname:string;
  Vec:Tvec;
implementation

{$R *.dfm}


procedure TForm1.BitBtn1Click(Sender: TObject);
var

i:integer;st:string;
begin
OpenDialog1.Execute;
AssignFile(FNew,OpenDialog1.Filename);
Reset(FNew);
i:=0;
StringGrid1.Cells[0,0]:='Ìàðêà Àâòîìîáèëÿ';
StringGrid1.Cells[1,0]:='Ìàêñèìàëüíàÿ ñêîðîñòü â [êì/÷àñ]';
StringGrid1.Cells[2,0]:='Ðàçãîí äî 100 [êì/÷àñ] â [ñåê]';
StringGrid1.Cells[3,0]:='Ðàñõîä òîïëèâà íà 100[êì] â [ëèòð]';
StringGrid1.Cells[4,0]:='Ãèäðî óñèëèòåëü ðóëÿ';
StringGrid1.Cells[5,0]:='Îáúåì áàãàæíèêà [ë]';
StringGrid1.Cells[6,0]:='Òèï ïðèâîäà';
While not EOF(Fnew) do begin
StringGrid1.RowCount:=i+1;
Readln(Fnew,st);
SetLength(vec,i+1);
Vec[i]:=TMyClass.Create;
Vec[i].markauto:=copy(st,1,26);
StringGrid1.Cells[0,i+1]:=Vec[i].markauto;
vec[i].Free;
inc(i);
end;
CloseFile(fnew);
end;

end.
Из файла прочитал в массив Марку авто,теперь нужно считать все остальное,но не могу вобще придумать алгоритм,как его реализовать.Помогите!Файл имеет вид:
Opel Omega 2.0 160 10.3 10 да 59.7 F
Opel Omega 2.016 160 9.4 15 нет 60.1 B
Opel Omega 2.5 TD 170 7.2 13 да 80.4 F
Opel Omega 2.5 V6 170 8.4 11 да 74.6 B
Opel Omega Caravan 2.0 150 9.5 18 да 70.5 B
Opel Omega Caravan 2.016V 155 8.9 25 да 14.1 B
Opel Omega Caravan 2.5 TD 160 7.9 10 нет 34.6 F
Opel Omega Caravan 2.5 V6 170 11.0 9 нет 38.9 F

В файле все ровно,это тут его сдвинуло
Garmon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из текстового файла Form_13 Помощь студентам 0 01.11.2011 03:16
Чтение из текстового файла soirkar Visual C++ 6 22.06.2011 16:58
чтение с текстового файла salwator Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2011 15:49
Чтение из текстового файла MooNChilDUA Общие вопросы C/C++ 2 13.01.2011 19:25
Чтение фрагмента файла в динамический массив. ZeroCool. Общие вопросы Delphi 2 02.11.2007 08:14