![]() |
Der Typ char ist nicht einstellig. Er ist geanu 1 Byte groß und geht damit von 0 bis 255
|
@Chakotay1308: Ich muss Dich erst einmal enttäuschen. Du hast da ein arges Verstädnisproblem.
Wenn ein String so definiert wäre
Delphi-Quellcode:
, dann könntest Du immer noch auf die 100. Stelle mit StringName[100] zugreifen. Ohne Problem. Zusätzlich: Ein Char ist ein Byte groß, dass heisst, ess kann eine beliebigen Wert zwischen #0 und einschließlich #255 einnehmen.
type
String = array[0..255] of char; Nun zum "AS-IS" Ein String ist ein Pointer auf einen Block mit folgender Definition
Delphi-Quellcode:
Das dahinter die eigentlichen Daten stehen, versteckt Delphi vor uns, wie freundlich :)
type
PStrRec = ^StrRec; StrRec = packed record refCnt: Longint; length: Longint; end; Der ShortString hat keine direkte Definition, ist von der Logik aber wie folgt aufgebaut:
Delphi-Quellcode:
Du kannst Dir eigene Shortstrings definieren. Ein Datentyp ShortString der Länge 56 Zeichen wäre
type
// ObereGrenze liegt im Bereich von 1..255 (Standard=255) ShortString: array[0..ObereGrenze] of AnsiChar;
Delphi-Quellcode:
type
MyShortString56 = string[56]; |
das ist der eintrag von der delphi hilfe zum thema
mit der ORD-funktion.
Code:
ich hoffe du hast das gemeint.
uses Dialogs;
type Colors = (RED,BLUE,GREEN); var S: string; begin S := 'BLUE has an ordinal value of ' + IntToStr(Ord(BLUE)) + #13#10; S := S + 'The ASCII code for "c" is ' + IntToStr(Ord('c')) + ' decimal'; MessageDlg(S, mtInformation, [mbOk], 0); end; ansonsten meldest dich halt |
Noch einmal zum Thema einstellig:
Ein Char ist insofern einstellig, als das es nur einen Character (Buchstaben) aufnehmen kann, nämlich genau einen aus dem 256 (0..255) Zeichen umfassenden ASCII Alphabet. Zahlenmäßig gesehen ist ein Char (ein Byte) also keineswegs einstellig sondern kann Zahlen im Bereich 0..255 aufnehmen. Gruß, Sebastian |
Hi,
da muß ich meinen Senf für die Nachwuchskünstler eben auch noch dazu geben. Auch um die Verwirrung wenigstens vollständig zu machen. :mrgreen: Zitat:
Stelle Dir a..z vor, dann hätte a den Wert 1 und z den Wert 26. Dann nimmst Du noch die Großbuchstaben, dann sinds schon 52. Dann noch die Umlaute, Zahlen, Punkt, Komma, blablabla. Dann sind es weit über 100. Deshalb sind die Zahlen mit Ihrem ASCII-Wert ("Oktalwert") gespeichert un belegen genau ein Byte. Maximal kriegst Du also 256 Zahlen in einer 8-stelligen Binärzahl unter. Da es aber auch Chinesen gibt, mußte das auf 65XXX erweitert werden. Das ist dann Ansi und die Codepages etc., da blick ich selber nicht genau durch. Gruß Hansa |
Zitat:
Ne, quatsch, ich kenn mich auch nicht so aus, aber meines Wissens ist ANSI die 8bit-Erweiterung von ASCII (7Bit). Die 16bit-Variante mit 65536 Zeichen heißt Unicode (das ist dann für die Chinesen :wink: ). Daneben gibt es noch Multibyte-Zeichensätze, die benutzen auf jeden Fall 7Bit, und falls das achte Bit einen bestimmten Wert hat, wird das nächste Byte auch noch mitbenutzt. Ist also komplizierter als DualByte (UniCode), aber platzsparender, da nicht immer zwei Bytes benötigt werden. |
@Hansa
Ein Byte oder Char ist keine "Oktalzahl", da sich dieser Begriff auf das Oktalsystem bezieht. (Dezimalsystem: 0..9, Binaärsystem: 0..1; Hexadezimalsystem: 0..9,A..F; Oktalsystem: 0..7) Genau genommen sind die Pascaltypen Char und Byte gleich. Intern (in Assembler) macht Delphi absolut keinen Unterschied zw. Byte und Char. Lediglich für uns Programmierer gibt es einen Unterschied. |
Hi,
Zitat:
Mit sieben Bit komme ich nur auf 128. Verdoppele ich ab 256 (8 Bit)wieder Achtmal und addiere dann gibt das 65XXX. Gruß Hansa |
Hi Sakura,
Zitat:
Gruß Hansa |
Zitat:
Delphi-Quellcode:
Der Lauf würde True ergeben, nur der Compiler erlaubt den Vergleich nicht!
var
B: Byte; C: Char; ... B := 65; C := 'A'; if B = C then ...
Delphi-Quellcode:
Das würde ohne Probleme gehen und True ergeben. Intern sind Byte und Char IDENTISCH.
var
B: Byte; C: Char; ... B := 65; C := 'A'; asm Mov AL, B Mov AH, C CMP AL, AH JNZ @@OOPS ... @@OOPS: Zitat:
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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