![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
На форме 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)); Цитата:
|
|
#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
|
||||
|
||||
|
Хм, интересно, где я насмехался? То что код корявый так и написал, насмешки тут не при чём.
Код:
Вот почему, верхняя работает нормально, а нижняя нет ^^ Последний раз редактировалось 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); |