Autor Beitrag
Metschu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: Mi 18.11.09 22:23 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Mi 18.11.09 22:25 
In welcher Unit ist Break denn definiert? Verwende dann doch Unit.Break ;)

_________________
Die Lösung ist nicht siebzehn.
Metschu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: Do 19.11.09 20:37 
user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
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)

ausblenden volle Höhe 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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: 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

ausblenden 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 :)

_________________
Die Lösung ist nicht siebzehn.
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Do 19.11.09 21:44 
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
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?

_________________
Die Lösung ist nicht siebzehn.
Metschu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: 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".
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 19.11.09 22:10 
Rechtsklick auf Break -> Deklaration suchen.

Dann mit dem erhaltenen Unit-Namen explizit aufrufen
Metschu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: 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:
ausblenden 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