Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы Delphi [XP]


Страницы:   1 2 3

Tatb9na ©   (2008-12-15 01:06:00) 

добрый вечер!
помогите начинающему!
ниже задание (все сделано), осталось реалтзовать проверку при открытие файла на нходящиеся в нем данные. типа данные д.б. только числовые и также при сохранении.
Приложение должно выводить на экран значения всех компонентов выбранного пользователем файла, а также вычислять и выводить на экран одну из следующих характеристик:
• количество чисел в файле;
• среднее арифметическое этих чисел;
• количество положительных чисел;
• количество четных чисел;
• максимальное значение.
Выбор файла должен осуществляться с помощью стандартного окна диалога.
Выбор характеристики должен осуществляться с помощью списка.


Palladin   (2008-12-15 15:47:00) [21]

даже переписать код нормально не можешь, давай внимательней в следующий раз

и не с 1, а с 0, что за дела вообще?


Palladin   (2008-12-15 15:46:00) [22]


> for i:=1 to f7.Size-1 do s:=s+'#' + inttostr(byte(p[i]));

ясен пень ничего казать не будет, может внимательней будешь код воспроизводить?


Tatb9na   (2008-12-15 15:44:00) [23]

может что-то неправильно делаю я ?


Tatb9na   (2008-12-15 15:43:00) [24]

procedure TForm1.Button2Click(Sender: TObject);
var ir: array [1..10000] of integer;
i,id,m,mm,err,k,zn:integer;
ss,sss:string;
sum,w:real;
f7:tmemorystream;
p:pchar;
begin
i:=1;
f7:=tmemorystream.Create;
try
f7.LoadFromFile(od.FileName);
p:=f7.Memory;
ss:='';
for i:=1 to f7.Size-1 do
s:=s+'#' + inttostr(byte(p[i]));
finally
f7.Free;
end;
showmessage(ss);

{AssignFile(g,OD.FileName);
reset(f);    try
while not  eof(f)   do

       begin
                 read(f,sss);
              //   showmessage(sss);
                id:=strtoint(sss);
                ir[i]:=id; inc(id);
//if TryStrToInt(sss, id) then    begin
//ir[i] := id;      
end
//else
              except on Exception : EConvertError do
                begin
                showmessage('Íå êîððåêòíûé ôàéë!');
                 exit;
                 
          end;        end;
  CloseFile(f);  }    
   m:=i;
   k:=0;
   if cbdeistv.ItemIndex=-1 then     showmessage('âûáåðèòå äåéñòâèå')
   else
 case CBDeistv.ItemIndex    of
 0: begin
       for i:=1 to m do
         begin
          k:=k+1;
          end;
        str((k-1),ss);
      showmessage('êîëè÷åñòâî ÷èñåë  ' + ss);
     end;  
 1:   begin
      sum := 0;
      for i:=1 to m do
         begin
         k:=k+1;
         sum:=sum+ir[i];
         end;
        str((sum/k):4:2,ss);
      showmessage('ñðåäíåå àðèôìåò  ' + ss);
     end;
 2:  begin
      for i:=1 to m do
         begin
         if ir[i]>0 then
         k:=k+1;
          end;
        str(k,ss);
      showmessage('êîëè÷åñòâî ïîëîæèò  ' + ss);
     end;
 3:  begin
      for i:=1 to m do
         begin
           zn:=ir[i];
           if (zn mod 2 = 0) then
                     begin
                            k:=k+1;
                     end;
          end;
        str((k-1),ss);
      showmessage('êîëè÷åñòâî ÷åòíûõ  ' + ss);
     end;
4:begin
     zn:=ir[1];
      for i:=1 to m do
         begin
            if ir[i] > zn then
                     begin
                            zn:= ir[i];
                     end;
          end;
        str(zn,ss);
      showmessage('max ýëåìåíò  ' + ss);
     end;
    end;
 end;

end.


Tatb9na   (2008-12-15 15:43:00) [25]

ничего не кажет, теперь не считает все остальное. чорт!!!


Сергей М.   (2008-12-15 15:41:00) [26]


> Tatb9na ©   (15.12.08 15:28) [33]


А у меня работает.
Что я делаю неправильно ?


Palladin   (2008-12-15 15:33:00) [27]

Var
 f:TMemoryStream;
 p:PChar;
 s:String;
 i:Integer;

Begin
 f:=TMemoryStream.Create;
 Try
  f.LoadFromFile(имя файла);
  p:=f.Memory;
  s:='';
  For i:=0 to f.Size-1 Do
   s:=s+'#'+IntToStr(Byte(p[i]));
 Finally
  f.Free;
 End;
 ShowMessage(s);
End;


что кажет?


Tatb9na   (2008-12-15 15:28:00) [28]

не фига не работает. даже если в файле одни цифры. не корректный файл и все тут.
тип переменной f - textfile


Сергей М.   (2008-12-15 15:00:00) [29]


> половину наворотов еще под висту не пашет. вот


Не надо нести отсебячину.
В задании нет ни слова ни про Висту, ни про "навороты", ни про "пахоту".
Делай в точности то что сказал препод.
Вот.


Сергей М.   (2008-12-15 14:57:00) [30]


> не волшебник


Да-да, ты волшебни ца)

"Итак, она звалась Tatb9nой" (c) АС

)

var
id: Integer;
..
while not  eof(f)  do
 try
   read(f,id);
...
 except
   ShowMessage('Хреновый файл !');
 end;


Tatb9na   (2008-12-15 14:47:00) [31]

я не волшебник, как ВЫ все- я только учусь. и у меня половину наворотов еще под висту не пашет. вот :(


Palladin   (2008-12-15 14:45:00) [32]

Какого типа f ?


Сергей М.   (2008-12-15 14:40:00) [33]

А посмотреть реальноесодержимое переменной sss передвыполнением try не судьба ? Или коран не позволяет ?


Tatb9na   (2008-12-15 14:38:00) [34]

даже если там только цифры


Palladin   (2008-12-15 14:37:00) [35]

ну ясен пень, у тебя же это в цикле


Tatb9na   (2008-12-15 14:35:00) [36]

зацикливается на открытие файла. типа данные ошибочны, данные ошибочны и т.д.


Tatb9na   (2008-12-15 14:33:00) [37]

вот блин тормоз


Сергей М.   (2008-12-15 14:29:00) [38]

except
onEConvertError do


Tatb9na   (2008-12-15 14:27:00) [39]

блин не получается ничего.
[Error] Unit1.pas(130): Statement expected, but expression of type 'Class reference' found
begin
i:=1;
AssignFile(g,OD.FileName);
reset(f);  
while not  eof(f)   do
       begin
       read(f,sss);
         try
                 id:=strtoint(sss);
                 ir[i]:=id;
                 inc(id);
          except EConvertError do
                 showmessage('данные ошибочны');
          end;


Сергей М.   (2008-12-15 14:17:00) [40]

Можно.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо