![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TMemo [D1, D2, D3, D4, D5, Win95/98, WinME, NT4, Win2k]
RedArc © (2002-08-21 18:19:00)У меня такая вот проблема. Я считал в TMemo некоторый файл. Пользователь его изменил прямо тут же в Memo. Как мне тепрь восстановить сей файл обратно?
Записать его методами TMemo невозможно, так как файл был двоичным и я при чтении каждого байта конвертировал его в строку.
В общем, решением проблемы может стать такой вот цикл:
for i := 0 to Memo1.Lines.Count - 1 do
for j := 1 to Lines[i].Length do
То есть мне нужно получить тектс в зависимости от имеющегося целочисленного индекса строки. Как это сделать?
RedArc (2002-08-21 21:21:00) [1]Спасибо всем! Кажется получилось!
Я таки нашёл способ получить ссылку на строку. Всё заработало.
Игорь
Андрей Прокофьев (2002-08-21 20:13:00) [2]>> Конструкций типа Line[i] вызывает ошибку. Нет такого свойства в TMemo.
memo1. Lines[i]
RedArc (2002-08-21 20:11:00) [3]Бог ты мой, какие могут быть отправки к стандартным типам?
Вопрос не в том, как работать со String, а в том, как получить доступ к переменной типа String по конкретному адресу в TMemo.
Конструкций типа Line[i] вызывает ошибку. Нет такого свойства в TMemo.
Можно получать хотя бы доступ к первой строке, а после этого её удалять. Но как это организовать?
Anatoly Podgoretsky (2002-08-21 20:05:00) [4]Тебе нужны функция Copy и StrToInt, посмотрел в сравке про тип string? Чувствую что нет, string по сути является массивом символов.
Так что вперед в книги по Паскалю на предмет базовых типов и массивов.
Андрей Прокофьев (2002-08-21 20:01:00) [5]Да какая ошибка-то!!??
S := mbinaryField.Line[i];
RedArc (2002-08-21 19:55:00) [6]Загонял так:
procedure TfBinaryEdit.LoadInMemo;
const
MaxSize = 22;
var
BSize, ASize : Integer;
P : PByte;
S, S1 : String;
i, j : integer;
B : Byte;
begin
Screen.Cursor := crHourGlass;
with SimproRegFile.CurrentS^.Fields.Current^.Field, FieldBin do begin
if FieldBin.FieldSize > MaxSize then ASize := MaxSize else ASize := FieldBin.FieldSize;
BSize := 0;
P := FieldBin.FieldPoint;
while BSize < FieldBin.FieldSize do begin
S := "";
for i := 1 to ASize do begin
B := P^;
S1 := Integer2Hex(B);
if Length (S1) = 1 then S1 := "0" + S1;
S := S + S1 + " ";
Inc (P);
end;
SetLength (S, Length(S) - 1);
mBinaryField.Lines.Add(S);
Inc (BSize, ASize);
if BSize + ASize > FieldBin.FieldSize then ASize := FieldBin.FieldSize - BSize;
end;
end;
Screen.Cursor := crDefault;
end;
Теперь нужно из Memo каждую строку конвертировать обратно в Binary. Вот тут и возникл задниц. Я никак не могу получить доступ к i-ой строке в TMemo. Всё время возникает ошибка компиляции. Очень надо...
Андрей Прокофьев (2002-08-21 19:39:00) [7]Какая ошибка?!
procedure TForm1.Button1Click(Sender: TObject);
var i, j : Integer;
C : Char;
begin
for i := 0 to Memo1.Lines.Count - 1 do
for j := 1 to Length(Memo1.Lines[i]) do
C := Memo1.Lines[i][j];
end;
Anatoly Podgoretsky (2002-08-21 19:32:00) [8]Ничего не понятно, начти с того, как загонял в Memo и посмотри в книге/хелпе тип string
RedArc (2002-08-21 19:31:00) [9]Возникает ошибка компиляции...
Lines - есть указатель на список строк.
Мне нужен доступ к любой строке в Memo.
Андрей Прокофьев (2002-08-21 19:15:00) [10]Memo1.Lines[n] - это и энная есть строка Memo
for i := 0 to Memo1.Lines.Count - 1 do
for j := 1 to Length(Memo1.Lines[i]) do
RedArc (2002-08-21 19:12:00) [11]Да нет. Этих самых Lines в Memo может быть сколь угодно много. Мне нужен доступ к тексту в любой строке. То есть типа
Memo1.Lines[i].Text
Как получить такой доступ?
Андрей Прокофьев (2002-08-21 18:34:00) [12]Ничего не понял!
м.б.
S := Memo1.Lines.Text;
for i := 1 to Length(S) do
...