AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Parameter oder Konstanten sind nur in unsicheren Prozeduren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter oder Konstanten sind nur in unsicheren Prozeduren

Ein Thema von malibu85 · begonnen am 27. Dez 2007 · letzter Beitrag vom 27. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#1

Parameter oder Konstanten sind nur in unsicheren Prozeduren

  Alt 27. Dez 2007, 13:39
Hallo ich muss für eine Klausur, etwas über Zeiger und Pointer wissen. Leider kan ich die Programmierbeispiel vom Doc nicht nachmachen, da ich folgende Fehlermeldung beim compileren erhalte:
[Pascal Fehler] Unit1.pas(42): E2410 Unsichere Zeigervariablen, Parameter oder Konstanten sind nur in unsicheren Prozeduren zulässig.
Habe mit den Compilerbefehlen {$UNSAFECODE ON} und {$T+} versucht diese Sperre zu umgehen aber hat nicht funktioniert.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  Type T_Stoffe = Record

       Aluminium :real;
       Eisen :real;
       Silber :real;
       Kupfer :real;
       Zinn :real;

  End;

var
  Form1: TForm1;



implementation

{$R *.nfm}
{$T+}
{$UNSAFECODE ON}



procedure TForm1.Button1Click(Sender: TObject);

var Zeiger_T_Stoffe:^T_Stoffe;

begin

new(Zeiger_T_Stoffe);




end;

end.


wie man sieht nichts spannendes. Das steht in jedem Kapitel über Zeiger drin aber leider nichts über den Sicherheitscode und ddessen Einstellungen. Liegt bestimmt an .net?
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 13:57
Hallo,

bist Du sicher, dass die Kenntnisse über Zeiger/Pointer im Zusammenhang mit Delphi.NET gefragt sind? Dadurch, dass NET vollständig objektorientiert, also immer mit Klassen arbeitet, spielen Zeiger zumindest in der Praxis keine Rolle. Deshalb verstehe ich Deinen Code an dieser Stelle nicht.

Aber bitte nicht wundern; das kann auch mein Problem sein - siehe meine Signatur. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 14:15
Hi,

versuchs mal unter Delphi für Win32.

Wenn du nicht gesagt hättest, dass es für die Schule sein sollte, hätt ich dir zu Klassen statt Zeigern geraten. Ich hab es immerhin geschafft, mit meinem Lehrer auszuhandeln, dass ich statt eines Zeigeransatzes wie bei allen anderen Klassen werwenden durfte, um Liste, Baum usw. zu implementieren. Gleich "richtiges" OOP zu nehmen konnte ich ihn nicht überzeugen.

(Warum muss eigentlich nach Leheremeinung jeder die gesamte Evolution von der Programmierer durchmachen? Wäre doch sinnvoller, gleich mit dem modernen anzufangen. Ich hab Records und Zeiger erst kennengelernt, als ich schon längst mit Klassen vertraut war, und geschadet hats nicht.)

Aber Zeiger unter .NET? Sind doch allerhöchstens noch für P/Invoke wichtig, oder?

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#4

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 14:22
ja da hast du recht. Es werden keine Fragen im Zusammenhang mit zeigern und delphi.net geben. Ich habe nur erstmal versucht, einfache zeiger zu implementieren weil ich später was mit listen machen möchte. Listen und Zeiger sind bei uns in dem fach Algorithmen und datenstruckturen drin und auf jeden fall thema der klausur. da hätte man es in cleichter aber wir programmieren in objrct pascal. Ich denke mal, dass ich dann eine win32 version verwenden müßte oder?
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#5

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 14:28
@Falter...Zeiger muss man schon beherrschen..im Zusammenhang mit Listen und Bäume auf alle fälle. Vielleicht ist es in delphi weniger von Bedeutung aber ich denke in C/C++ und vor allem bei Systemprogrammierung unter unix ist das schon wichtig. Aber danke für deinen Tipp. Ich versuche es mal mit der Win32 -Version.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 15:00
Hi,

