AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Ordinaltyp erforderlich

Ein Thema von MacGuyver · begonnen am 3. Mär 2010 · letzter Beitrag vom 3. Mär 2010
Antwort Antwort
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#1

Fehler: Ordinaltyp erforderlich

  Alt 3. Mär 2010, 10:28
Moin Leute

Ich habe ein Problem mit einem Speicherleck.

Seek( [ TSeek.Create( FldPK, TheTable.FldIlbSolKurz.AsString ) ] ); Ganz klar, dass das Objekt nicht wieder freigegeben wird. So habe ich das mal so umgebaut:

Delphi-Quellcode:
var
   lSeek : TSeek;

         lSeek := TSeek.Create( FldPK, TheTable.FldIlbSolKurz.AsString );
         try
            Seek( [ TSeek(lSeek) ] );
         finally
            lSeek.Free;
         end;
Sieht auf den ersten Blick korrekt aus. Nur, die aufzurufende Funktion ist so deklariert:

function Seek( SeekFields : Array of TSeek ) : boolean; Jetzt erzählt er mir andauernd "Ordinaltyp erforderlich". Ich habe schon einiges probiert. Als TObject, als Pointer.... Keine Ahnung, wie ich die Stelle jetzt umsetzen soll. Kann mir jemand von euch weiterhelfen?


Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Fehler: Ordinaltyp erforderlich

  Alt 3. Mär 2010, 10:35
Zitat von MacGuyver:
Delphi-Quellcode:
var
   lSeek : TSeek;

         lSeek := TSeek.Create( FldPK, TheTable.FldIlbSolKurz.AsString );
         try
            Seek( [ TSeek(lSeek) ] );
         finally
            lSeek.Free;
         end;
Den Cast kannst du dir sparen.

Zitat von MacGuyver:
Sieht auf den ersten Blick korrekt aus. Nur, die aufzurufende Funktion ist so deklariert:

function Seek( SeekFields : Array of TSeek ) : boolean; Jetzt erzählt er mir andauernd "Ordinaltyp erforderlich". Ich habe schon einiges probiert. Als TObject, als Pointer.... Keine Ahnung, wie ich die Stelle jetzt umsetzen soll. Kann mir jemand von euch weiterhelfen?
In welcher Zeile mäkelt er den? Folgendes lässt sich bei mir kompilieren:
Delphi-Quellcode:
type
  TSeek = class

  end;

function Seek(SeekFields: array of TSeek): boolean;
begin

end;

procedure Test;
var
  lSeek: TSeek;
begin
  lSeek := TSeek.Create;
  try
    Seek([lSeek]);
  finally
    lSeek.Free;
  end;
end;
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehler: Ordinaltyp erforderlich

  Alt 3. Mär 2010, 10:51
Danke für deine schnelle Antwort.

Die Lösung der Hammer:

Delphi-Quellcode:
   if fIlbSol <> NIL then begin
      with fIlbSol do
         lSeek := TSeek.Create( FldPK, TheTable.FldIlbSolKurz.AsString );
         try
            fIlbSol.Seek( [ lSeek ] );
         finally
            lSeek.Free;
         end;
Durch das "with" bekommt er irgendwie ein anderes Seek zu packen. Als ich "fIlbSol." vor das Seek gesetzt hatte, konnte er so compilieren.



Danke, danke, danke
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Fehler: Ordinaltyp erforderlich

  Alt 3. Mär 2010, 10:53
Deswegen wird ja hier immer wieder dazu geraten, auf with zu verzichten. Das hat keinerlei Mehrwert (außer für Schreibfaule) und verursacht u.U. nur unnötige Fehler, wie Du ja selbst gerade gemerkt hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz