Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   StringGrid als Variable (https://www.delphipraxis.net/43860-stringgrid-als-variable.html)

Alexis1987 9. Apr 2005 17:55


StringGrid als Variable
 
Hallo erstmal
Ich hab folgendes Problem

Ich würde gerne mit einem Stringgrid arbeiten, das nicht im Formular auftaucht.
Deshalp habe ich es als Globale variable deklariert.

Jzt taucht allerdings immer ger Gleiche Fehler bei auf sobald auf diese varable zugegriffen wird:

..Zugriffsverletzung an der stelle...

Kann es sein, dass ich die variable erst initialisieren muss wenn ja wie???

Thx 4 Answer

Sharky 9. Apr 2005 17:57

Re: StringGrid als Variable
 
Zitat:

Zitat von Alexis1987
...Ich würde gerne mit einem Stringgrid arbeiten, das nicht im Formular auftaucht.
Deshalp habe ich es als Globale variable deklariert....

Autsch,

warum eine Visuelle Komponente (Object) verwenden wenn sie nicht angezeigt wird?
Dein Fehler kommt wohl daher das Du das Objekt nicht zur Laufzeit erzeugst!
Aber ich würde mir lieber überlegen das ohne eine TStringGrid zu lösen.

DP-Maintenance 9. Apr 2005 17:58

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Schaut doch bitte mal die Beschreibungen der einzelnen Sparten genau an. ;-)

Antigo 9. Apr 2005 17:58

Re: StringGrid als Variable
 
wenn mich nicht alles täuscht so:

Delphi-Quellcode:
var mystringgrid: TStringgrid;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  mystringgrid:=TStringgrid.create;
end;

Alexis1987 9. Apr 2005 18:03

Re: StringGrid als Variable
 
Das Stringgrid ist zwingend notwenid für mein Projekt, da sich alles auf den eigenschaften eines Stringgrid stützt. Es würde zu lange dauern es genau zu erleutern. Sagen wir einfach das String grid ist Notwendig. (Danke trotzdem für den Tip)

Außerdem sollte ich vllt anfügen, dass der fehler erst zur Laufzeit auftritt. Und offensichtlich nicht vom Compiler abgefangen wird.

Wenn ich das Stringgrid erst zur Laufzeit erzeuge, beschwert sich doch der Compiler, dass er das Stringgrid nicht kennt oder nicht???


@Andigo
das habe ich auch schon versucht, allerdings beschwert er sich dann dass erzu wenig parameter hat und da ich nicht weiß welche parameter ich anfügen soll bin so auch nicht weiter gekommen obwohl ich denke dass hier irgendwo der Fehler liegt

Sharky 9. Apr 2005 18:06

Re: StringGrid als Variable
 
Zitat:

Zitat von Alexis1987
...
Wenn ich das Stringgrid erst zur Laufzeit erzeuge, beschwert sich doch der Compiler, dass er das Stringgrid nicht kennt oder nicht???

Ne, beim compilieren kennt er ja eine "Variable" vom Typ TStringGrid. Darum ist für den Compiler alles okay. Aber zur Laufzeit wird versucht auf eine Instanz von TStringGrid zuzugreifen die noch nicht erzeugt wurde.
Darum einfach mit .Create() erzeugen und im OnDestroy der Form mit myStringGird.Free wieder freigeben.

Alexis1987 9. Apr 2005 18:21

Re: StringGrid als Variable
 
hmm...

also

meie variable heißt SGCode

Ich weiß wie ich selbst erstellten klassen initialisier.
BSP "Con := TConverter.create"


also habe ichs so versucht:
1. SgCode := TStringgrid.create(); ---->> Fehler zu wenig wirkliche parameter
2. TStringgrid.create(SGCode); ------->> funzt aber ändert nichts an ursprünglichen Fehlermeldung
3. SgCode.Create(TStringgrid); ------->> inkompatibele Datentypen

sind alle drei möglichkeiten falsch oder wird der Ursprüngliche fehler wo anders liegen???

Sharky 9. Apr 2005 18:29

Re: StringGrid als Variable
 
Das .Create möchte den "Besitzer" wissen. Am einfachsten machste Du
Delphi-Quellcode:
  SgCode := TStringGrid.Create (self);
im .FormCreate deiner Form. Dann ist durch das self die Form der "Besitzer".

Antigo 9. Apr 2005 18:30

Re: StringGrid als Variable
 
F1 sagt
Delphi-Quellcode:
constructor Create(AOwner: TComponent); override;
also
Delphi-Quellcode:
Stringgrid1.create(self);
probiers mal ;)


mist zu langsam :)

Robert_G 9. Apr 2005 18:36

Re: StringGrid als Variable
 
Zitat:

Zitat von Alexis1987
sind alle drei möglichkeiten falsch oder wird der Ursprüngliche fehler wo anders liegen???

Alle 3 sind falsch. ;)
  1. Zitat:

    Zitat von Alexis1987
    SgCode := TStringgrid.create(); ---->> Fehler zu wenig wirkliche parameter

    Hast du schonmal gelesen, was er dir an Parametern vorschlägt?
  2. Zitat:

    Zitat von Alexis1987
    TStringgrid.create(SGCode); ------->> funzt aber ändert nichts an ursprünglichen Fehlermeldung

    Ein Constructor wird dir wie eine function, die neue Instanz liefern.
    Wenn du dir mal den Namen des Paremeters ansiehst, dürfte dir klar sein, warum er hier nicht meckert.
    Nur wo packst du die Instanz hin? SqCode bleibt doch nil. :gruebel: -> AV beim Zugriff auf einen Member von SgCode.
  3. Zitat:

    Zitat von Alexis1987
    SgCode.Create(TStringgrid); ------->> inkompatibele Datentypen

    Wie soll etwas aus dem Nichts sich selbst erzeugen? :gruebel:

Ehrlich gesagt kann ich keinerlei Verständnis dafür aufbringen. In der Hilfe bekommst du die Info welcher Parameter was macht. (Und es ist hier nunmal nur einer)
Außerdem würdest du dort finden was ein Constructor ist bzw. wie man ihn einsetzt. (Das scheinst du nämlich nicht zu wissen)

Zu guter Letzt...
Es gibt keinerlei Grund für das Grid eine globale Variable sein.
Es macht außerdem keinerlei Sinn ein Control irgendwo zu erzeugen, nur damit man ein / zwei Eigenschaften benutzen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.
Seite 1 von 2  1 2      

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