Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

is Operator macht kommische Dinge

  Alt 16. Mai 2007, 09:23
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;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat