Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с потоком Найти похожие ветки
← →
chili (2005-07-26 16:59) [0]Добрый день...
Помогите разобраться с потоком
Делаю так:
type
nPointer = ^TNEWREC;
TNEWREC = record
test : byte;
test1 : string[60];
test3 : string[60];
end;
..
var
dList : TList;
Tester : nPointer;
stream : TFileStream;
procedure save();
begin
dList := TList.Create;
new(Tester);
with Tester^ do
begin
test := StrToInt(Edit1.Text);
test1 := Edit2.Text;
test2 := Edit3.Text;
end;
dList.add(Tester);
WriteToFile;
ReadFromFile;
end;
procedure WriteToFile();
var
i : integer;
begin
stream := TFileStream.Create("222.dat", fmCreate);
for i := 0 to dList.Count - 1 do
begin
Tester := nPointer(dList.Items[i]);
stream.WriteBuffer(Tester, SizeOf(TNEWREC));
end;
stream.free;
end;
{а считать из файла не получаеться :-( }
procedure ReadFromFile();
var
i : integer;
begin
try
stream := TFileStream.Create("222.dat", fmOpenRead);
except
Exit;
end;
new(Tester);
for i := 1 to stream.size do
begin
stream.ReadBuffer(Tester, SizeOf(TNEWREC));
dList.add(Tester);
end;
stream.free;
end;
← →
chili (2005-07-26 17:01) [1]Что я делаю неправильно?
← →
Reindeer Moss Eater © (2005-07-26 17:02) [2]{а считать из файла не получаеться :-( }
Получается.
Просто ты в файл пишешь не то, что хочешь.
← →
chili (2005-07-26 17:03) [3]а как написать то что я хочу???
← →
Reindeer Moss Eater © (2005-07-26 17:04) [4]Смотри в хелпе описание первого параметра у TStream.WriteBuffer
← →
chili (2005-07-26 17:12) [5]Почему тогда к примеру так все работает??
TRRRR = record
test1 : string[50];
test2 : string[50];
end;
var
RRR : TRRRR;
Stream: TFileStream;
procedure Write();
begin
Stream := TFileStream.Create("c:\test.dat", fmCreate);
RRR.test1 := "lala";
RRR.test1 := "lala";
Stream.WriteBuffer(RRR, SizeOf(TRRR));
Stream.Free;
end;
← →
Digitman © (2005-07-26 17:16) [6]
> chili (26.07.05 17:12) [5]
> Почему
потому что в этом случае 1-м параметром ты передаешь переменную НЕуказательного типа
← →
chili (2005-07-26 17:18) [7]это понятно, а как в моем случае передать переменную НЕуказательного типа?????
← →
chili (2005-07-26 17:20) [8]уже все попробывал но работать не хочет :((((
← →
Digitman © (2005-07-26 17:21) [9]
> chili (26.07.05 17:18) [7]
в каком случае ?)
ты этих "случаев" в теме уже изрядно наплодил)
а про Паскаль при том напрочь забыл)
если вообще знал)
← →
Digitman © (2005-07-26 17:22) [10]
> как в моем случае передать переменную НЕуказательного типа
разыменование применить ... "галку" влупить сразу же за именем идентификатора переменной указ.типа ... нонсенс разве ?
← →
chili (2005-07-26 17:27) [11]Digitman © (26.07.05 17:22) [10]
Спасибо что Вы не только много (не поделу) говорите :-)))
Еще раз спасибо..
← →
Digitman © (2005-07-26 17:29) [12]
> chili (26.07.05 17:27) [11]
носи не стаптывай
и помни при этом - к каким-то там твоим "потокам" ЭТО не имеет НИ малейшего отношения) ... ЭТО - чистой воды ПАСКАЛЬ.
как только ты это осознаешь, тебе будет божественное откровение))
← →
han_malign © (2005-07-26 17:37) [13]
for i := 1 to stream.size do
begin
stream.ReadBuffer(Tester, SizeOf(TNEWREC));
dList.add(Tester);
end;
- тогда уж либоfor i := 1 to stream.size div SizeOf(TNEWREC) do
либо
var Tester: TNEWREC;
pTester: nPointer;
begin
........
while stream.Read(Tester, SizeOf(TNEWREC)) = SizeOf(TNEWREC) do
begin
New(pTester);
pTester^ := Tester;
dList.add(pTester);
end;
........
← →
chili (2005-07-26 17:43) [14]han_malign © (26.07.05 17:37) [13]
Большое Вам спасибо, но я уже разобрался Digitman уже меня явно носом ткнул :))))
← →
han_malign © (2005-07-26 17:46) [15]Угу, а EReadError на stream.ReadBuffer(Tester, SizeOf(TNEWREC)) еще не словил?
← →
chili (2005-07-26 18:04) [16]ловил но исправил
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c