![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файлы Delphi [XP]
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]Можно.