AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Was nervt euch so, während der Programmierung oder so allgemein
Thema durchsuchen
Ansicht
Themen-Optionen

Was nervt euch so, während der Programmierung oder so allgemein

Ein Thema von himitsu · begonnen am 26. Jun 2010 · letzter Beitrag vom 3. Mai 2013
Thema geschlossen
Seite 70 von 192   « Erste     2060686970 717280120170     Letzte »    
Benutzerbild von himitsu
himitsu

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

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 24. Nov 2011, 13:25
Office fragt aber vorher, ...
Aber nur wenn es ordentlich beendet wird.

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.
$2B or not $2B
 
Benutzerbild von himitsu
himitsu

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

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 19:24
Zitat von D2010:
Delphi-Quellcode:
procedure BinToHex(var Buffer; Text: PWideChar; BufSize: Integer); overload; inline;
procedure BinToHex(var Buffer; Text: PAnsiChar; BufSize: Integer); overload; inline;
Wer ist eigentlich auf die saublöde Idee gekommen einen Leseparameter als VAR zu deklarieren?
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.
$2B or not $2B
 
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#693

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 19:41
Weil Buffer typenlos ist -> In Fact ist var Buffer nichts anderes als 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.
 
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#694

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 20:03
Weil Buffer typenlos ist -> In Fact ist var Buffer nichts anderes als 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.
Wie du schon sagst, sind var und const 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.
Delphi-Quellcode:
procedure Bar(const Y: integer);
begin
  ...
end;

procedure Foo(var X: integer);
begin
  Bar(X);
end;
Geht.

Delphi-Quellcode:
procedure Bar(var Y: integer);
begin
  ...
end;

procedure Foo(const X: integer);
begin
  Bar(X);
end;
Geht NICHT.
 
Benutzerbild von himitsu
himitsu

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

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 20:57
@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:
procedure BinToHex(const Buffer; Text: PWideChar; BufSize: Integer); overload; inline;
procedure BinToHex(const Buffer; Text: PAnsiChar; BufSize: Integer); overload; inline;
Hier wird ja eigentlich der Inhalt von "Text" verändert und nicht der von Buffer.

Und die Größe für Buffer und Text kommt eben über BufSize rein.
$2B or not $2B
 
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#696

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 21:30
Also in XE ist sie 6fach überladen, 2 davon sehen so aus:
Delphi-Quellcode:
procedure BinToHex(Buffer: Pointer; Text: PWideChar; BufSize: Integer); overload; inline;
procedure BinToHex(Buffer: Pointer; Text: PAnsiChar; BufSize: Integer); overload; inline;
Was spricht also dagegen, deinen const Parameter dort als Buffer hineinzugeben?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
 
Benutzerbild von himitsu
himitsu

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

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 22:15
Ein zusätzliches und eigentlich unnötiges @ ?
$2B or not $2B
 
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#698

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 22:19
Wie du schon sagst, sind var und const technisch das gleiche.
Nein, es geht mir nicht um var=const, sondern um var=Pointer.

Wie soll ich denn bitte const Buffer von einem unbestimmten Typen deklarieren, dessen Größe ich nicht kenne.
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!

Und die Größe für Buffer und Text kommt eben über BufSize rein.
Zur Laufzeit. Aber bei Const muss die Größe schon zur Kompilierungszeit bekannt sein, eben weil es kein Pointer ist.

Ein zusätzliches und eigentlich unnötiges @ ?
Das ist aber reine Kosmetik, denn es kommt bei der Prozedur ja genauso an. Und das ist es ja, weshalb Const an der Stelle nicht geht.

Geändert von implementation ( 3. Dez 2011 um 22:24 Uhr)
 
Benutzerbild von himitsu
himitsu

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

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 23:07
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
$2B or not $2B
 
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#700

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 23:11
Nein, CONST übergibt, bei Typen über 64 Bit und bei dieser typlosen Variante (genauso wie VAR) eine Referenz.
So weit war ich noch nicht aufgeklärt, danke!
 
Thema geschlossen
Seite 70 von 192   « Erste     2060686970 717280120170     Letzte »    


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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Untitled document This thread Refback 7. Nov 2011 10:54

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 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