AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE {$INCLUDE irgendwas} --> Kann "irgendwas" nicht öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

{$INCLUDE irgendwas} --> Kann "irgendwas" nicht öffnen

Ein Thema von MStoll · begonnen am 2. Aug 2007 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
MStoll

Registriert seit: 15. Nov 2005
131 Beiträge
 
Turbo Delphi für Win32
 
#1

{$INCLUDE irgendwas} --> Kann "irgendwas" nicht

  Alt 2. Aug 2007, 16:38
Hallo.

Da ich in einem großen Projekt eine recht große Unit für mein Hauptformular hab, hab ich die Formular-Methoden der Unit auf verschiedene Dateien verteilt (27 Stück). Leider blockiert Delphi, sobald ich irgendwas an der Unit oder einer der Include-Dateien ändere, den Zugriff auf eine bestimmte dieser 27 Dateien. Immer mit der Meldung "Datei xxx kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird". Das gleiche passiert auch, wenn ich die Datei vor dem Compilieren in Delphi öffnen will. Delphi blockiert sich damit quasi selbst.

Weiß jemand Rat, wie man das Problem beseitigen kann?

Gruß
Michael
"Man soll nie mehr essen als mit Gewalt reingeht!" (n.n.)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: {$INCLUDE irgendwas} --> Kann "irgendwas" n

  Alt 2. Aug 2007, 17:03
Zitat von MStoll:
Da ich in einem großen Projekt eine recht große Unit für mein Hauptformular hab, hab ich die Formular-Methoden der Unit auf verschiedene Dateien verteilt (27 Stück).
Da läuft aber einiges falsch bei dir.
Um ein grosses Projekt in kleinere wartbare Dateien zu zerlegen sollte man keine Include-Dateien verwenden, sondern neue Units erstellen.
Include-Dateien darf man eigentlich nur in folgenden Fällen verwenden:
1.) globale Defines, die in allen Units verfügbar sind
2.) grosse Datenmengen, die aus einer externen Quelle stammen
Beispiel: eine Eröffnungsbibliothek für Schach könnte man als Konstanten-Array in einem Includefile ablegen
3.) Programmcode der aus einem Code-Generator (z.B. UML -> Pascal) stammt, kann manchmal nur über Includefiles eingefügt werden

[edit]Nachtrag: Punkt 3.) hinzu[/edit]
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: {$INCLUDE irgendwas} --> Kann "irgendwas" n

  Alt 3. Aug 2007, 08:50
Zitat von shmia:
Include-Dateien darf man eigentlich nur in folgenden Fällen verwenden:
1.) globale Defines, die in allen Units verfügbar sind
2.) grosse Datenmengen, die aus einer externen Quelle stammen
Beispiel: eine Eröffnungsbibliothek für Schach könnte man als Konstanten-Array in einem Includefile ablegen
Kannst Du das mal den Entwicklern der IB-Objects mitteilen?
Es stinkt mir nämlich gewaltig, dass die ihre Klassendeklarationen in inc-files ablegen...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
MStoll

Registriert seit: 15. Nov 2005
131 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: {$INCLUDE irgendwas} --> Kann "irgendwas" n

  Alt 4. Aug 2007, 14:20
Zitat von shmia:
Da läuft aber einiges falsch bei dir.
Hallo.

DAS überlass mal bitte mir. Ich hab eine Unit mit EINER Klasse (Formular) mit vielen Methoden (Ereignisse, Buttons, Menüpunkte etc.). Das ergibt 1000e von Zeilen...
Ich wollte eigentlich ne Antwort auf meine Frage und keine Grundsatzdiskussion. Die IDE sieht die Möglichkeit mit Includes vor und das funktioniert konzeptionell auch.
Nur glaube ich nicht, dass der von mir geschilderte Fehler so beabsichtigt ist. Tritt schon seit Delphi 2005 so auf.

Also nochmal: Kennt jemand eine Lösung zu dem von mir geschilderten Problem?

Gruß
Michael
"Man soll nie mehr essen als mit Gewalt reingeht!" (n.n.)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: {$INCLUDE irgendwas} --> Kann "irgendwas" n

  Alt 6. Aug 2007, 12:34
Zitat von MStoll:
Zitat von shmia:
Da läuft aber einiges falsch bei dir.
DAS überlass mal bitte mir. Ich hab eine Unit mit EINER Klasse (Formular) mit vielen Methoden (Ereignisse, Buttons, Menüpunkte etc.). Das ergibt 1000e von Zeilen...
Nun, von mir bekommt man nicht nur direkte Antworten auf Fragen, sondern auch Hinweise zu
"richtigem" und "falschem" Programmieren aus langjähriger Erfahrung.
Wenn du meinen Rat nicht annehmen möchtest, dann kann ich auch nichts machen; aber du kannst dich so nicht verbessern.
Schau dir mal die VCL an: hunderttausende Zeilen sind verteilt auf über 200 Units.
Jede Unit dient einem bestimmten Zweck. Units, die zu gross wurden, hat Borland geschickt aufgeteilt (z.B. StdCtrls, ExtCtrls, ComCtrls). Includefiles gibt es in der VCL nicht.

Wenn ein Formular aus allen Nähten platzt, muss man versuchen, Programmlogik (z.B. Stringfunktionen) in eigene Units auszulagern. Gleichartige Dinge, die sich mehrfach wiederholen, kann man in Frames packen. Wenn man z.B. mehr als 50 Buttons hat, muss man ersthaft das Bedienkonzept überdenken.
Man kann Buttons und Menues auch dynamisch zur Laufzeit anhand von ActionLists erstellen.
Andreas
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#6

Re: {$INCLUDE irgendwas} --> Kann "irgendwas" n

  Alt 6. Aug 2007, 13:44
Hallo,

ich vermute, dass Delphi Probleme hat, die in Includes ausgelagerten Methoden wiederzufinden. Schließlich werden zumindest alle aus Komponenten erzeugten Methoden auch von Delphi selbst in den Quelltext eingefügt. Ich benutze auch ab und zu Include-Dateien, da es wesentlich einfacher ist, kleine Programmteile in einem Include auszulagern als dafür eine Unit zu machen, und habe damit absolut keine Probleme. Ich lagere aber nur Routinen aus, die von dem jeweiligen Formular unabhängig sind

MfG

Klaus
  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:04 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