Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - unnützes "Project1"
Martello - Do 12.03.09 19:03
Titel: unnützes "Project1"
Hallo,
meine kleinen Lern-Programme kamen bisher alle ohne "Project1" aus.
Stattdessen stand der gesamte Code jeweils in "Unit1". Auch habe ich immer nur ein Formular verwendet.
Durch irgend einen "Fehler", den ich wohl gemacht habe, existiert auf einmal neben meiner Unit1 ein
Objekt namens "Project1" und ich krieg alles nicht mehr compiliert, obwohl es zuvor sehr gut klappte.
Alles Unheil nahm seinen Anfang damit, daß ich "Form1" in "Rundern" umbenannt habe.
Leider habe ich die Arbeit nicht gesichert; es ist ja eigentlich auch nichts kaputt. Aber ich habe den Überblick verloren, bzw. bisher noch nicht so richtig gewonnen :(
Wie krieg ich denn das unnütze Project1 wieder aus meinem Programm?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| program Project1;
uses Forms, Unit1 in 'UNIT1.PAS' ;
{$R *.RES}
begin Application.CreateForm(TForm, Form); Application.Run; end. |
Bei
Delphi-Quelltext
1:
| Application.CreateForm(TForm, Form); |
meldet der Compiler "Unbekannter Bezeichner"
Gruß
Martello
Moderiert von
Narses: Delphi-Tags hinzugefügt
elundril - Do 12.03.09 19:09
schreib mal statt form bei dem:
Application.CreateForm(TForm, Form);
ein Rudern
so also:
Application.CreateForm(TForm, Rudern);
lg elundril
btw: das Projekt1 wird immer angelegt, bei jedem Programm das ein Formular hat. ;-) das gibt an wieviele Formulare es im projekt gibt, usw.
Moderiert von
Narses: Delphi-Tags hinzugefügt
Martello - Do 12.03.09 19:22
hatte ich inzwischen auch schon probiert....
Dann compiliert er zwar fehlerfrei, aber beim Start erscheint lediglich ein leeres graues Rechtecke in der linken oberen Schirmecke:-(
Ich hätte ja kein Problem, alles nochmal neu zu konstruieren, zum Glück ist ja der Code erhalten. Das
wäre aber nur eine andere Lehrübung. Vielleicht gelingt mir ja die Korrektur auf andere Weise; wäre auch, aber auf andere Weise lehrreich.
Martello
elundril - Do 12.03.09 19:24
öffne mal das File Unit1.dfm und sag mal was da drin steht.
lg
Martello - Do 12.03.09 19:48
Das Öffnen geschieht mit der Medlung: Fehler in Modul Unit1: Modul Header fehlt oder ist fehlerhaft.
Und das steht alles drin:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| Left = 485 Top = 129 Width = 435 Height = 300 Caption = 'Rudern' Font.Color = clWindowText Font.Height = -13 Font.Name = 'System' Font.Style = [] Menu = MainMenu1 PixelsPerInch = 96 TextHeight = 16 object TLabel Left = 56 Top = 112 Width = 4 Height = 16 end object ListBox1: TListBox Left = 184 Top = 8 Width = 209 Height = 137 ItemHeight = 16 TabOrder = 0 end object Edit1: TEdit Left = 16 Top = 176 Width = 377 Height = 24 TabOrder = 1 Text = 'Pfadname' end object Button1: TButton Left = 40 Top = 8 Width = 105 Height = 33 Caption = 'Zeige_Liste' TabOrder = 2 OnClick = Button1Click end object Button2: TButton Left = 40 Top = 48 Width = 105 Height = 33 Caption = 'Zeige_Matrix' TabOrder = 3 OnClick = Button2Click end object OpenDialog1: TOpenDialog Filter = '*.txt|*.txt' Left = 40 Top = 224 end object MainMenu1: TMainMenu Left = 8 Top = 224 object Datei1: TMenuItem Caption = 'Datei' object Open1: TMenuItem Caption = 'Open' OnClick = Open1Click end object Save1: TMenuItem Caption = 'Save' OnClick = Save1Click end end end object SaveDialog1: TSaveDialog Left = 72 Top = 224 end end |
Gruß
Martello
Moderiert von
Narses: Code-Tags hinzugefügt
Narses - Do 12.03.09 20:10
Moin und :welcome: im Forum!
Wie´s aussieht, ist deine Formulardefinition beschädigt, denn das sollte etwa so anfangen:
Wenn das fehlt, ist das mit der ungültigen-Header-Meldung klar. :nixweiss:
Scheint, als hätte Delphi beim Umbenennen des Formulars Probleme gehabt, den Quelltext anzupassen :shock: sowas passiert aber eigentlich nur, wenn man manuell Änderungen in den automatisch gepflegten Code einfügt (und selbst das kriegt die IDE normalerweise gebacken)... :gruebel:
Füg mal einen entsprechenden Header ein. Was passiert?
cu
Narses
Martello - Do 12.03.09 20:33
Der Header scheint doch in Ordnung zu sein...
denn in der ersten Zeile steht
"object Rudern: TRudern"
Einmal kam die Fehlermeldung mit dem defekten Header noch, aber meistens bleibt sie beim Öffnen jetzt aus.
Das erscheint mir alles recht komisch...
Vielleicht bau' ich die Anwendung am besten nochmal ganz von vorne...
Gruß
Martello
Narses - Do 12.03.09 20:51
Moin!
Martello hat folgendes geschrieben : |
Einmal kam die Fehlermeldung mit dem defekten Header noch, aber meistens bleibt sie beim Öffnen jetzt aus.
Das erscheint mir alles recht komisch... |
Meistens? :? Entweder das Projekt ist kaputt oder nicht, aber
manchmal? :gruebel:
Hast du zufällig das Projekt in einen andern Ordner kopiert/verschoben und die Dateireferenzen im Projekt nicht angepasst? :nixweiss:
Martello hat folgendes geschrieben : |
| Vielleicht bau' ich die Anwendung am besten nochmal ganz von vorne... |
Ja, das scheint mir auch eine gute Idee zu sein. :(
cu
Narses
Yogu - Do 12.03.09 21:10
Martello hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| program Project1;
uses Forms, Unit1 in 'UNIT1.PAS' ;
{$R *.RES}
begin Application.CreateForm(TForm, Form); Application.Run; end. | |
Diese Datei scheint ziemlich durcheinandergekommen zu sein :(
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| program Project1;
uses Forms, Unit1 in 'UNIT1.PAS' ;
{$R *.RES}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
Die
Initialize-Zeile fehlt auf jeden Fall (oder wurde die in einer neueren Delphi-Version in den
initialization-Teil der Unit
Forms gelegt?).
Was die
1er angeht: Du hast dein Formular nicht zufällig
Form genannt, oder? Das wäre nämlich nicht besonders gut (und sollte eigentlich auch nicht funktionieren), da es die Klasse
TForm schon gibt. Sonst setzt dort einfach den Namen deines Formulars ein - und schick beim ersten noch ein
T vorraus.
Aber vielleicht wäre es wirklich am Besten, wenn du das Projekt nochmal neu zusammenbastelst.
Martello - Do 12.03.09 21:13
Narses hat folgendes geschrieben : |
Moin!
Martello hat folgendes geschrieben : | Einmal kam die Fehlermeldung mit dem defekten Header noch, aber meistens bleibt sie beim Öffnen jetzt aus.
Das erscheint mir alles recht komisch... | Meistens? :? Entweder das Projekt ist kaputt oder nicht, aber [i]manchmal? :gruebel:
Hast du zufällig das Projekt in einen andern Ordner kopiert/verschoben und die Dateireferenzen im Projekt nicht angepasst? :nixweiss:
Martello hat folgendes geschrieben : | | Vielleicht bau' ich die Anwendung am besten nochmal ganz von vorne... | Ja, das scheint mir auch eine gute Idee zu sein. :(
cu
Narses |
Ich hatte ein ganzes Projekt in ein neues Verzeichnis kopiert und dort weitergearbeitet.
Aber das "einfach neu machen" ist doch nicht so einfach; denn im Hintergrund passiert so viel und das wirkt auf die Eingabe in die Unit auf geistervolle Weise ein; ich blick es nicht. Meine Laune für Delphi sinkt und ich sehne mich nach TP, wo der Autor Herr dessen bleibt, was im Editor passiert.... :(
Gruß
Martello
Narses - Do 12.03.09 21:20
Moin!
Martello hat folgendes geschrieben : |
| Ich hatte ein ganzes Projekt in ein neues Verzeichnis kopiert und dort weitergearbeitet. |
Ha :D dachte ich´s mir doch. 8)
Wenn du sowas machst, dann
musst du alle Code-Fenster in der IDE schließen, die Projektverwaltung öffnen und mit einem Doppelklick auf den Projektelementen diese neu öffnen. Grund: Irgendwie merkt sich die IDE, welche Fenster für ein Projekt offen waren und öffnet diese beim Öffnen des Projekts. Allerdings: wenn du das Projekt kopiert hast, werden die Fenster mit dem Inhalt der Dateien an der
Originalposition im Dateisystem geöffnet (erkennt man am Pfad oben in der Titelleiste des IDE-Code-Fensters). :idea: Du arbeitest dann versehentlich noch mit den alten Dateien, und das führt dann zu Chaos!
cu
Narses
Xentar - Do 12.03.09 21:23
Narses hat folgendes geschrieben : |
Moin!
Martello hat folgendes geschrieben : | | Ich hatte ein ganzes Projekt in ein neues Verzeichnis kopiert und dort weitergearbeitet. | Ha :D dachte ich´s mir doch. 8)
Wenn du sowas machst, dann musst du alle Code-Fenster in der IDE schließen, die Projektverwaltung öffnen und mit einem Doppelklick auf den Projektelementen diese neu öffnen. Grund: Irgendwie merkt sich die IDE, welche Fenster für ein Projekt offen waren und öffnet diese beim Öffnen des Projekts. Allerdings: wenn du das Projekt kopiert hast, werden die Fenster mit dem Inhalt der Dateien an der Originalposition im Dateisystem geöffnet (erkennt man am Pfad oben in der Titelleiste des IDE-Code-Fensters). :idea: Du arbeitest dann versehentlich noch mit den alten Dateien, und das führt dann zu Chaos! |
Dieses "irgendwie" nennt sich Projekt-Desktop, und ist meiner Meinung nach eine sehr gute Erfindung, wenn man weiß was man tut ;)
Falls du wirklich mal mal ein Projekt in ein neues Verzeichnis umziehen möchtest:
Delphi Schließen -> Projekt mit allen Dateien verschieben -> Wichtig: *.dsk Datei löschen! Hier wird gespeichert, welche Fenster offen waren, und diese zeigen somit u.U. auf den alten Pfad -> Projekt wieder öffnen. Fertig.
Narses - Do 12.03.09 21:27
Moin!
Xentar hat folgendes geschrieben : |
| Dieses "irgendwie" nennt sich Projekt-Desktop |
Stimmt, das meinte ich. :P
cu
Narses
Martello - Do 12.03.09 21:40
Xentar hat folgendes geschrieben : |
Narses hat folgendes geschrieben : | Moin!
Martello hat folgendes geschrieben : | | Ich hatte ein ganzes Projekt in ein neues Verzeichnis kopiert und dort weitergearbeitet. | Ha :D dachte ich´s mir doch. 8)
Wenn du sowas machst, dann musst du alle Code-Fenster in der IDE schließen, die Projektverwaltung öffnen und mit einem Doppelklick auf den Projektelementen diese neu öffnen. Grund: Irgendwie merkt sich die IDE, welche Fenster für ein Projekt offen waren und öffnet diese beim Öffnen des Projekts. Allerdings: wenn du das Projekt kopiert hast, werden die Fenster mit dem Inhalt der Dateien an der Originalposition im Dateisystem geöffnet (erkennt man am Pfad oben in der Titelleiste des IDE-Code-Fensters). :idea: Du arbeitest dann versehentlich noch mit den alten Dateien, und das führt dann zu Chaos! |
Dieses "irgendwie" nennt sich Projekt-Desktop, und ist meiner Meinung nach eine sehr gute Erfindung, wenn man weiß was man tut ;)
Falls du wirklich mal mal ein Projekt in ein neues Verzeichnis umziehen möchtest:
Delphi Schließen -> Projekt mit allen Dateien verschieben -> Wichtig: *.dsk Datei löschen! Hier wird gespeichert, welche Fenster offen waren, und diese zeigen somit u.U. auf den alten Pfad -> Projekt wieder öffnen. Fertig. |
Kann ich das Projekt auf die folgende Weise neu bauen:
Alle Formularelemente werden erzeugt, und per Klick werden dabei die entsprechenden "leeren" Einträge in der Unit1 automatisch generiert.
Diese neuen automatischen Einträge sind nun "rein zufällig" identisch mit den alten, in der Original-Unit erhaltenen.
Dann könnte ich doch in der neuen Unit die neuen Texte durch die alten ersetzen (mit dem spezifischen Code). Oder bestehen zwischen dem Inhalt der Unit (die ich editiere) und dem System unsichtbare Beziehungen, die dem entgegenlaufen?
Gruß
Martello
Yogu - Do 12.03.09 21:59
Martello hat folgendes geschrieben : |
| Kann ich das Projekt auf die folgende Weise neu bauen: |
Probier's doch einfach aus ;)
Wenn ich eines nicht verstehe, dann ist es die mangelnde Experimentierfreudigkeit von EE-Usern. Kaputtgehen kann doch nichts - vorrausgesetzt natürlich, dass du dein Projekt vorher sicherst (was sowieso ungefähr täglich passieren sollte).
Aber ich denke auch, dass die von dir genannte Vorgehensweise erfolgreich sein könnte. :D
Martello - Do 12.03.09 22:57
Yogu hat folgendes geschrieben : |
Martello hat folgendes geschrieben : | | Kann ich das Projekt auf die folgende Weise neu bauen: |
Probier's doch einfach aus ;)
Wenn ich eines nicht verstehe, dann ist es die mangelnde Experimentierfreudigkeit von EE-Usern. Kaputtgehen kann doch nichts - vorrausgesetzt natürlich, dass du dein Projekt vorher sicherst (was sowieso ungefähr täglich passieren sollte).
Aber ich denke auch, dass die von dir genannte Vorgehensweise erfolgreich sein könnte. :D |
Einfacher war es, nur den eigenen Code (wie nennt man das eigentlich, was zwischen "begin" und "end" noch fehlt?)
einzutragen, nachdem die Elemente mausklickig sich_erzeugt wurden.
Aber ich kann das gesamte Projekt doch jetzt z.B. zippen und auf einem anderen Rechner (z.B. morgen vormittag) weiterbearbeiten. Oder muß ich dort auch die PATH-Umgebung meines Home-PC reproduzieren, um unangenehme Erlebnisse zu vermeiden?
Gruß
Martello
Narses - Do 12.03.09 23:11
Moin!
Martello hat folgendes geschrieben : |
| Aber ich kann das gesamte Projekt doch jetzt z.B. zippen und auf einem anderen Rechner (z.B. morgen vormittag) weiterbearbeiten. Oder muß ich dort auch die PATH-Umgebung meines Home-PC reproduzieren, um unangenehme Erlebnisse zu vermeiden? |
Klar kannst du das Projekt kopieren (mache ich ja auch häufiger). :nixweiss: Aber: vor dem Öffnen des kopierten Projekts entweder die .dsk löschen oder alle Code-Fenster schließen und aus der Projektverwaltung neu öffnen. :idea: ;)
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!