|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  две программы, один файл Господа... я с дурацким вопросом... Я создаю файл с записями. А дальше начинаются чудеса. Если открывать файл программой, которая его создавала, то при куску кода Код: 
i:=0;
Assignfile (Myfile, 'voprosiki.ggt');
reset(myfile);
while not Eof(myfile) do
    begin
       read(myfile,quest[i]);
       if quest[i].index<>0 then
       listbox1.Items.Add('Вопрос №'+IntToStr(quest[i].index));    //index - порядковый номер вопроса. Нулевой вопрос содержит инфу о тесте
       inc(i);
    end;В листбоксе появляется список из 5 вопросов. Следующего вида. Вопрос №1 Вопрос №2 Вопрос №3 Вопрос №4 Вопрос №5 Именно таким я его и создавал. Если открыть его второй программой, то при идентичном куске кода список пуст!!! т.е. если снять проверку на нулевой индекс, получится Вопрос №0 Вопрос №0 Вопрос №0 Вопрос №0 Вопрос №0 Вопрос №0 Далее чудеса продолжаются. Если второй прогой подредактировать файл (ответить на вопросы и дозаписать в этот файл ответы), то вторая прога будет отображать список из 10 пунктов, а первая прога выдаст точно такой же список, как и до редактирования!!! Поясните, пожалуйста... что ж такое-то ((( | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   В первой программе index меняется, во второй нет (всегда равен 0). И что за переменная "guest"? Какова ее роль? | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Несоответсвие процедур записи и чтения. Для анализа необходим полный код. Очень внимательно смотри что ты пишешь и что читаешь. | 
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|   поразбиравшись в проге я выяснил, что вот такой код Код: unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ListBox4: TListBox;
    ListBox5: TListBox;
    ListBox6: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  TQuestion = Record
    index:integer;
    tekst:string[255];
    right:string[255];
    wrong1:string[255];
    wrong2:string[255];
    wrong3:string[255];
  end;
var
  Form1: TForm1;
  quest: array of TQuestion;
  MyFile:file of TQuestion;
  count, maxcount:integer;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
count:=0;
Assignfile (Myfile, 'voprosiki.ggt');
reset(myfile);
SetLength(quest,2);
read(myfile,quest[0]);
maxcount:=StrToInt(quest[0].right);
SetLength(quest,maxcount+1);
reset(myfile);
while not Eof(myfile) do
begin
read(myfile,quest[count]);
listbox1.Items.Add(IntToStr(quest[count].index));
listbox2.Items.Add(quest[count].tekst);
listbox3.Items.Add(quest[count].right);
listbox4.Items.Add(quest[count].wrong1);
listbox5.Items.Add(quest[count].wrong2);
listbox6.Items.Add(quest[count].wrong3);
inc(count);
end;
end;
end.считывает файл верно. Однако если подобное считывание (от объявления типов, массивов и переменных до самого считывания) разместить на второй форме проекта, которая вызывается из основной посредствам Код: form2.showmodal То файл не считывается!... |