|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TFileStream помогите
На форме 2 кнопки и Edit
Код:
procedure TForm1.Button1Click(Sender: TObject); var stream: TFileStream; w:string; begin w:=Edit1.Text; stream := TFileStream.Create('qwe.my', fmCreate); stream.Write(w,SizeOf(w)); Stream.Free; Edit1.Text:=''; end; procedure TForm1.Button2Click(Sender: TObject); var stream: TFileStream; w:string; begin stream := TFileStream.Create('qwe.my', fmOpenRead); stream.Read(w,SizeOf(w)); Stream.Free; Edit1.Text:=w; end; Почему не работает? После нажатия Button1, а потом Button2 он в Edit пихает 'qwe.my'... А если просто после запуска нажать Button2, то выходит ошибка, хотя qwe.my существует. Помогите разобраться пожалуйста. Последний раз редактировалось Admin, 04.03.2012 в 21:00. |
#2
|
||||
|
||||
Такие строчки радуют:
Код:
stream.Write(w,SizeOf(w)); stream.Read(w,SizeOf(w)); Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Спасибо вам, неизвестный, за то что насмехаетесь.
Цитата:
4 байта считываются, но не те. Код:
w:='text'; stream := TFileStream.Create('qwe.my', fmCreate); stream.Write(w,SizeOf(w)); Stream.Free; ....................................................... stream := TFileStream.Create('qwe.my', fmOpenRead); stream.Read(w,SizeOf(w)); Stream.Free; ShowMessage(w); и Код:
w:=Edit1.Text; stream := TFileStream.Create('qwe.my', fmCreate); stream.Write(w,SizeOf(w)); Stream.Free; ......................................... stream := TFileStream.Create('qwe.my', fmOpenRead); stream.Read(w,SizeOf(w)); Stream.Free; ShowMessage(w); Вот почему, верхняя работает нормально, а нижняя нет ^^ |
#4
|
||||
|
||||
Хм, интересно, где я насмехался? То что код корявый так и написал, насмешки тут не при чём.
Код:
Вот почему, верхняя работает нормально, а нижняя нет ^^ Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 04.03.2012 в 21:32. |
#5
|
|||
|
|||
2009
решение проблемы Код:
var stream: TFileStream; w:WideString; Цитата:
|
#6
|
|||
|
|||
Цитата:
Со строками работать надо подругому, бо как обычно SizeOf(String) <> Length(String). |
#7
|
|||
|
|||
Для строк нужна вот такая магия
Код:
W:String; L:Integer; w:=Edit1.Text; L:=Length(W); stream := TFileStream.Create('qwe.my', fmCreate); stream.Write(L,SizeOf(L));//<<==------- stream.write(W[1],L*Siseof(W[1]));//<<==------- Stream.Free; ......................................... stream := TFileStream.Create('qwe.my', fmOpenRead); stream.Read(L,SizeOf(L));//<<==------- SetLength(W,L);//<<==------- stream.Read(W[1],L*Siseof(W[1]));//<<==------- Stream.Free; ShowMessage(w); |