Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Seltsames IDE-Verhalten (Code-Vervollständigung) (https://www.delphipraxis.net/182459-seltsames-ide-verhalten-code-vervollstaendigung.html)

wendelin 26. Okt 2014 11:49

Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Hallo,
wenn ich eine PROCEDURE (z.B.)
Delphi-Quellcode:
procedure TNeuroNet.SpeedButton11Click(Sender: TObject);
in meinen Code einfüge so wird diese üblicherweise ganz am Ende der Unit stehen.
Füge ich nun nach begin.. z.B.
Delphi-Quellcode:
MyStringList_1.Insert(i,MyString);
ein,
so bekomme ich ab dem Punkt die Meldung 'Unable to invoke Codecompletion due to Errors in Source-Code'.
Wenn ich die gesamte procedure herausnehme und z.B. zwischen die vorletzte und vorvorletzte procedure
einfüge, so funktioniert alles normal.
Hat jemand eine Ahnung was diesen Fehler bewirken könnte?
Wendelin

himitsu 26. Okt 2014 12:27

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Zitat:

Zitat von wendelin (Beitrag 1277441)
Wenn ich die gesamte procedure herausnehme und z.B. zwischen die vorletzte und vorvorletzte procedure
einfüge, so funktioniert alles normal.
Hat jemand eine Ahnung was diesen Fehler bewirken könnte?

Nee, aber wie wäre es, wenn du uns zeigst was in der geheimen "vorletzte"n oder letzten Prozedur liegt?
Oder selber dort drinen den vermutlichen Fehler suchst?

wendelin 26. Okt 2014 17:47

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Hallo,
hier ist der Code:
Delphi-Quellcode:
(* Die selbe Proc wie unten;
Ab dieser Position ( vom Ende der Unit aus gesehen ) funktioniert alles richtig
sowohl die Code-Vervollständigung als auch comp. und run.
procedure TNeuroNet.BitBtn1Click(Sender: TObject);
begin
  StringGrid3.Visible := FALSE;
end; *)

(****************************** für SpriNN ************************************)

procedure TNeuroNet.SpeedButton14Click(Sender: TObject);
Var
   MyStringList_1,MyStringList_2,MyStringList_3  : TStrings;
   PfadName_1,PfadName_2,MyString               : STRING;
   Zaehler,Position,i                           : integer;
begin
  if (globMDIFensterOn = TRUE) AND (AktieEingelesen = TRUE) AND (active = TRUE) THEN
  begin
    MyStringList_1 := TStringList.Create;
    MyStringList_2 := TStringList.Create;
    MyStringList_3 := TStringList.Create;
    try
    { use the string list }
(* -------------------------------------------------------------------------------------------------------- *)
      PfadName_1 := 'D:\Programme\Borland\Delphi6\Projects\MyMapMode\Quotes\'+ g_ComplName[MDIFNr];
      PfadName_2 := 'G:\Programme\SPRINN\SpriNN Professional 3.0 (eng)\Data\'+ g_ComplName[MDIFNr] + '.txt';
(* -------------------------------------------------------------------------------------------------------- *)
      MyStringList_1.Clear;
      MyStringList_2.Clear;
      MyStringList_3.Clear;
      MyStringList_1.LoadFromFile(PfadName_1);
      MyStringList_1.Delete(0);  // die ersten 3 Zeilen löschen
      MyStringList_1.Delete(0);  // die ersten 3 Zeilen löschen
      MyStringList_1.Delete(0);  // die ersten 3 Zeilen löschen

      Zaehler := MyStringList_1.Count;

      For i := (Zaehler - 1) DownTo 0 do    // Reihenfolge vertauschen
      begin                                 // mit Hilfe von MyStrinList_3
        MyStringList_3.Add(MyStringList_1[i]);
      end;
      MyStringList_1.Assign(MyStringList_3); // und wieder MyStringList_1 zuordnen
      For i := 0 To (Zaehler - 1) do
      begin
        MyString := MyStringList_1.Strings[i];
        Position := Pos('-',MyString);
        Delete(MyString,Position,1);   // 1.Bindestrich in Date löschen
        Position := Pos('-',MyString);
        Delete(MyString,Position,1);   // 2.Bindestrich in Date löschen

        Position := Pos(',',MyString); // Komma's löschen und mit Blank's auffüllen
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position); // 1. Komma -> Blank

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position); // 2. Komma -> Blank

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position); // 3. Komma -> Blank

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position);  // 4. Komma -> Blank

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position);  // 5. Komma -> Blank

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position);  // 6.Komma -> Blank

        Delete(MyString,Position,10);   // wichtig ! Korrektur-Daten löschen
        Insert(' ',MyString,Position);

        Position := Pos(',',MyString);
        Delete(MyString,Position,1);
        Insert(' ',MyString,Position);

        Insert(g_ShortName[MDIFNr],MyString,1); // An 1. Stelle 'CODE' !
        Trim(MyString);                       // führende & folgende Leerstellen löschen

        MyStringList_1.Delete(i);             // StringListe mit neuem 'MyString'
        MyStringList_1.Insert(i,MyString);    // & überschreiben !!
        MyStringList_2.Add(MyString);

      end;
      MyStringList_2.Assign(MyStringList_1);
      MyStringList_2.SaveToFile(PfadName_2);
    finally
      MyStringList_1.free;
      MyStringList_2.free;
      MyStringList_3.free;
    end;
  end;
