castorsky писал(а):Ясно. Дело в том, что я впервые использую паскаль. Не могли бы Вы на примере показать методы посимвольной/побайтной обратотки строк TEdit.Text, TMemo.Lines.GetText. Какие-то сетеры, геттеры Set()/Get(), etc, а то я что-то запутался с типами. Еще момент, я так и не понял индексация массивов идет с 0 или с 1.
При посимвольной обработке строк нужно учитывать, что строки в Lazarus - UTF8 и русские символы занимают несколько байт, поэтому, на мой взгляд, для посимвольной обработки проще преобразовать строку в однобайтную кодировку, например Win1251, затем после обработки преобразовывать обратно в UTF-8.
- Код: Выделить всё
uses LConvEncoding;
procedure TForm1.Button1Click(Sender: TObject);
var
S, AnsiS, C: string;
begin
S := 'Привет';
AnsiS := UTF8ToCP1251(S);
C := AnsiS[3];
Edit1.Text:= CP1251ToUTF8(C);
end;
Вам нужна литеретура, думаю весь курс паскаля объяснять будет сложно.
Экспресс курс программирования в Lazarus:
http://tuzik87.ru54.com/site/creative/L ... /book.htmlк сожалению курс не изобилует примерами....
В дополнение поищите литеретуру по Delphi, для него литературы больше.
Про Get/Set пока не заморачивайтесь, когда будете изучать раздел свойства классов там будет описание.
Статические массивы в паскале могут нумероваться с любого индекса, динамические только с 0. Не путайте со списками, списки всегда индексируются с 0.
- Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject);
var
AI: array [5..10] of Integer;
DI: array of Integer;
begin
AI[5] := 2121;
SetLength(DI, 10);
DI[0] := 3434;
DI[1] := 34343;
Edit2.Text:= IntToStr(DI[1]);
end;
В этом примере AI - статический массив, DI - динамический и его размерность задается в процессе работы программы, он буде нумероваться всегда с 0.