Autor |
Beitrag |
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Do 15.04.04 11:41
Hi,
Wie vielleicht schon mancher bemerkt hat gelten Pointer im .Net als veraltet(unsafe) und nicht mehr zulässig.
So nun nach der Frage der Alternative
Ich liefere hier mal ein D7 Beispiel:
Es sollen für eine 3 Dimensionale Kurvenberechnung einen Dynamischen Speicher pro datensatz reserviert werden. Um Ressourcen zu sparen und die Programmperfomance zu optimieren denke ich dass statische Speicherreservierung unsinnig ist, denn ich weiß nicht unbedingt wieviel Daten mir die Datenbank für eine bestimmte Kurve liefert.
Delphi-Quelltext 1:
| Pkt : array[0..10,0..10] of ^real; |
Also hier die Deklarierung eines Kurvenpunktes der aus 11x11 Parameter zusammengesetzt wird.
Delphi-Quelltext 1: 2: 3: 4:
| For i := 1 to AnzahlPunkte_X do For j := 1 to AnzahlPunkte_Y do New(Pkt[i,j]); |
Hier kommen dann Berechnungen, Kurvenausgabe, bla, bla ....
Delphi-Quelltext 1: 2: 3: 4:
| For i := 1 to AnzahlPunkte_X do For j := 1 to AnzahlPunkte_Y do Dispose(Pkt[i,j]); |
Und natürlich muss der Speicher wieder freigegeben werden.
Wie meint Ihr soll nach .Net vorgegangen werden um effizient auf Speicher bzw. Dynamischen Variablen zuzugreifen und zu verarbeiten.
Thx
Moderiert von Peter Lustig (15.04.2004, 11:53): Code- durch Delphi-Tags ersetzt
Zuletzt bearbeitet von ADis am Mo 24.05.04 20:17, insgesamt 1-mal bearbeitet
|
|
mirage228
Beiträge: 338
Win 7 Prof.
Delphi 2005 Prof., Delphi 2010 Prof.
|
Verfasst: Do 15.04.04 14:49
ADis hat folgendes geschrieben: | Hi,
Wie vielleicht schon mancher bemerkt hat gelten Pointer im .Net als veraltet(unsafe) und nicht mehr zulässig.
So nun nach der Frage der Alternative
Ich liefere hier mal ein D7 Beispiel:
Es sollen für eine 3 Dimensionale Kurvenberechnung einen Dynamischen Speicher pro datensatz reserviert werden. Um Ressourcen zu sparen und die Programmperfomance zu optimieren denke ich dass statische Speicherreservierung unsinnig ist, denn ich weiß nicht unbedingt wieviel Daten mir die Datenbank für eine bestimmte Kurve liefert.
Delphi-Quelltext 1:
| Pkt : array[0..10,0..10] of ^real; |
Also hier die Deklarierung eines Kurvenpunktes der aus 11x11 Parameter zusammengesetzt wird.
Delphi-Quelltext 1: 2: 3: 4:
| For i := 1 to AnzahlPunkte_X do For j := 1 to AnzahlPunkte_Y do New(Pkt[i,j]); |
Hier kommen dann Berechnungen, Kurvenausgabe, bla, bla ....
Delphi-Quelltext 1: 2: 3: 4:
| For i := 1 to AnzahlPunkte_X do For j := 1 to AnzahlPunkte_Y do Dispose(Pkt[i,j]); |
Und natürlich muss der Speicher wieder freigegeben werden.
Wie meint Ihr soll nach .Net vorgegangen werden um effizient auf Speicher bzw. Dynamischen Variablen zuzugreifen und zu verarbeiten.
Thx
Moderiert von Peter Lustig (15.04.2004, 11:53): Code- durch Delphi-Tags ersetzt |
in .NET musst du, soweit ich weiss, sog. "delegate" benutzen. Das sind Pointer mit absoluter Typsicherheit. Ich habe mich selbst noch nicht damit beschäftigt, aber in der Hilfe findest du mit Sicherheit ein Beispiel dafür.
mfG
mirage228
Moderiert von DeCodeGuru: Der Moderationstag wurde entfernt.
_________________ May the source be with you, stranger.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.04.04 20:10
Äh, ich habe das auch mal gemacht und einen freundlichen Hinweis bekommen.
Seitdem nutze ich das [size]-Tag (Größe 10) und das bold-Tag für mein eigenes Moderations-Tag:
Moderiert von mir selbst (heute, jetzt): so geht das ohne Ärger mit den echten Mods zu kriegen
|
|
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Fr 16.04.04 08:31
Titel: AW: Zeiger und .Net
Danke für Eure Postings.
@Mirage228: delegate??? ich erzähl mal was die Hilfe schreibt:
Delegaten: Hierbei handelt es sich um eine Datenstruktur, die auf eine statische Methode oder auf eine Klasseninstanz und eine Instanzenmethode dieser Klasse verweist. Also irgendwie doch kein Pointerersatz oder?
@MathiasSimmack: Mit sowas habe ich noch nie etwas gemacht. Könntest Du paar Code-Schnipsel reinstellen, damit ich da mal rumprobieren kann wie die Performance ist?
Danke
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 16.04.04 10:37
Titel: Re: AW: Zeiger und .Net
ADis hat folgendes geschrieben: | @MathiasSimmack: Mit sowas habe ich noch nie etwas gemacht. Könntest Du paar Code-Schnipsel reinstellen, damit ich da mal rumprobieren kann wie die Performance ist? |
Das bezog sich auf etwas, das mirage in seinem Beitrag hatte. Ich hab´ auch erklärt was es war. Mit deiner Frage bzw. dem Thema hier hatte das nichts zu tun.
|
|
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Fr 16.04.04 10:51
Hi,
@MathiasSimmack: War ja klar! Fettnäpfchen Nr. 1 für den Forumsgrünschnabel. Hmm ja ich habe mich auch schon gewundert, weil ich noch nie was (im Bezug auf meinThema) davon gehört hatte. Warscheinlich zuviel Quellcode in letzter Zeit gesehen. Ist der Winter schon vorbei????
Also nichts für ungut.
Jedoch habe ich immernoch keinen guten Ansatz gefunden
Bis denn
|
|
maximus
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Fr 16.04.04 11:29
Pointer gibt es in .NET nicht mehr, wie du sicher schon festgestellt hast. Nimm doch statt dessen ganz normale referenzen (var x:TObject;)! IMO sind singles und alles andere in .NET sowieso objekte...viel mehr kann ich momentan auch nicht sagen
_________________ mfg.
mâximôv
|
|
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Mo 24.05.04 20:15
Titel: Zeiger und .Net (Problem gelößt)
Wenn es keine Pointer mehr gibt dann geht es eben so...
Dynamische Array's
Deklaration:
Delphi-Quelltext 1:
| Dyn_Array: array of integer; |
und dann später in Eurem Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| SetLength(Dyn_Array,Length(Dyn_Array)+1); ... Dyn_Array [High(Dyn_Array)] :=Wert; ... for i:=Low(Dyn_Array) to High(Dyn_Array) do begin bla bla end; |
Das ganze geht natürlich auch mit mehreren Dimensionen. siehe Delphi Hilfe "Multidimensional dynamic arrays".
Viel Spass beim proggen
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 24.05.04 21:10
[OT]
Zitat: | Delphi-Quelltext |
Müsste das nicht Array's heißen? Ich glaube seid anfang diesen Jahres ist dass Standart.
|
|
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Mo 24.05.04 22:37
Servus,
klar ist das "Standart" jedoch wollte ich speziell auf die Low() und High() Funktion aufmerksam machen, weil jeder von uns war mal Grünschnabel in Delphi. hehe
Keep rocking
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 24.05.04 22:40
(1) Es war die Rechtschreibung gemeint.
(2) Es ist Standar d, wenn wir schon dabei sind.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ADis
Hält's aus hier
Beiträge: 10
WinXP
D8 Ent
|
Verfasst: Mo 24.05.04 22:49
Ich Maschbaustudent also nix gut Deutsch. Aber haste recht, den Deutschdebugger sollte mal auf .NET umgestellt werden.
Aber Papa hast ja recht ich hocke mich jetzt hin und schreib erst mal ein Übungsdiktat.
Grüße aus Bayrischen
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Di 25.05.04 13:59
Tut mir leid aber diese ganzen sinnlosen Apostrophe, diesen Jahres, Standart, usw. geht einem mit der Zeit ganz schön auf den Senkel :P
|
|