[Delphi] Szkolne pytanie - działanie procedury

0

Mam dość szkolny choć bardzo istotny dla mnie problem. Mam procedurę:
procedure TSynEditPrint.CalcPages;
{Calculates the total number of pages.}
var
AStr, Text: string;
StrWidth, i: Integer;
j: Integer;
AList: TList;
YPos: Integer;
PageLine: TPageLine;

procedure CountWrapped;
//Counts the number of lines a line is wrapped to
var
j: Integer;
begin
for j := 0 to AList.Count - 1 do
YPos := YPos + FLineHeight;
end;

begin
InitRanges;
for i := 0 to FPages.Count - 1 do
TPageLine(FPages[i]).Free;
FPages.Clear;
FMaxWidth := FMargins.PRight - FMargins.PLeft;
AStr := '';
FMaxCol := 0;
while FCanvas.TextWidth(AStr) &lt FMaxWidth do begin
AStr := AStr + 'W';
FMaxCol := FMaxCol + 1;
end;
FMaxCol := FMaxCol - 1;

W żaden sposób nie mogę zrozumieć konstrukcji :

for j := 0 to AList.Count - 1 do
  YPos := YPos + FLineHeight;

Czego dotyczy zmienna Alist ? Przecież jest to zmienna wewnętrzna utworzona wewnątrz procedury i niczemu nie jest przypisana ?
Druga wątpliwość – na czym polega liczenie do wartości Alist.Count – skąd wiadomo jaka ta wartość jest ?
Podobnie się sprawa ma z wierszem

for i := 0 to FPages.Count - 1 do
TPageLine(FPages[i]).Free;

Przepraszam za lamerskie pytania , ale w żaden sposób przy pomocy literatury nie mogę tego rozgryźć. Będę szczerze zobowiązany za pomoc ponieważ sprawa jest dla mnie ważna.
{glowa} :[[ --Pzdr.
W.

0

gavi napisał:
W żaden sposób nie mogę zrozumieć konstrukcji :

for j := 0 to AList.Count - 1 do
  YPos := YPos + FLineHeight; 

To oblicza wysokość strony. Chociaż jeżeli FLineHeight się nie zmienia (a nie widać tego nigdzie tu to ja po prostu bym zrobił tak: YPos := YPos + AListCount*FLineHeight.

Czego dotyczy zmienna Alist ? Przecież jest to zmienna wewnętrzna utworzona wewnątrz procedury i niczemu nie jest przypisana ?

Cały problem polega na tym, że nie widać, żeby gdzieś była wywoływana procedura CountWrapped; Więc ciężko powiedzieć skąd to się bierze. Może skopiowałeś za mały fragment? Jak kompilujesz to przy tej procedurze pojawiają się kropki (tzn że kompilator nie opóścił tego)?

Podobnie się sprawa ma z wierszem

for i := 0 to FPages.Count - 1 do
TPageLine(FPages[i]).Free;

Ta pętla usuwa poszczególne strony obiektu FPages. Ze względu na nazewnictwo jest to prawdopodobnie prywatna właściowść komponentu TSynEditPrint.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Faktycznie, nieco dalej , w obrębie tej samej procedury CalcPages jest :
(...)
StrWidth := FCanvas.TextWidth(Text);
{Check for wrap}
if Wrap and (StrWidth &gt FMaxWidth) then begin
AList := TList.Create;
if WrapText(Text, [' ', '-', #9, ','], FMaxCol, AList) then
CountWrapped
else begin
(...)
Przegapiłem , że procedura CauntWrapped jest procedurą wewnętrzną CalcPages i w związku z tym parametry mogą być określone gdzieś w kodzie ,przed jej wywołaniem.
Wprwdzie dalej nie bardzo rozumiem zasadę jak to ticzy strony , ale jedno się wyjaśniło. Spróbuję podumać.
Very Thx.--Pzdr.
W.

1 użytkowników online, w tym zalogowanych: 0, gości: 1