Страница 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 и
varproperty не может быть использовано в вызовах подпрограмм с возвращением результата