Страница 1 из 1

Проблемы с типом TStringList

СообщениеДобавлено: 18.06.2010 12:14:08
PapaNT
Компилю код (fpc224 под виндой).
Получаю ошибку на последней строчке кода: MY_STR.PAS(xxx,yy) Error: Argument can't be assigned to

Код: Выделить всё
Function  GetParamSL(SL : TStringList;Param : Shortstring) : ShortString;
Var
  ii : integer;
begin
  for ii := 0 to SL.Count - 1 do
    begin
      MyProcedure(SL.Strings[ii]);

Куда рыть?

Re: Проблемы с типом TStringList

СообщениеДобавлено: 18.06.2010 12:24:23
Brainenjii
Ошибка где-то ещё:
Код: Выделить всё
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

{$R *.res}

Procedure MyProcedure(Const aString: String);
Begin
  WriteLn(aString);
End;

Function GetParamSL(SL: TStringList; Param: ShortString): ShortString;
Var
  ii: Integer;
Begin
  For ii := 0 To SL.Count - 1 Do
    Begin
      MyProcedure(SL.Strings[ii]);
    End;
End;

Var
  aStrings: TStringList;

begin
  aStrings := TStringList.Create;
  aStrings.Add('Hello');
  aStrings.Add('world');
  GetParamSL(aStrings, '');
End.

Отрабатывает ожидаемо ^_^

Re: Проблемы с типом TStringList

СообщениеДобавлено: 18.06.2010 12:53:02
PapaNT
Спасибо!

Странная ошибка в автоприведении типов.
MyProcedure была объявлена входящим парамтром типа ShortString.

Сработала конструкция:
Код: Выделить всё
Procedure MyProcedure(Var s : ShortString);
begin
//Код процедуры
end;
Function  GetParamSL(SL : TStringList;Param : Shortstring) : ShortString;
Var
  ii : integer;
  st : ShortString;
begin
  for ii := 0 to SL.Count - 1 do
    begin
      st := SL.Strings[ii];
      MyProcedure(st);
      SL.Strings[ii] := st;

Re: Проблемы с типом TStringList

СообщениеДобавлено: 21.06.2010 11:48:30
Light13
Brainenjii писал(а):Procedure MyProcedure(Const aString: String);
Отрабатывает ожидаемо ^_^


PapaNT писал(а):Procedure MyProcedure(Var s : ShortString)


ключевые слова const и var

property не может быть использовано в вызовах подпрограмм с возвращением результата