Hallo,
der Is Opperator macht bei mir in einer Procedur seltsame Dinge .
Er meldet Value is TStrings = true obwohl ich ein TMemoField übergebe.
Die aufrufende Prozedur der aufrufenden Prozedur der Prozedur mit dem Problem.
Delphi-Quellcode:
procedure TSD_Ressourcengruppen.RecalcList;
var
OldC: TCursor;
begin
OldC := Screen.Cursor;
Screen.Cursor := crHourglass;
try
with T_RGIT
do
begin
First;
while not EOF
do
begin
Delete;
Refresh;
First;
end;
end;
with CalcQuery
do
begin
Close;
SQL.Assign(T_Data.FieldByName('
SQL_'));
/// <<<<<<<<<<< Das ist der Aufruf
if SQL.Count = 0
then
begin
raise Exception.Create(
{$IFDEF TRANSLATION}TransLateString
{$ENDIF}('
Die Liste konnte nicht berechnet werden, da keine Auswahl vorhanden ist'));
end;
Open;
First;
while not EOF
do
begin
with T_RGIT
do
begin
Append;
FieldByName('
RGrp_ID').AsInteger := T_DataID.Value;
FieldByName('
RTyp_ID').AsInteger := 1;
FieldByName('
RID').AsInteger := CalcQuery.FieldByName('
ID').AsInteger;
Post;
end;
Next;
end;
end;
finally
Screen.Cursor := OldC;
end;
end;
Die aufrufende Prozedur der Prozedur mit dem Problem
Delphi-Quellcode:
Procedure TVTableStringlist.Assign(Source:TPersistent);
Begin
if assigned(Owner.MyDataset) and not DBProvide.SetSQL(owner.MyDataSet,TStrings(Source),owner.DataSetType,owner.DatabaseType) then
Raise ECouldNotSetProperty.Create('TVTabelStringlist.Assign konnte nicht ausgeführt werden.');
end;
Hier der betroffene Code.
Delphi-Quellcode:
Function SetSQL(aDataSet:TDataset;Value:TStrings;DataSetType:TDataSetType;
db: TDBType=dtDEFAULT):Boolean;
var ERRRec:TSerializedDBEngineError;
astrings:TStringlist;
Begin
astrings := tstringlist.create;
try
if Value
is TStrings
then // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<HIER PASSIERT DIE GESCHICHTE
aStrings.AddStrings(Value)
else
aStrings.Assign(Value);
ERRREC.Occured := false;
result := false;
if db = dtDefault
then
db := DefaultDB;
case db of
dtDefault: showmessage('
DefaultDB darf nicht dtDEFAULT sein.');
dtBDE:
Case Datasettype
of
dstQuery: Result := SetSQLBDE_QRY(ERRREC,aDataset,aStrings);
end;
dtDBI: ;
//DBISAM not ready
dtDBX: ;
//DBX
end;
finally
astrings.Free;
astrings :=
nil;
end;
DBrsError(ERRREC);
end;