bitte versteh mich so:

Ich bin kein Zeigergegner, sondern ein Lehrplankritiker.

Und: ich habe Zeiger bereits beherrscht, bevor wir sie in der Schule hatten. Ich finde eben nur, es wäre besser, wenn wir in der Schule schon längst OOP angefangen hätten, statt uns damals mit Zeigern zu quälen und dann mit (Parkschein)Automaten.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 15:12
Zeiger gibt es eigentlich auch unter Java/.NET noch jedoch sind diese immer typgebunden und werden Referenzen genannt und können nicht mal auf "irgendwas" zeigen (so wie in C/C++ üblich das man einen void-Pointer zurückgibt der einmal eine Record, einmal ein integer und einmal eine Klasse repräsentieren kann). Die Laufzeitumgebung muß immer wissen auf welche Instanz wieviel Zeiger (äh Referenzen) noch verweisen und was in den Abfalleimer wandern kann (Garbage Collection). Auch muß verhindert werden das man wild mit Zeigerarithmetik operiert (Knieschuss-Operationen) und dann versehentlich über irgendwelche Gültigkeitsbereiche hinauszeigt.

Dein Problem dürfte sein das die New-Funktion/Prozedur genau so einen "Zeiger auf irgendwas" zurückliefert. Ich denke auch das diese Funktion in der Liste der Funktionen/Prozeduren steht die unter .NET bei Delphi nicht mehr gehen und für einen .NET-Port umgebaut werden müssen. Hier wäre in deinem beispiel ein TObject statt eines Records das einfachste.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#8

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 16:53
also der quellcode hat eigentlich keinen sinn. Ich habe vorher noch nicht in delphi progrmmiert und wollte mich in der Klausur auch nur auf die allgemeinen theoriefragen der Informatik zuwenden. Der Quellcode war nur ein kleiner compilertest um zu sehen ob ich ein paar syntktische Grundlagen beherrsche. Habe jetzt eine Win32-version und da funktionirt alles. Ich habe mich mal ein bisschen zum thema .net programmierung bei wikipedia ngelesen. Bisher ist dieser Trend wohl an mir vorbei gegangen. Ich weiß jetzt nicht ob das das richtige forum dafür ist aber inwiefern hat das Zukunft? Ich meine Java ist auch plattformunabhängig. Wozu .net?
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 16:55
Hi,

Zitat von Bernhard Geyer:
Dein Problem dürfte sein das die New-Funktion/Prozedur genau so einen "Zeiger auf irgendwas" zurückliefert.
Falsch. New funktioniert nur bei typisierten Zeigern. Es handelt sich nicht um eine "echte" Prozedur, sondern New(A) macht ungefähr soviel wie GetMem(A, SizeOf(A^)), also es reserviert genau so viel Speicher, wie nötig. Mit einem untypisierten Zeiger funktioniert es gar nicht. (Das einzige, was ich gelernt habe, als wir Zeiger hatten, war New; ich habe vorher statt New und Dispose immer GetMem und FreeMem genommen und nehme es auch heute noch bevorzugt.)

Zitat:
Ich denke auch das diese Funktion in der Liste der Funktionen/Prozeduren steht die unter .NET bei Delphi nicht mehr gehen und für einen .NET-Port umgebaut werden müssen.
Schätz ich auch.

Zitat:
Hier wäre in deinem beispiel ein TObject statt eines Records das einfachste.
Nur, dass er eben gerade Zeiger lernt und nicht Klassen.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#10

Re: Parameter oder Konstanten sind nur in unsicheren Prozedu

  Alt 27. Dez 2007, 17:03
aber so ganz kann ich die verwendung von Zeigern nicht verstehen.Jedenfalls in Delphi. In C kannst du mit Zeigern super eine Parameterübergabe erzeugen. aber liegt denn der Sinn in delphi nur darin den Speicher effizient zu verwalten?
  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 13:54 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