AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Zitat:
Leider mischt sich auch eine RDP-Verbindung in die Zwischenablage ein (wenn es aktiviert ist), was mir auf Arbeit schon einige Male den Zwischenspeicher gelöscht/überschrieben hat. Du hast dir was kopiert, dann schwups auf's falsche [X] gekommen oder die Verbindung ist abgebrochen und weg war es. |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Zitat:
Soein Schwachsinn nervt ja sowas von. Schön, daß es zwar soeine Variante gibt, aber um meinen Const-Parameter umzuwandeln, muß ich nun doch die Pointer-BinToHex-Variante nutzen. :wall: |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Weil Buffer typenlos ist -> In Fact ist
Delphi-Quellcode:
nichts anderes als
var Buffer
Delphi-Quellcode:
.
const Buffer: Pointer
Angenommen, Buffer wäre kein Var-Parameter, woher soll Delphi dann wissen, wieviel Speicher es übergeben soll? Dazu bräuchte man dann wieder ne Menge Compiler-Magic. |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Zitat:
Delphi-Quellcode:
und
var
Delphi-Quellcode:
technisch das gleiche. Der Unterschied ist: Du kannst einen var-Parameter an eine Subroutine mit const-Parameter übergeben, aber nicht einen const-Parameter an eine Subroutine mit var-Parameter.
const
Delphi-Quellcode:
Geht.
procedure Bar(const Y: integer);
begin ... end; procedure Foo(var X: integer); begin Bar(X); end;
Delphi-Quellcode:
Geht NICHT.
procedure Bar(var Y: integer);
begin ... end; procedure Foo(const X: integer); begin Bar(X); end; |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
@implementation: So weit ist es ja alles klar, aber
das ist halt ein (ur)alter nerviger Bug, denn eigentlich müßte es so aussehn:
Delphi-Quellcode:
Hier wird ja eigentlich der Inhalt von "Text" verändert und nicht der von Buffer. :wall:
procedure BinToHex(const Buffer; Text: PWideChar; BufSize: Integer); overload; inline;
procedure BinToHex(const Buffer; Text: PAnsiChar; BufSize: Integer); overload; inline; Und die Größe für Buffer und Text kommt eben über BufSize rein. |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Also in XE ist sie 6fach überladen, 2 davon sehen so aus:
Delphi-Quellcode:
Was spricht also dagegen, deinen const Parameter dort als Buffer hineinzugeben?
procedure BinToHex(Buffer: Pointer; Text: PWideChar; BufSize: Integer); overload; inline;
procedure BinToHex(Buffer: Pointer; Text: PAnsiChar; BufSize: Integer); overload; inline; |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Ein zusätzliches und eigentlich unnötiges @ ?
|
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Zitat:
Wie soll ich denn bitte
Delphi-Quellcode:
von einem unbestimmten Typen deklarieren, dessen Größe ich nicht kenne.
const Buffer
Bei Var geht das theoretisch, eben weil es nur ein Pointer ist. Const übergibt den Wert (was hier ja gewünscht ist), aber das geht nur mit fester Größe. Kein Typ heißt aber -> variable Größe. Heißt: Eine Deklaration mit Const ist hier gar nicht möglich! Zitat:
Zitat:
|
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Nein, CONST übergibt, bei Typen über 64 Bit und bei dieser typlosen Variante (genauso wie VAR) eine Referenz.
Delphi-Quellcode:
procedure Test(const Buffer; X: Boolean = False);
type TArr = array[0..9] of Char; begin if X then ShowMessage('$' + IntToHex(NativeInt(@Buffer), 8) + ' "' + TArr(Buffer)[5] + '"') else ShowMessage('$' + IntToHex(NativeInt(@Buffer), 8)); end; procedure TForm1.FormCreate(Sender: TObject); var B: array[0..0] of Byte; S: String; begin ShowMessage('$' + IntToHex(NativeInt(@B), 8)); Test(B); S := '123456789'; ShowMessage('$' + IntToHex(NativeInt(@S[3]), 8)); Test(S[3], True); Und es ist nicht einfach nur Kosmetik/Schönheit, sondern auch Symetrie ... ich übergebe eine Zeile weiter vorne diese Variable auch als CONST (Stream.WriteBuffer, wo dieses übrigens funktioniert) und würde es hier gerne genauso aufrufen = einheitlicher Code |
AW: Was nervt euch so, wärend der Programmierung oder so allgemein
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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