![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 То файл не считывается!... |