Delphi-PRAXiS
Seite 63 von 68   « Erste     1353616263 6465     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Delphi 2011 heißt jetzt Delphi XE (https://www.delphipraxis.net/153609-delphi-2011-heisst-jetzt-delphi-xe.html)

mkinzler 26. Aug 2010 16:29

AW: Delphi 2011 heißt jetzt Delphi XE
 
Sebastian scheint mehr als du zu wissen :zwinker:

xZise 26. Aug 2010 16:37

AW: Delphi 2011 heißt jetzt Delphi XE
 
Zitat:

Zitat von p80286 (Beitrag 1045273)
Zitat:

Zitat von himitsu (Beitrag 1045138)
Tut mir Leid, daß dieses schonwieder gesagt wird,
aber hätte man vorher schon überall AnsiChar/PAnsiChar/AnsiString gesetzt, wo es auch unbedingt ANSI sein muß, dann gäbe es jetzt keine Probleme.

Auch wenn ich Dir inhaltlich voll Recht geben muß, sowohl die OH als auch hier im Forum wurde die Auffassung vertreten String=AnsiString und gut is.
Jedenfalls ist
Delphi-Quellcode:
if irgendwas=true
ein weitaus größerer Aufreger, als
Delphi-Quellcode:
textsatz:string;
oder auch ein
Delphi-Quellcode:
packed record
.[...]

Naja string an sich ist ja nicht böse, aber wenn man davon ausgeht, dass ein string immer ein AnsiString bleiben wird, dann ist es ein Problem. D.h. wenn man zum Beispiel die Länge im Speicher wissen will, dann ist es ja auch wichtig, wie das kodiert wird. Aber für andere Aufgaben hingegen ist das völlig egal.

MfG
Fabian

PS: Irgendwie ist das quote-Tag anfällig für Verhunzungen.

himitsu 26. Aug 2010 16:42

AW: Delphi 2011 heißt jetzt Delphi XE
 
Delphi-Quellcode:
var s: String;

LängeDerDaten = Length(S) * SizeOf(Char);
// oder
LängeDerDaten = Length(S) * SizeOf(S[1]);

DeddyH 26. Aug 2010 16:44

AW: Delphi 2011 heißt jetzt Delphi XE
 
Bei einem Leerstring könnte das 2. Beispiel aber in die Hose gehen.

himitsu 26. Aug 2010 16:47

AW: Delphi 2011 heißt jetzt Delphi XE
 
Nein, wird es nicht :angel: (obwohl ich das früher auch mal dachte)

Der Delphi-Compiler ist inteligent genug, um zu wissen, daß die Größe dieses Chars sich niemals ändert und setzt dann wärend der Kompilierung die Größe als direkte Zahl ein und greift nicht erst zur Laufzeit auf den Char zu.

Du kannst also auch
Delphi-Quellcode:
SizeOf(S[987654321])
nehmen.
Die Klammer+Zahl ist nur dafür da, um zu sagen, daß man die Größe des Zeichens und nicht des StringPointers wissen will.

Mithrandir 26. Aug 2010 16:48

AW: Delphi 2011 heißt jetzt Delphi XE
 
Zitat:

Zitat von MEissing (Beitrag 1045286)
Aha!?!

Ich denke nicht, dass der Kommentar vom Feuervogel so bierernst gemeint war. ;)

DeddyH 26. Aug 2010 16:52

AW: Delphi 2011 heißt jetzt Delphi XE
 
Zitat:

Zitat von himitsu (Beitrag 1045308)
Nein, wird es nicht :angel: (obwohl ich das früher auch mal dachte)

Der Delphi-Compiler ist inteligent genug, um zu wissen, daß die Größe dieses Chars sich niemals ändert und setzt dann wärend der Kompilierung die Größe als direkte Zahl ein und greift nicht erst zur Laufzeit auf den Char zu.

Du kannst also auch
Delphi-Quellcode:
SizeOf(S[987654321])
nehmen.
Die Klammer+Zahl ist nur dafür da, um zu sagen, daß man die Größe des Zeichens und nicht des StringPointers wissen will.

Tatsache. Trotzdem finde ich das ein wenig unsauber, zumindest aber schwer verständlich.

xZise 26. Aug 2010 16:54

AW: Delphi 2011 heißt jetzt Delphi XE
 
Zitat:

Zitat von himitsu (Beitrag 1045303)
Delphi-Quellcode:
var s: String;

LängeDerDaten = Length(S) * SizeOf(Char);
// oder
LängeDerDaten = Length(S) * SizeOf(S[1]);

Dann hätte man ja doch sauber programmiert -.-

Du beziehst dich doch gerade auf sowas:
Delphi-Quellcode:
LängeDerDaten = Length(S); // 1 Zeichen = 1 Byte
MfG
Fabian

himitsu 26. Aug 2010 17:00

AW: Delphi 2011 heißt jetzt Delphi XE
 
Ich verwende auch lieber
Delphi-Quellcode:
Length(S) * SizeOf(Char)
, aber hier muß man sicherstellen, daß Char und String "zusammenpassen".

Wärend bei
Delphi-Quellcode:
Length(S) * SizeOf(S[1])
die Zusammengehörigkeit sichergestellt ist.

Und was passiert, wenn man mal den Typen von S ändert?

Ist das Gleiche wie bei den Record-Pointern
Delphi-Quellcode:
ZeroMemory(P, SizeOf(TMyRec))
sieht schöner aus, als
Delphi-Quellcode:
FillMemory(P, SizeOf(P^), 0);
.

Chemiker 26. Aug 2010 18:03

AW: Delphi 2011 heißt jetzt Delphi XE
 
Hallo,

Zitat:

Zitat von himitsu
Tut mir Leid, daß dieses schonwieder gesagt wird,
aber hätte man vorher schon überall AnsiChar/PAnsiChar/AnsiString gesetzt, wo es auch unbedingt ANSI sein muß, dann gäbe es jetzt keine Probleme.

ich habe mal eine Frage, wie viel Fremdkomponenten setzt Du ein?

Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Seite 63 von 68   « Erste     1353616263 6465     Letzte »    

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