AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

an Formular übergebener Pointer ist nil

Ein Thema von Hazardos · begonnen am 18. Jun 2006 · letzter Beitrag vom 18. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#1

an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 14:04
Hallo @ all...

Ich übergebe einen pointer der in der Unit eines formulares deklariert ist an ein anderes Formular. Dabei geht die Speicherzuweisung irgendwie verloren... Das Ergebnis ist nil obwohl dies eigentlich nciht sein sollte, was muss ich beachten wenn ich eine solche operation vornehme?

MfG Jörn
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 14:05
ein bissl quelltext wäre nett oder?
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#3

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 14:23
okay ist ja gut... ich dachte ich hätte es unmissverständlich formuliert...

Delphi-Quellcode:
unit Unit1;
...

type
  Zeiger : ^Daten;
  Daten = record
...
var element : zeiger;
...
Daten sind werte zugewiesen und der Pointer element ist bestimmt, abruf gibt korrekte ausgabe.
Das Formular wird erzeugt und der Pointer Element von Unit1 wird auf element von unit2 übertragen, oder eben nicht, da der pointer bei nachfolgendem abruf in unit2 nicht zugewiesen ist.

Delphi-Quellcode:
unit Unit2;
...
public
  Element : Zeiger;
...
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#4

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 14:48
Zitat von Hazardos:
Daten sind werte zugewiesen und der Pointer element ist bestimmt, abruf gibt korrekte ausgabe.
Das Formular wird erzeugt und der Pointer Element von Unit1 wird auf element von unit2 übertragen, oder eben nicht
Wie wärs, wenn Du uns mal zeigen würdest, wie Du das machst?
Wie sollen wir Dir sagen, wo Dein Fehler liegt, wenn Du uns nicht verrätst, was Du tust?
Das was Du gepostest hast, sieht aus, wie extra konstruierte Beispieldeklarationen.
Poste doch mal die entsprechenden Stellen aus Deinem Originalquelltext. Sonst muß ich mir erst ne Glaskugel kaufen....

Gruß

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#5

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:05
Unit 1
Delphi-Quellcode:
...
type
  Element = ^TDaten;
  TDaten=Record
    index : Integer;

    Zeit : TDateTime;
    Kopf : String; //Zeichenzahl : byte
    Text : String; //Zeichenzahl : word

    Next,Prev : Element;
  end;

...

var Anfang, Ende, tmp : Element;

...

New (Anfang);
tmp^.index := i;
...
tmp^.Prev := Ende;
Ende^.next := tmp;
...

procedure KnopfDrück;
begin
Form2 := tForm2.create (self);
Form2.Anfang := Anfang;
end;
Unit2
Delphi-Quellcode:
...
type
...
  public
    Anfang, Ende, Current : Element;

procedure oncreate;
begin
  showmessage (Anfang^.text); //AV => Anfang = nil
end;
das dürfte das wichtigste gewesen sein... an manchen stellen vereinfacht, da die ganze streamgeschichte die da noch mit drin hängt nicht relevant ist und es so übersichtlicher ist...
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#6

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:09
auch wenn ich die variabeln in Unit1 unter public deklariere, kann ich unitintern damit arbeiten... nur das Weitere führt dann zu einer AV
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:11
Na überleg mal: Du erzeugst zuerst die Form (TForm2.Create) und weist dann den Pointer zu.

Aber bevor du den Pointer zuweist, wird schon in OnCreate auf ihn zugegriffen. Du musst ins OnCreate die Zuweisung reinschreiben.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#8

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:25
das bringt das gleiche ergebnis... hab ich auch schon dran gedacht und ausprobiert....
aebr hast recht, so ist das totaler mist... klar...
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#9

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:29
bisher:
Delphi-Quellcode:
procedure KnopfDrück;
begin
  Form2 := tForm2.create (self);
  Form2.Anfang := Anfang;
end;
besser:
Delphi-Quellcode:
procedure KnopfDrück;
begin
  Form2 := tForm2.create (self);
  Form2.Anfang := Anfang;

  ShowMessage(Form2.Anfang^.text);
end;
//bzw. eine weitere Methode in Form2 deklarieren + definieren, mit der du dann weiterarbeitest
// Beispiel:
Delphi-Quellcode:
procedure KnopfDrück;
begin
  Form2 := tForm2.create (self);
  Form2.Anfang := Anfang;
  Form2.weitereMethode();
end;
Form2:
Delphi-Quellcode:
procedure weitereMethode();
begin
  ShowMessage(Anfang^.text));
end;
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#10

Re: an Formular übergebener Pointer ist nil

  Alt 18. Jun 2006, 15:31
Ich habs grade nochmal umgeschrieben, und ich weiß nicht woran es lag.... anscheinend hab ich vorher ne kleinigkeit falsch gemacht, aber jetzt geht es so... seltsam... okay dankeschön für eure hilfe....

@ 3_of_8 hattest recht... !



Gruß Jörn
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.
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