Autor |
Beitrag |
hassedelphi
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 13.08.03 09:59
hi
weiß jemand, wie ich unterbinden kann, dass der compiler in eigen von mir erstellten proceduren ausdrücke wie findcomponent (nur als beispiel) als undefinierter bezeichner meldet? 
_________________ you're not be able to help, that you're an human
|
|
Andreas_Sans
      
Beiträge: 76
|
Verfasst: Mi 13.08.03 10:15
das Problem hatte ich auch. man muss das jeweilige Formblatt angeben auf dem man die Komponente sucht z.B.:
Delphi-Quelltext 1:
| tpanel(form1.FindComponent('panel'+IntToStr(i))).font.Color := clblue |
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 13.08.03 10:34
thx aber nachdem ich das ändere kommt die nächste fehlermeldung, die vorher nicht vorhanden war:
[Fehler] Unit1.pas(64): Ungenügende Forward- oder External-Deklaration: 'TForm1.modeundruck'
_________________ you're not be able to help, that you're an human
|
|
Andreas_Sans
      
Beiträge: 76
|
Verfasst: Mi 13.08.03 11:27
schreib mal die ersten 100 zeilen deines Programms hin
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 13.08.03 11:37
Delphi-Quelltext 1: 2: 3:
| procedure Button1Click(Sender: TObject); procedure modeundruck; private |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure modeundruck; var efeld,rfeld : Tpanel; e : integer; begin if (mode = 1) or (mode = 2) then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=('/'); end; if mode = 3 then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=(floattostrf(mr,fffixed,999999999,5)+' kg'); end; for e := 1 to 8 do (form1.FindComponent('checkbox'+inttostr(e))as Tcheckbox).checked := false; end; |
_________________ you're not be able to help, that you're an human
|
|
Andreas_Sans
      
Beiträge: 76
|
Verfasst: Mi 13.08.03 12:12
Ich würde die Procedure so schreiben :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure modeundruck( mode : integer; Tm1, mr : Real);; var e : integer; begin if (mode = 1) or (mode = 2) then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=('/'); end; if mode = 3 then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=(floattostrf(mr,fffixed,999999999,5)+' kg'); end; for e := 1 to 8 do (form1.FindComponent('checkbox'+inttostr(e))as Tcheckbox).checked := false; end; |
man muss die Variablen, die man aus dem Programm übernehmen will, hinter den Procedurenamen in Klammern schreiben. Sollen die Variablenwerte verändert werden muss man noch ein Var davor setzten.
Ich glaube die Panele muss man nicht nochmal definieren, daher hab ich sie weggelassen.
Diese Zeile procedure modeundruck; würde ich ganz weglassen. Wenn du die Procedur später aufrufen willst, geht das so :
Delphi-Quelltext 1:
| modeundruck(mode,Tm1,mr); |
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: Mi 13.08.03 12:15
es fehlt einfach nur das
procedure TForm1.modeundruck;
MfG,
Tryer
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 13.08.03 12:28
habe Tform1. vorangesetzt, da kommt aber sowas:
---------------------------
Fehler
---------------------------
'=' erwartet, aber ';' gefunden.
---------------------------
OK
---------------------------
_________________ you're not be able to help, that you're an human
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 13.08.03 12:29
_________________ you're not be able to help, that you're an human
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: Mi 13.08.03 12:34
Damit sowas nicht passiert und man sich die Arbeit noch vereinfacht kann man so vorgehen:
- man erstellt die Methoden-Deklaration im interface-Abschnitt
- dann entweder Rechtsklick -> "Klasse beim Cursor vervollständigen" oder Strg-Shift-C
Dadurch werden automatisch die Prozedur-Rümpfe für die Methode(n) erstellt, das funzt u.a. auch für Get/Set-Methoden von Properties, diese werden dann auch automatisch deklariert.
MfG,
Tryer
|
|