Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sofortiges Beenden des Prgrammes (https://www.delphipraxis.net/136894-sofortiges-beenden-des-prgrammes.html)

Fridolin Walther 9. Jul 2009 19:16

Re: Sofortiges Beenden des Prgrammes
 
Ich empfehle Dir in einem Programmier Buch Deiner Wahl mal das Thema Sichtbarkeiten nachzuschlagen ;).

gangs-taas 9. Jul 2009 19:17

Re: Sofortiges Beenden des Prgrammes
 
sichtbarkeit ?
ich habe doch in dem code garnichts mit sichtbarkeit zu tun ?!

Fridolin Walther 9. Jul 2009 19:20

Re: Sofortiges Beenden des Prgrammes
 
Doch klar ... Du greifst auf Memo1 zu. Ist Memo1 für Deine Prozedur sichtbar oder nicht? Wenn nicht, wieso nicht? ;)

gangs-taas 9. Jul 2009 19:22

Re: Sofortiges Beenden des Prgrammes
 
doch ich gehe davon aus dass es sichtbar ist ^^
aber ich versteh nicth was das mit meinem problem zu tun hat ^^

Fridolin Walther 9. Jul 2009 19:25

Re: Sofortiges Beenden des Prgrammes
 
Frage: Wenn da steht "undefinierter Bezeichner", wieso kommst Du dann auf die Idee, daß Memo1 in InDieMemoFelderSchreiben sichtbar wäre? Meinst Du der Compiler sagt Dir nur zum Spaß, daß er den Bezeichner nicht kennt? ;)

Aber um das Ganze aufzuklären:
Das Memo1 ist Bestandteil von Deinem Formular (ich nehme an es heißt Form1). Führ Dir jetzt vor Augen was passiert wenn Du einen Bezeichner referenzierst. Wo schaut Delphi dann nach? Nun, zuerst mal in den lokalen Bezeichnern. Ist Memo1 ein lokaler Bezeichner der Prozedur? Wohl kaum. Falls die Prozedur eine Methode einer Klasse wäre, wird nachgeschaut ob der Bezeichner ein Member der Klasse ist. Die Prozedur in deinem Fall ist nicht Teil einer Klasse. Entsprechend gibts auch da nichts zu finden. Zu guter letzt wird global nachgeschaut ob Memo1 definiert ist. Ist es das in deinem Fall? Nein.

Es gibt jetzt 2 Möglichkeiten wie Du dafür sorgen kannst, daß das Memo1 für Deine Prozedur sichtbar wird. Das Memo1 selbst ist zwar nicht sichtbar, aber das Formular ist es. Du könntest also auf Form1.Memo1 zugreifen. Die zweite Möglichkeit bestünde darin, die Prozedur zu einer Methode des Formulars zu machen. Letztere ist dabei übrigens zu bevorzugen.

gangs-taas 9. Jul 2009 19:28

Re: Sofortiges Beenden des Prgrammes
 
aber ich hab das doch nie unsichtbar gemacht und durch das hier :

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Image1: TImage;
    [b]Memo1: TMemo;[/b]
    Memo4: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo5: TMemo;
    Memo6: TMemo;
    Memo7: TMemo;
    Memo8: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Button2: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
fast ganz oben ^^ sichbar gemacht odern icth ?
dadruch ist es da und die procedures müssten darauf zugreifen können oder nicht ?1

TBx 9. Jul 2009 19:29

Re: Sofortiges Beenden des Prgrammes
 
Und so als Tip am Rande, ein TMemo hat keine Property Text, wohl aber die Lines des selben ;-) Blödsinn, gleich wieder vergessen!

und meinst Du nicht, dass es evtl. Zeit für ein paar Grundlagentutorials wird? (meine private Meinung)

gangs-taas 9. Jul 2009 19:32

Re: Sofortiges Beenden des Prgrammes
 
Zitat:

Zitat von TBx
Und so als Tip am Rande, ein TMemo hat keine Property Text, wohl aber die Lines des selben ;-)


ich versteh nicth was das bedueten soll....

heißt das es gibt kein 'memo.TEXT' oder was ?

aber ich kann doch sowas machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := 'blödsinn';
end;

also muss es eine property text geben oder nicht ?!



EDIT:


ich weiß ja nicht was ich durchlesen soll xD
die 'grundlagentutorials' die ich kenn da weiß ich vieles von und ich kann nicht gezielt das lesen was ich nicht weiß weil ich nicht weiß was ich nicth weiß ...

rollstuhlfahrer 9. Jul 2009 19:35

Re: Sofortiges Beenden des Prgrammes
 
@all: .Text gibt es.

Zum Thema Sichtberkeit:
TForm1 ist ein Objekt mit published Memo1. Wenn du jetzt auf das Memo zugreifen willst, musst du dem Compiler schon sagen welches Memo du gern hättest, da man ein Objekt beiebig oft erzeugen kann. Lösung 1: Memo übergeben als parameter; Lösung 2: Prozedur in das Objekt aufnehmen.

Bernhard

PS: In Delphi-Tags gehen KEINE anderen Tags.

Zitat:

Zitat von gangs-taas
ich weiß ja nicht was ich durchlesen soll xD

Wie wärs mit etwas OOP und Objektkunde?

gangs-taas 9. Jul 2009 19:43

Re: Sofortiges Beenden des Prgrammes
 
Zitat:

Zitat von rollstuhlfahrer
@all: .Text gibt es.

Zum Thema Sichtberkeit:
TForm1 ist ein Objekt mit published Memo1. Wenn du jetzt auf das Memo zugreifen willst, musst du dem Compiler schon sagen welches Memo du gern hättest, da man ein Objekt beiebig oft erzeugen kann. Lösung 1: Memo übergeben als parameter; Lösung 2: Prozedur in das Objekt aufnehmen.


belibig oft ?
es gibt doch nur ein MEMO1 die anderen heißen Memo2 oder 3 oder so aber es gibt nur 1 memo1 oder ?!

udn zu deinen lösungen.
ich weiß nicht wie ich das übergeben soll... ich weiß wie ich variablen als parameter übergeb aber wie mach ic hdas mit Typen bezeichnungen ?
und wenn ic hdas so mach


Delphi-Quellcode:
procedure InDieMemoFelderSchreiben;
Type
Memo1 = TMemo
begin
  Zwischenspeicher.LoadFromFile(Woche28);
  Memo1.text := Zwischenspeicher[4];
end;

ist zwar der erste Fehler weg, dafür taucht ein nächster auf der heißt 'auf Element 'text' kann nicht zugegriffen werden'

wieso nicth ?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz