AGB  ·  Datenschutz  ·  Impressum  







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

Was haltet ihr von diesem Code?

Ein Thema von Olli73 · begonnen am 2. Jul 2024 · letzter Beitrag vom 3. Sep 2024
Antwort Antwort
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#1

AW: Was haltet ihr von diesem Code?

  Alt 8. Jul 2024, 07:10
Da das nur ein Pointer ist, der noch nicht auf einen Record zeigt, muss man doch Speicher reservieren!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Was haltet ihr von diesem Code?

  Alt 8. Jul 2024, 07:32
Es kommt drauf an.

Schau in die Hilfe.
MSDN-Library durchsuchenGetIpAddrTable

Es gibt API,
* die wollen vom Nutzer Speicher haben
* Vielen wollen Speicher bekommen, aber ihnen reicht z.B. eine Record-Variable
* * hier würde sie auch reichen, wenn es nur eine IP gibt (oder wenn man sich selbst den Typen anpasst und z.B. [0..9] für maximal 10 IPs)
* Andere geben einen Zeiger auf internen Speicher raus
* oder sie erzeugen selbst den Speicher, welchen man dann ebenfalls freigeben muß

Zitat:
Delphi-Quellcode:
type
  MIB_IPADDRROW = ...
Warum?

Du verwendest eine API, welche nicht nur einen billigen Pointer als Typ hat, und da ist es natürlich einfacher/besser, auch diesen Typen dann zu verwenden.
Sonst kann es auch schnell passieren, dass der Compiler abraucht, wenn es ihm nicht gefällt, dass es "unterschiedliche" Typen sind.

Winapi.IpHlpApi
Winapi.IpRtrMib

PS: Windows.NetworkManagement.IpHelper aus'm GetIt WinMD
https://www.delphipraxis.net/214473-...vor-winmd.html
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Jul 2024 um 09:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#3

AW: Was haltet ihr von diesem Code?

  Alt 8. Jul 2024, 08:08
Ja, aber in dem Fall will die API doch reservierten Speicher, und ein Pointer irgendwohin, schreibt halt auch "irgendwohin" oder crasht.

Außerdem ist der Code ja nicht von mir. Mir gefällt ja auch nicht, dass ich die Bereichsüberprüfung lokal abschalten musste.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#4

AW: Was haltet ihr von diesem Code?

  Alt 3. Sep 2024, 15:49
Die Funktion prüft erst ob ipTableSize genügend groß ist um die Ergebnisse aufzunehmen.
Bei 0 ist das nicht der Fall.
Deshalb gibt die Funktion in ipTableSize die tatsächlich benötigte Größe zurück und setzt Result auf ERROR_INSUFFICIENT_BUFFER.
Auf den Zeiger greift die Funktion in diesem Fall garnicht zu.
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz