Autor |
Beitrag |
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 21.02.13 18:34
Habe mal wieder nach Jahren den Effekt, dass plötzlich beim Laden der Quelltexte einer Anwendung in die IDE und Compilieren derselben alle Datasource-Einträge gelöscht waren. Gibt es in der IDE irgendeine Tastenkombination, welche das bewirkt, oder ist das einfach ein Fehler in der IDE (DELPHI 5)?
Zum Glück sind es nur wenige Datasource-Komponenten und diese noch relativ gut zuzuordnen, aber leider habe ich vor Laden der Quelltexte keine Sicherheitskopie gemacht. Und die letzte war schon ein paar Tage her. Jetzt habe ich - nach Restauraton der Einträge - dieses nachgeholt. Aber es kann ja nicht sein, dass man ständig erst eine Sicherheitskopie macht, und dann die Dateien verwenden kann. Aber wahrscheinlich kommt man nicht drumrum.
Leider erkennt man erst, wenn man das Programm compiliert, dass da was faul ist. Allein an dem Aussehen des Formulars sieht man das im Entwurfszustand nicht. Man muss schon die Eigenschaftsseite mit aufrufen. Aber wenn der Effekt auftritt, ist eh schon alles zu spät.
Vielleicht hat ja jemand noch eine Idee, woran das liegen kann? Vielleicht habe ich ja eine reele Chance, dass ich in Zukunft derartige Effekte vermeiden kann.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 21.02.13 18:41
Sind die Komponenten an sich verschwunden, oder ist "nur" die Zuordnung zwischen DataSource und z.B. DBGrid flöten gegangen?
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 21.02.13 18:49
Der Eintrag im Feld Datasource ist verschwunden (leer) Und das bei DBGrid, TDBEdit ... allen Datenbankfeldern/-komponenten. Der muss dann manuell wieder eingetragen werden. Die Feldinformation und alle anderen Eigenschaften/Ereignisse und Methoden sind geblieben.
Ich mache jetzt das, damit ich - falls eine manuelle Zuordnung notwendig werden sollte, eine Labeleintragung auf den entsprechenden Seiten des Formulars, so dass ich ohne Probleme die Zuordnung rekonstruieren kann. Eine Speicherung des Formulars macht wenig Sinn, da ich oft die Anordnungen der Komponenten ändere, zusätzliche Komponenten einfüge oder ander lösche. Das wäre dann doch kaum sinnvoll. Die Labelkomponenten mache ich nicht sichtbar.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 21.02.13 19:13
Delphi 5 starte ich höchstens noch, um Code-Kompatibilität zu testen, von daher kann ich nicht bestätigen, ob es sich möglicherweise um einen IDE-Bug handeln könnte. Die Alternative wäre, die Zuordnungen im Code vorzunehmen, das kann aber je nach Menge in echte Arbeit ausarten. Leider kann ich Dir da nicht weiterhelfen 
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 21.02.13 19:18
Neben dem vorgenannten habe ich noch das Formular als Text definiert. So kann ich wenigstens die fehlenden Einträge sehen und mit denen eines gesicherten Formulars abgleichen. Echt. Das nervt. Das sind nicht gerade kleine Programme und einige verschiedene Tabellen der Datenbank. Aber da muss ich wohl durch. Danke für die Bereitschaft.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Do 21.02.13 20:04
Hi,
habe noch ein Projekt unter Delphi 5 laufen (DB mit BDE und Paradox) - kann und konnte so ein Problem nie nachvollziehen.
Und wenn das kein kleines Projekt ist, versteh ich umso weniger warum man sich darüber aufregt, dass man "Sicherheitskopien" anfertigen muss?!? Schon mal was von SUbversion, Git oder Mercurial gehört?
Wo liegen denn die DataSource-Komponenten? Auf dem Formular auf dem auch die DBGrid usw. liegen? oder in einem Datamodul? Sind die Datamodule projektbestandteil (also in der dpr verzeichnet)? Wurde Formularvererbung eingesetzt?
Grüße
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 21.02.13 20:26
Ich mache schon Sicherheitkopien, mit Subversion. Aber eben nicht jede Minute!!! Einmal am Tag. Aber ich werde das nun jedesmal vor dem Aufruf tun. Leider. Das dauert dann aber mindestens 3 Minuten, weil ich die kompletten Projektverzeichnisse sichere und das dauert nun mal. Denn ich arbeite an mehreren Projekten nebeneinander. So dass eine selektive Sicherung wenig Sinn macht.
Die Datenbankkomponenten liegen in einem Datamodul. Wie gesagt, alle anderen Eigenschaften der Datenbank-Objekte auf dem Formular bleiben unberücksichtigt, nur die Datasource wird gelöscht. Das Datamodul ist Bestandteil des Projekts. Was Du mit Fortmularvererbung meinst, ist mir unklar. (Das Hauptformular ist vom Class TForm).
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Do 21.02.13 23:32
Formularvererbung = Bei einem neuen Formular kannst Du einstellen, dass nicht von TForm sondern von einem Basisformular deiner Anwendung geerbt wird.
Nochmal zum Datenmodul: Das steht in der dpr drin? Und alle Formulare bei denen das DataSOurce rausfliegt auch?
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Fr 22.02.13 05:21
Das DAtenmodul steht in der DPR. Und zu der Vererbung. Bisher habe ich mir keine Gedanken darüber gemacht, welches Formular ich nehgme. Habe die Vorgaben von Delphi übernommen. Was soll es denn bringen, statt TForm TCustomform zu nehmen, außer dass da dann viele Eigenschaften nicht definiert sind, die für TForm gelten?
Gut dass Du mich darauf hin gewiesen hast. Komishcerweise sind die Datasourdce-Einträge der anderen Formulare nicht verschwunden. Nun wird mir das Ganze noch schleierhafter. Allerdings ist dabei zu erwähnen, dass ich zumeist am Hauptformular arbeite und selten eines der anderen Formulare bearbeite. Wenn ich feststelle, was vorher passierte, bevor die Datenbankeinträge "verschwanden", werde ich das mitteilen.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Fr 22.02.13 08:12
Tranx hat folgendes geschrieben : | Das DAtenmodul steht in der DPR. Und zu der Vererbung. Bisher habe ich mir keine Gedanken darüber gemacht, welches Formular ich nehgme. Habe die Vorgaben von Delphi übernommen. Was soll es denn bringen, statt TForm TCustomform zu nehmen, außer dass da dann viele Eigenschaften nicht definiert sind, die für TForm gelten? |
Das hat schon gewisse VOrteile - z.B. wenn man mehrere Formulare mit gleichem Aufbau verwenden will. Ist aber zu viel für einen Post - dazu gibts auch Tutorials und einen Artikel im Entwickler....
Tranx hat folgendes geschrieben : |
Gut dass Du mich darauf hin gewiesen hast. Komishcerweise sind die Datasourdce-Einträge der anderen Formulare nicht verschwunden. Nun wird mir das Ganze noch schleierhafter. Allerdings ist dabei zu erwähnen, dass ich zumeist am Hauptformular arbeite und selten eines der anderen Formulare bearbeite. Wenn ich feststelle, was vorher passierte, bevor die Datenbankeinträge "verschwanden", werde ich das mitteilen. |
ist schwer, aber versuch doch mal, das DataModul gleich nach dem Laden des Projektes mit zu öffnen, ob das dann auch noch weiterhin passiert...
Hast Du ggf. Delphi ein zweites mal gestartet?
Grüße
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Fr 22.02.13 10:39
Der zweite Aufruf sollte m.E. gar nichts bringen, da das Formular ja "zerschossen" ist. Wenn die Einträge fehlen, wird dies nichts bringen.
Aber dazu: Ich habe mir eine Anwendung geschrieben, die die Formulare ausliest und die entsprechenden Einträge in einem Stringgrid ausgibt, welches man dann als Textdatei speichern kann. So habe ich immer einen Ist-Stand der Einträge und kann u.U. schneller korrigieren, falls das noch mal auftritt und ich keine aktuelle Sicherung habe.
Voraussetzung dafür ist, dass das Formular/die Formulare als Text vorliegt/vorliegen. Dann ist das Auslesen sehr viel einfacher. Das Ergebnis speicher ich dann als FormularDateiname.dfo .
Das mit dem Mitöffnen des Datenmoduls werde ich berücksichtigen. Allerdings ist es so, wenn ich an anderen Rechnern (zuhause und an der Arbeit) die gleiche Projektdatei öffne, dann ist oft bloß die .dpr geöffnet und alle anderen Units sind nicht geöffnet. Aber das sollte dann kein Problem sein.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Fr 22.02.13 11:12
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Fr 22.02.13 11:30
Jetzt verstehe ich. Da werde ich mal aufpassen. Einmal hatte ich aus Versehen Delphi gleichzeitig zweimal offen. Aber ich weiß nicht mehr, bei welchem der Projekte. Werde mal verfolgen, ob dann - wenn das passiert, dieser Effekt auftritt.
Wie kann man denn verhindern, dass Delphi (falls das das Problem ist) mehrmals geöffnet wird? Man kann ja aus Versehen mal bei geöffnetem Delphi eine pas oder dfm-Datei anklicken.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Fr 22.02.13 12:05
Gute Frage... Also das muss nicht zwingend so sein, aber ich könnte mir folgendes vorstellen:
Projekt ist in Delphi No.1 geöffnet, in Delphi No.2 wird lediglich das Formular geöffnet in dem die DataSourcen zugewiesen sind. Da nun aber die Verbindung zum DataModule fehlt werden die Verknüpfungen beim Speichern gelöscht.
Aber ich bezweifle gerade, dass ein einfacher Doppelklick im Explorer automatisch zu einer weiteren Delphi-Instanz führt...
GRüße
|
|