Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизTMemo Найти похожие ветки
← →
RedArc (2002-08-21 18:19) [0]У меня такая вот проблема. Я считал в TMemo некоторый файл. Пользователь его изменил прямо тут же в Memo. Как мне тепрь восстановить сей файл обратно?
Записать его методами TMemo невозможно, так как файл был двоичным и я при чтении каждого байта конвертировал его в строку.
В общем, решением проблемы может стать такой вот цикл:
for i := 0 to Memo1.Lines.Count - 1 do
for j := 1 to Lines[i].Length do
То есть мне нужно получить тектс в зависимости от имеющегося целочисленного индекса строки. Как это сделать?
← →
Андрей Прокофьев (2002-08-21 18:34) [1]Ничего не понял!
м.б.
S := Memo1.Lines.Text;
for i := 1 to Length(S) do
...
← →
RedArc (2002-08-21 19:12) [2]Да нет. Этих самых Lines в Memo может быть сколь угодно много. Мне нужен доступ к тексту в любой строке. То есть типа
Memo1.Lines[i].Text
Как получить такой доступ?
← →
Андрей Прокофьев (2002-08-21 19:15) [3]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:31) [4]Возникает ошибка компиляции...
Lines - есть указатель на список строк.
Мне нужен доступ к любой строке в Memo.
← →
Anatoly Podgoretsky (2002-08-21 19:32) [5]Ничего не понятно, начти с того, как загонял в Memo и посмотри в книге/хелпе тип string
← →
Андрей Прокофьев (2002-08-21 19:39) [6]Какая ошибка?!
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;
← →
RedArc (2002-08-21 19:55) [7]Загонял так:
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 20:01) [8]Да какая ошибка-то!!??
S := mbinaryField.Line[i];
← →
Anatoly Podgoretsky (2002-08-21 20:05) [9]Тебе нужны функция Copy и StrToInt, посмотрел в сравке про тип string? Чувствую что нет, string по сути является массивом символов.
Так что вперед в книги по Паскалю на предмет базовых типов и массивов.
← →
RedArc (2002-08-21 20:11) [10]Бог ты мой, какие могут быть отправки к стандартным типам?
Вопрос не в том, как работать со String, а в том, как получить доступ к переменной типа String по конкретному адресу в TMemo.
Конструкций типа Line[i] вызывает ошибку. Нет такого свойства в TMemo.
Можно получать хотя бы доступ к первой строке, а после этого её удалять. Но как это организовать?
← →
Андрей Прокофьев (2002-08-21 20:13) [11]>> Конструкций типа Line[i] вызывает ошибку. Нет такого свойства в TMemo.
memo1. Lines[i]
← →
RedArc (2002-08-21 21:21) [12]Спасибо всем! Кажется получилось!
Я таки нашёл способ получить ссылку на строку. Всё заработало.
Игорь
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c