Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.05.2014, 14:53
vankai14 vankai14 вне форума
Прохожий
 
Регистрация: 15.04.2014
Сообщения: 24
Версия Delphi: delphi 7
Репутация: 10
По умолчанию ошибка при компиляции

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

[dcc32 Error] Unit1.pas(86): E2066 Missing operator or semicolon

ругается именно на CloseFile(f);
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x16,x161:byte; toEdit2:string;

begin    randomize;
AssignFile(f, 'key.txt');
rewrite(f);

Edit2.Text:='';
for i:=0 to 9 do
    begin
    key[i]:=random(255);
    writeln(f, key[i]);
    //отображение ключа в 16-ричной системе ->
    x16:=key[i] div 16;
    x161:=key[i] mod 16;
    if (x16 < 10) then toEdit2:=inttostr(x16)
    else case x16 of
         10: toedit2:='A';
         11: toedit2:='B';
         12: toedit2:='C';
         13: toedit2:='D';
         14: toedit2:='E';
         15: toedit2:='F';
         end;
    if (x161 < 10) then toEdit2:=toedit2 + inttostr(x161)
    else case x161 of
         10: toedit2:=toedit2 + 'A';
         11: toedit2:=toedit2 + 'B';
         12: toedit2:=toedit2 + 'C';
         13: toedit2:=toedit2 + 'D';
         14: toedit2:=toedit2 + 'E';
         15: toedit2:=toedit2 + 'F';
         end;
    Edit2.Text:=Edit2.Text + '$' + toedit2 + ' ';

    end;   // <- отображение ключа в 16-ричной системе
 closefile(f);
end;
Админ: не забываем про оформление кода, иначе последуют санкции!

Последний раз редактировалось Admin, 21.05.2014 в 19:30.
Ответить с цитированием
  #2  
Старый 21.05.2014, 16:02
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

У вас много концов и мало бегинов, и пжлст, пока ни кто не видел оформите ваш код в тег [СОDE]...[/СОDE]

З.Ы. Только что проверил - код работает

Последний раз редактировалось Alegun, 21.05.2014 в 16:24.
Ответить с цитированием
  #3  
Старый 21.05.2014, 22:06
vankai14 vankai14 вне форума
Прохожий
 
Регистрация: 15.04.2014
Сообщения: 24
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
У вас много концов и мало бегинов, и пжлст, пока ни кто не видел оформите ваш код в тег [СОDE]...[/СОDE]

З.Ы. Только что проверил - код работает


2 бегина, 2 case и 4 енда. всё как надо.......
Ответить с цитированием
  #4  
Старый 21.05.2014, 22:18
vankai14 vankai14 вне форума
Прохожий
 
Регистрация: 15.04.2014
Сообщения: 24
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
У вас много концов и мало бегинов, и пжлст, пока ни кто не видел оформите ваш код в тег [СОDE]...[/СОDE]

З.Ы. Только что проверил - код работает


удалил CloseFile(f)
и компилируется теперь, но в файл не записывается. при попытке сгенировать повторно: ошибка i/o error 32
Ответить с цитированием
  #5  
Старый 22.05.2014, 00:30
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Верните всё на место и перенесите в локальную var секцию данной процедуры вот это
Код:
...
var
 i: byte;
 f: TextFile;
 key: array[0..9] of byte;
...
Ответить с цитированием
  #6  
Старый 22.05.2014, 01:44
vankai14 vankai14 вне форума
Прохожий
 
Регистрация: 15.04.2014
Сообщения: 24
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Верните всё на место и перенесите в локальную var секцию данной процедуры вот это
Код:
...
var
 i: byte;
 f: TextFile;
 key: array[0..9] of byte;
...


Спасибо, воспользовался TFileStream.

Дальше в проге ошибка в другом месте. Хочу прочитать файл до конца так что бы если файл не кратен 8 байтам, остальные байты обнулялись. пишу цикл

Код:
sizefile8:=filesize(OpenFile) div 8 + 1;
for ifile:= 0 to sizefile8 do    //ОШИБКА ТУТ
begin //1 
if ifile<sizefile8 then
for round:=0 to 7 do
  begin //2
   BlockRead(OpenFile,buf8,1);
   b8in[round]:=buf8;
  end    //2

else begin  //4
     round:=filesize(openfile)-(sizefile8*8);
     for s:=0 to round do
         begin  //3
         BlockRead(OpenFile,buf8,1);
         b8in[s]:=buf8;
         end;  //3
     for s:=s to 7 do
       begin
       BlockRead(OpenFile,buf8,1);
         b8in[s]:=buf8;
       end;
       end; //4
.............................
............................
...........................
end; //1


и при компиляции ошибка

[dcc32 Error] Unit1.pas(121): E2032 For loop control variable must have ordinal type
Ответить с цитированием
  #7  
Старый 22.05.2014, 07:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
FileStream хорош именно для обработки файлов - разрезать/слить, что-то ещё добавить или поменять в нём местами, для просто считывания блоков данных, тем более текстовых, использовать данный класс не совсем рационально (есно имхо), это равносильно как в ворде записки односложные баттонить - возможностей навалом, а используется лишь мелочевка

И обычным способом можно отслеживая указатель EOF, в данном случае это filesize(f), только нужно проверять оставшиеся до конца файла байты - если их больше размера блока то считываем его полностью, а если меньше то добираем остаток побайтно, а оставшееся не трудно заполнить и нулями
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter