![]() |
Unit zu unbekanntem Variablentype gesucht (generell)
Hallo,
euch ist es sicherlich auch schon einmal passiert, dass ihr (selbst hier in DP) einen Codeschnipsel gefunden habt, der ohne Uses-Klausel daherkommt. Wenn jetzt ein unbekannter Typ deklariert wird, suche ich meistens per Google danach. Im Moment habe ich einen Type, den ich nirgendwo finden kann. Wie findet man im Normalfall die entsprechende Unit? Hat bitte jemand die passende Unit zum Type:
Delphi-Quellcode:
LG und frohe Ostern :-)
var
Sync: TSync; Mathias |
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Scheint was selbst abgeleitetes von TIdSync zu sein.
![]() |
AW: Unit zu unbekanntem Variablentype gesucht (generell)
... und TIdSync ist bei mir (XE5) in
C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\source\Indy10\Core\IdSync.pas deklariert. |
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Du kannst meist mit der Tastenkombo Strg+Shift+A die IDE selbst versuchen lassen, die richtige Unit dafür zu finden. Meist gibt das in den ersten zwei Anläufen eine nichtssagende Fehlermeldung, aber bei mir klappt es lustigerweise beim dritten oder fünften Anlauf relativ oft.
|
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Bei mir (XE5) liefert die Tastenkombination Strg+Shift+A eine (oft "kilometerlange") Liste aller (auch indirekt) verwendeten Units... :(
|
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Ich drücke bei Delphi 7 einfach F1 und schau in der Hilfe nach. Wenn die es nicht weiß, ist es was "nicht normales", also von außerhalb von dem, was Delphi von Haus aus mitliefert.
Da bei mir alle Delphisourcen unterhalb eines Verzeichnisses liegen, ordentlich geordnet nach Projekten, Komponenten, eigenes, fremdes, ... nutze ich einfach die Suchfunktion vom Windowscommander (oder 'nem beliebigen Klone) und lass den in allen *.pas-Dateien suchen. Werde so immer fündig oder das Gesuchte gibt es bei mir (noch) nicht. Oder Kommandozeile:
Code:
per Grep (für ein Verzeichnis):
@for /f %i in ('dir /s /b *.pas') do @find "TSync" "%i"
Code:
per Grep (für eine Verzeichnisstruktur):
c:\delphi7\bin\grep "TSync" c:\delphi\*.pas
Code:
@for /f %i in ('dir /AD /s /b') do @c:\delphi7\bin\grep "TSync" "%i\*.pas" 1>>c:\temp\Fundstellen.txt 2>>nul
|
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Vielen lieben Dank für eure Hilfe.
Die Ableitung von TIdSync hatte ich auch gefunden, der Zusammenhang wollte mir aber nicht richtig einleuchten. Hier noch einmal etwas mehr Code:
Delphi-Quellcode:
type
TMyJSON = record TotalItems: Integer; Items: TJSONArray; ItemsArray: Array of TJSon_Items; Result: Boolean; end; var MyJSON: TMyJSON; MyJSONArray: TArray<TMyJSON>; Dummy_Count: Integer; Tasks: TList<TTask>; Sync: TSync; procedure SearchGoogleSingleISBNTask(const Dummy_String: string); var MyJSON: TMyJSON; begin MyJSON := SearchGoogleSingleISBN(Dummy_String); // ...weitere Verarbeitung von MyJSON... end; begin Dummy_Count := ListBox1.Count - 1; SetLength(MyJSONArray, Dummy_Count); Sync := TSync.Create; uses System.SyncObjects; // Add this line for Dummy_Int := Dummy_Count downto 0 do begin while Tasks.Count >= 5 do Sync.WaitFor; TTask.Create( procedure begin SearchGoogleSingleISBNTask(ListBox1.Items[Dummy_Int]); Sync.Signal; end ).Start; Tasks.Add(TTask.Last); end; // Warten auf Abschluss aller Tasks while Tasks.Count > 0 do Sync.WaitFor; // ...Datenbankaktualisierung... for Dummy_Int := 0 to Dummy_Count do begin MyJSON := MyJSONArray[Dummy_Int]; if MyJSON.TotalItems = 1 then // ...hier Code zur Datenbankaktualisierung... end; end; |
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Die KI meiner Wahl hat dazu folgendes zu vermelden:
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
type
TMyJSON = record TotalItems: Integer; Items: TJSONArray; ItemsArray: Array of TJSon_Items; Result: Boolean; end; var MyJSON: TMyJSON; MyJSONArray: TArray<TMyJSON>; Dummy_Count: Integer; Tasks: TList<TTask>; Sync: TSync; procedure SearchGoogleSingleISBNTask(const Dummy_String: string); var MyJSON: TMyJSON; begin MyJSON := SearchGoogleSingleISBN(Dummy_String); // ...weitere Verarbeitung von MyJSON... end; begin Dummy_Count := ListBox1.Count - 1; SetLength(MyJSONArray, Dummy_Count); Sync := TSync.Create; uses System.SyncObjects; // Add this line for Dummy_Int := Dummy_Count downto 0 do begin while Tasks.Count >= 5 do Sync.WaitFor; TTask.Create( procedure begin SearchGoogleSingleISBNTask(ListBox1.Items[Dummy_Int]); Sync.Signal; end ).Start; Tasks.Add(TTask.Last); end; // Warten auf Abschluss aller Tasks while Tasks.Count > 0 do Sync.WaitFor; // ...Datenbankaktualisierung... for Dummy_Int := 0 to Dummy_Count do begin MyJSON := MyJSONArray[Dummy_Int]; if MyJSON.TotalItems = 1 then // ...hier Code zur Datenbankaktualisierung... end; end; Zitat:
Zitat:
Delphi-Quellcode:
uses
System.SyncObjects; // Move this line to the top type TMyJSON = record TotalItems: Integer; Items: TJSONArray; ItemsArray: Array of TJSon_Items; Result: Boolean; end; var MyJSON: TMyJSON; MyJSONArray: TArray<TMyJSON>; Dummy_Count: Integer; Tasks: TList<TTask>; Sync: TSync; procedure SearchGoogleSingleISBNTask(const Dummy_String: string); var MyJSON: TMyJSON; begin MyJSON := SearchGoogleSingleISBN(Dummy_String); // ...weitere Verarbeitung von MyJSON... end; begin Dummy_Count := ListBox1.Count - 1; SetLength(MyJSONArray, Dummy_Count); Sync := TSync.Create; for Dummy_Int := Dummy_Count downto 0 do begin while Tasks.Count >= 5 do Sync.WaitFor; TTask.Create( procedure begin SearchGoogleSingleISBNTask(ListBox1.Items[Dummy_Int]); Sync.Signal; end ).Start; Tasks.Add(TTask.Last); end; // Warten auf Abschluss aller Tasks while Tasks.Count > 0 do Sync.WaitFor; // ...Datenbankaktualisierung... for Dummy_Int := 0 to Dummy_Count do begin MyJSON := MyJSONArray[Dummy_Int]; if MyJSON.TotalItems = 1 then // ...hier Code zur Datenbankaktualisierung... end; end; Zitat:
|
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Hallo nochmal :-)
Danke @Delphi.Narium. Leider scheint die KI nicht ganz richtig zu liegen. Bei mir (Delphi 10.4) gibt es keine Unit System.SyncObjects Es gibt eine System.SyncObjs, aber die scheint auch keine Deklaration vom Type TSync zu kennen. Weiterhin habe ich bei meinem Beispielcode vergessen, zu erwähnen, dass mein Type TMyJSON in einer anderen unit liegt. Somit hatte ich einfach den Code aus zwei unterschiedlichen Bereichen zusammengefasst. Auch die Variablen liegen innerhalb einer Procedure, sind also nicht global definiert. Tut mir leid für das Missverständnis. LG :-) |
AW: Unit zu unbekanntem Variablentype gesucht (generell)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz