Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - "Break" und "Word_TLB" vertragen sich nicht ? ?
Metschu - Mi 18.11.09 22:23
Titel: "Break" und "Word_TLB" vertragen sich nicht ? ?
Hallo zusammen!
Ich erstelle ein kleines Prog, mit dem ich ein Word Dokument ausfüllen und ausdrucken möchte.
Unter anderem ist dort eine For-Schleife, die ich mit Break verlasse, Klappt auch alles Wunderbar.
Wenn ich nun eine die Word_TLB in der Uses Liste mit aufnehme, bekomme ich auf einmal folgende Fehlermeldung des Compeilers an allen stellen, an denen die die For Schleife mit Break unterbrochen werden soll:
[Fehler] Unit1.pas(35): Anweisung erforderlich, aber Ausdruck vom Typ 'TGUID' gefunden
Lösche ich die Word_TLB ist die Fehlermeldung auch wieder weg.
Muß ich Break jetzt anders bennenen bzw der For-Schleife zuweisen? Wenn ja, wie? :nixweiss:
Vielen Dank schonmal!
Gruß
Torsten
Mitmischer 1703 - Mi 18.11.09 22:25
In welcher Unit ist Break denn definiert? Verwende dann doch Unit.Break ;)
Metschu - Do 19.11.09 20:37
Mitmischer 1703 hat folgendes geschrieben : |
| In welcher Unit ist Break denn definiert? Verwende dann doch Unit.Break ;) |
Wenn ich dich richtig verstanden habe, soll ich das so machen:
(Ist einfach nur ein kleines Testprogram)
Delphi-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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, Word_TLB;
type TForm1 = class(TForm) Button1: TButton; WordApplication1: TWordApplication; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to 10 do begin; if i=5 then unit1.break; end; end; end. |
Dann habe ich allerdings folgende Fehlermeldung:
[Fehler] Unit1.pas(35): Undefinierter Bezeichner: 'break'
Hab ich das falsch verstanden?
Mitmischer 1703 - Do 19.11.09 21:02
Jein, du möchtest, wenn break in zwei Units, z. B. einmal als Feld und einmal als Methode definiert ist, ja auf die Methode zugreifen - und nicht das Feld! Also musst du angeben, auf welches Break du zugreifen willst. Das kannst du, indem du auf die Methode über die Unit zugreifst, also auf die fiktive Unit HierIstBreakAlsMethodeDefiniert. Also sagst du
Delphi-Quelltext
1: 2: 3: 4:
| procedure Method_Break; begin HierIstBreakAlsMethodeDefiniert.Break; end; |
Damit greifst du auf die Methode und nicht auf das Feld zu.
Bloß weiß ich nicht, wie die Unit "HierIstBreakAlsMethodeDefiniert" in Wirklichkeit heißt ;) - das müsstest du herausfinden :)
FinnO - Do 19.11.09 21:41
moment mal?
ist "break" nicht ein Delphi-Feature - demnach also keine methode sondern ein Sprachbestandteil? Ich Vermute den Fehler ganz woanders, könntest du die Schleife mal posten?
Mitmischer 1703 - Do 19.11.09 21:44
FinnO hat folgendes geschrieben : |
moment mal?
ist "break" nicht ein Delphi-Feature - demnach also keine methode sondern ein Sprachbestandteil? Ich Vermute den Fehler ganz woanders, könntest du die Schleife mal posten? |
Das könnte sein...
Sind solche Methoden nicht in System definiert?
Metschu - Do 19.11.09 22:04
Hi!
Die schleife habe ich oben schonmal gepostet.
Das ist ein kleines Testprogramm zum Fehler suchen.
Die Schleife klappt ohne Probleme.
"Unit1." ist dann natürlich weg, es steht nur "break".
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| ... for i:=1 to 10 do begin; if i=5 then break; end; ... |
Sobald ich dann aber die Word Komponente hinzufüge (also "Word_TLB" in die uses liste aufnehme) hab ich die Fehlermeldung.
Sowohl in diesem Testprogram, als auch in dem eigentlichen Project.
Gruß
Torsten
FinnO - Do 19.11.09 22:10
Rechtsklick auf Break -> Deklaration suchen.
Dann mit dem erhaltenen Unit-Namen explizit aufrufen
Metschu - Do 19.11.09 22:35
Danke für den Tip.
Break ist auch ein Befehl der Word_TLP.
Wenn ich die Word_TLP entferne und wieder Deklaration suche, bekomme ich die Fehlermeldung "System.pas nicht gefunden". Nicht schlimm, denn dann ich mal etwas gespielt und siehe da es klappt wie folgt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| ... for i:=1 to 10 do begin; if i=5 then system.break; end;... |
Vielen Dank für die Unterstützung! :zustimm:
Gruß
Torsten
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!