Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Probleme mit 'Deklaration suchen' (Gelöst?)

  Alt 9. Nov 2017, 22:45
Hallo,

Fast alle hier vorgeschlagenen Schritte hatte ich schon versucht. Die Lösung fand ich tatsächlich, indem ich nach und nach alle nach der letzten funktionierenden Version durchgeführte Änderungen rückgängig gemacht hatte. Aber des Rätsels Lösung wirft neue Fragen auf. Folgender Sachverhalt:

Ich hatte im Interface-Teil vor der Deklaration des Hauptformulars folgende Typ-Deklaration platziert:
Code:
unit GetLatestGUI_V4;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, Shellapi,
  ImgList, Buttons, Menus, ToolWin, System.ImageList, UITypes, AnsiStrings,
  iTunesLib_TLB, FileListCopy, CreateClips, GLOptions;


type
  TMemoBak = Array[0..1] of String;
In der anschließenden Deklaration des Hauptformulars wurde dann in der 'private' - Sektion ein Feld dieses Typs deklariert:
Code:
type
  TGL4Mainform = class(TForm)
    Label3: TLabel;
    Label4: TLabel;
    Memo1: TMemo;
    MemoButton1: TButton;
    //[...] (96 Deklarationen)
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    //[...] (56 Deklarationen)
  private
    { Private-Deklarationen }
    membak: TMemoBak;
    Playlistmode:TListmode;
    allsize: int64;
    //usw.
Nachdem ich die 'private' Felddeklaration 'membak' entfernt und durch eine (Unit-)globale Variable des gleichen Typs im Implementations - Teil ersetzt hatte, war der Fehler verschwunden. Alternativ genügt es, die Typ - Deklaration in den Interface-Teil einer in der 'uses'-Klausel aufgeführten Unit zu verschieben. Dann kann auch das 'private' Feld deklariert werden.
Alles in allem äußerst rätselhaft, wie das zusammenhängt. Womöglich ist das merkwürdige Verhalten nur ein Seiteneffekt irgendeines tiefer liegenden Fehlers oder gar eines Bugs der IDE? Jedenfalls lässt sich das Projekt ansonsten fehlerfrei compilieren bzw. erzeugen. Es gibt auch keinerlei speziellen Hinweis oder Warnung. Das Ganze ist zuverlässig reproduzierbar, auch in anderen Units verschiedener Projekte.
Vielleicht hat einer der hier versammelten Experten eine Erklärung für das rätselhafte Phänomen?

Gruß Maekkelrajter

Geändert von Maekkelrajter ( 9. Nov 2017 um 23:01 Uhr)
  Mit Zitat antworten Zitat