end;


procedure TNeuroNet.SpeedButton11Click(Sender: TObject);
begin
  If PrinterSetUpDialog1.Execute THEN
  begin
   //  Dummy
  end;
end;

  //  Test, der nicht funktioniert was NUR die Code - Vervollständigung betrifft
  //  jedoch lässt sich (ohne Code - Vervollständigung) alles korrekt kompilieren
  //  und das Prog. läuft auch korrekt
procedure TNeuroNet.BitBtn1Click(Sender: TObject);
begin
  StringGrid3.Visible := FALSE;
end;         // Hier kommt oben erwähnter Error : unable to invoke Code...
              // nach Eingabe des Punktes
end.
möglicherweise kennt ja jemand einen solch seltsamen Fehler.
Wendelin

Uwe Raabe 26. Okt 2014 17:59

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Delphi-Quellcode:
MyStringList_1
ist eine lokale Variable in
Delphi-Quellcode:
TNeuroNet.SpeedButton14Click
. In
Delphi-Quellcode:
TNeuroNet.SpeedButton11Click
ist die aber nicht bekannt.

wendelin 27. Okt 2014 09:23

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Sehr geehrter Herr Raabe,
vielen Dank für Ihre schnelle Antwort.
Leider verstehe ich Ihre Begründung für o.g. Fehler nicht.
Sicher ist es richtig, daß
Delphi-Quellcode:
MyStringList_1
eine lokale Var. ist.
Neben anderen lokalen Var's
In der Proc.
Delphi-Quellcode:
TNeuroNet.BitBtn1Click(Sender: TObject);
wird diese lokale
Var. jedoch nicht genutzt.
Vielleicht können Sie mir Ihrer Erklärung noch ausfürlicher erläutern ?
Danke
Wendelin

himitsu 27. Okt 2014 09:30

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Die Variable "MyStringList_1" gibt es an dieser Stelle nicht.
Wenn du deine Methode nach/unter der anderen Methode deklarierst, wo eine entsprechene lokale Variable gibt, dann findet scheinbar der Parser der Codevervollständigung diese Definition. (obwohl sie eigentlich nicht dazughört)
Wenn deine Methode davor steht, dann wird das nicht gefunden.

wendelin 27. Okt 2014 10:26

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Hi,
danke für Deine Antwort.
Trotzdem verstehe ich diese nicht. Vieleicht bin ich ja begriffsstutzig o.ä.
Wendelin

DeddyH 27. Okt 2014 10:47

AW: Seltsames IDE-Verhalten (Code-Vervollständigung)
 
Dadurch, dass MyStringList_1 eine lokale Variable in SpeedButton14Click ist, ist sie eigentlich in SpeedButton11Click nicht bekannt und somit nicht erreichbar. Anscheinend erkennt die Code-Completition sie trotzdem, wenn sie weiter vorn im Code stand (nach dem Motto "ah, das hatten wir da oben schonmal"). Das ist dann aber eher als Fehler der Codevervollständigung zu werten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 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