AGB  ·  Datenschutz  ·  Impressum  







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

allgemeine Pointer Frage

Ein Thema von ATS3788 · begonnen am 26. Nov 2012 · letzter Beitrag vom 27. Nov 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#11

AW: allgemeine Pointer Frage

  Alt 26. Nov 2012, 14:08
Okay bevor ich weiter leichtfertig Fragen stelle merke ich grade, da sind noch ein paar nette Sachen zu lernen.

Ich verstehe z.b. nicht warum in dem Tutorial LongInt genommen wurde und kein Integer. Oder warum es mit AnsiChar funktioniert aber falls ich aus dem Datentyp einen normalen String mache, nicht mehr richtig...

Das mit dem Str[1] leuchtet ein.

danke
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: allgemeine Pointer Frage

  Alt 26. Nov 2012, 14:18
Vielleicht weil der autor damit betonen wollte, daß es sich um eine 32bit-Zahl handelt.
Ich würde dann ein longword bevorzugen, weil dann das Vorzeichen ausgeschlossen ist, aber über die Typen kann man trefflich streiten.

Gruß
K-H

Oder warum es mit AnsiChar funktioniert aber falls ich aus dem Datentyp einen normalen String mache, nicht mehr richtig...
was meinst du da ganz konkret?
einen "normalen" String gibt es nicht!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (26. Nov 2012 um 14:22 Uhr) Grund: Nicht richtig gelesen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#13

AW: allgemeine Pointer Frage

  Alt 26. Nov 2012, 14:19
LongInt: Damals, als dieses tutorial geschrieben wurde, war Integer noch ein dynamischer Typ, bzw. ein Alias. (in Win 3.1 war er 16 Bit, in Win32 war er 32 Bit und in Win64 wäre er 64 Bit gewesen).

Nun war nur jemand auf die saublöde Idee gekommen den Integer einzufrieren (das war mal nicht Emba ... die sind C++ nur um Jahre verspätet nachgelaufen)
und stattdessen wurd jetzt der NativeInt erfunden.

Beim Speichern oder Datenübertragen sollte man aber grundsätzlich nur generische Typen verwenden, also Jene, welche sich niemals verändern.
Einfaches Beispiel, welches sei 2009 immer wieder für Probleme sorgt, ist der Char, String, PChar usw.), wenn man das früher mit "ANSI" gespeichert hatte und nun versucht als Unicode auszulesen, dann muß das schief gehn.
Oder eben die Verwendung von APIs ... wenn da Einer das als ANSI übergibt oder auslies und der Andere aber Unicode nutzt, dann paßt das ebenfalls nicht zusammen und keiner versteht was der Andere sagt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#14

AW: allgemeine Pointer Frage

  Alt 26. Nov 2012, 15:54
Ich möchte nochmal auf die Ausgangsfrage zurückkommen

Man kann sich die Signatur von Write mal angucken: function Write(const Buffer; Count: Longint): Longint; virtual; abstract;

Ein const-Parameter ist ein spezieller var-Parameter, also kennzeichnet const einen Call-By-Reference-Parameter.
Dh. wenn du Stream.Write(Buffer^, counter ); aufrufst, übergibst du einen Zeiger (const) auf den Inhalt (^) eines Zeigers (buffer).
Also hat die Funktion am Ende eine Referenz auf die Daten, die zu schreiben sind.


Im Unterschied dazu übergibt Stream.Write(Buffer, counter ); einen Zeiger (const) auf einen Zeiger (buffer).
Also hat die Funktion am Ende eine Referenz auf den Zeiger buffer und nicht auf die zu schreibenden Daten.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (26. Nov 2012 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#15

AW: allgemeine Pointer Frage

  Alt 27. Nov 2012, 08:02
Oh ich sehe so trivial war die Frage gar nicht.

Es ist nur blöd wenn man alle Jubeljahre so was macht und dann
im Stream.Memory nur Schrott stehen hat.

Supi für die vielen Antworten
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#16

AW: allgemeine Pointer Frage

  Alt 27. Nov 2012, 08:46
Wertest du das Result von Write eigentlich aus?

Wenn nicht, dann verwende besser WriteBuffer, denn da ist wenigstens noch eine Prüfung mit eingebaut.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:47 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