AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Delphi 2011 heißt jetzt Delphi XE
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2011 heißt jetzt Delphi XE

Ein Thema von Lemmy · begonnen am 10. Aug 2010 · letzter Beitrag vom 21. Sep 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 16:42
Delphi-Quellcode:
var s: String;

LängeDerDaten = Length(S) * SizeOf(Char);
// oder
LängeDerDaten = Length(S) * SizeOf(S[1]);
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 16:44
Bei einem Leerstring könnte das 2. Beispiel aber in die Hose gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 16:47
Nein, wird es nicht (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 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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 16:52
Nein, wird es nicht (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 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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 16:54
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:
LängeDerDaten = Length(S); // 1 Zeichen = 1 Byte MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 17:00
Ich verwende auch lieber Length(S) * SizeOf(Char) , aber hier muß man sicherstellen, daß Char und String "zusammenpassen".

Wärend bei 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
ZeroMemory(P, SizeOf(TMyRec)) sieht schöner aus, als FillMemory(P, SizeOf(P^), 0); .
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Aug 2010 um 17:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.861 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 18:03
Hallo,

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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 26. Aug 2010, 18:10
wohl Zuwenige

Aber dann ist wiederum nicht Delphi/Unicode,
sondern der jeweilige Komponentenentwickler dran Schuld.
Ein Therapeut entspricht 1024 Gigapeut.
  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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Untitled document This thread Refback 13. Aug 2010 19:17

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