Błędy kompilacji.

0

Witam,
Wyskakują mi błędy chyba natury składniowej ;p tylko nie wiem o co chodzi bo google odsyła do Rosji. Wszystkie tyczą się chyba tego samego ;p Ogólnie chodzi o ostatniego while i o to, że chcę sobie stringi pododawać ;D

[dcc32 Error] pp.pas(70): E2035 Not enough actual parameters
[dcc32 Warning] pp.pas(70): W1057 Implicit string cast from 'ShortString' to 'string'
[dcc32 Error] pp.pas(70): E2066 Missing operator or semicolon
[dcc32 Error] pp.pas(71): E2035 Not enough actual parameters
[dcc32 Warning] pp.pas(71): W1057 Implicit string cast from 'ShortString' to 'string'
[dcc32 Error] pp.pas(71): E2035 Not enough actual parameters
[dcc32 Warning] pp.pas(71): W1057 Implicit string cast from 'ShortString' to 'string'
procedure TForm1.Button1Click(Sender: TObject);
var
napi: String;
x: integer;
i: integer;
e: integer;
k: integer;
j: integer;
t: array of integer;
begin
x:=strtoint(Edit1.Text);
k:=floor(x/2+1);
j:=0;
while(j<k)do
begin
t[j]:=0;
j:=j+1;
end;
i:=2;
e:=floor(sqrt(x));
while i<=e do
begin
while (x mod i) = 0 do
begin
t[i]:=t[i]+1;
x := x div i;
e := floor(sqrt(x));
end;
i := i + 1;
end;
if x > 1 then t[x]:=t[x]+1;
j:=2;
while(j<k) do
begin
if t[i]=1 then napi:=napi+str(i)+'*'
else napi:=napi+str(i)+'^'+str(t[i])+'*';
end;
Edit2.Text:=napi;
end;
end.
0

Następny co formatowanie kodu uważa za stratę czasu... :/

procedure TForm1.Button1Click(Sender: TObject);
var
  napi: String;
  x, i, e, k, j: integer;
  t: array of integer;
begin
  x := StrToInt(Edit1.Text);
  k := Floor(x / 2 + 1);
  j := 0;

  while (j < k) do
  begin
    t[j] := 0;
    j := j + 1;
  end;

  i := 2;
  e := Floor(Sqrt(x));

  while i <= e do
  begin
    while (x mod i) = 0 do
    begin
      t[i]:=t[i]+1;
      x := x div i;
      e := floor(sqrt(x));
    end;
    i := i + 1;
  end;

  if x > 1 then
    t[x] := t[x] + 1;

  j := 2;

  while (j < k) do
  begin
    if t[i] = 1 then
      napi := napi + Str(i) + '*'
    else
      napi := napi + Str(i) + '^' + Str(t[i]) + '*';
  end;

  Edit2.Text:=napi;
end;

Debilne formatowanie to i debilne problemy;


Po pierwsze to zapoznaj się z dokumentacją procedur/fukcji, z których korzystasz bo widać, że niektórych nie znasz; Następnie naucz się obsługi debugger'a i szukania wyjaśnień błędów w Google;


Praktyka:

Delphi syntax:

procedure Str(X [: Width [: Decimals ]]; var S);

Description

In Delphi code, Str converts X to a string representation according to the Width and Decimals formatting parameters. The effect is like a call to Write except the resulting string is stored in S instead of being written to a text file.

X is an integer-type or real-type expression. Width and Decimals are integer-type expressions. S is a string-type variable or a zero-based character array variable if extended syntax is enabled.

Sprawdź u siebie w kodzie procedurę Str - jak widać w podanym opisie procedury jest jasno napisane, że przekonwertowana wartość liczbowa zwracana jest przez referencję do argumentu S, czego u Ciebie w kodzie nie widać; Musisz podać drugi argument, bo jak widać w deklaracji funkcji nie ma wartości domyślnej;

Poza tym śmierdzi mi tutaj AV, bo macierz t (pokłony za nazewnictwo identyfikatorów) jest dynamiczna, a nigdzie w ciele zdarzenia nie widać abyś ustalał jej jakikolwiek rozmiar, a w pętlach odwołujesz się do nieistniejących w niej elementów;

Może to i dobrze, że się nie kompiluje...

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