![]() |
AnsiChar oder pAnsiChar
hoi
in der Application.MessageBox muss man ja als erstes die message der messagebox angeben...aber wieso ist der typ pAnsiChar??? und nciht string? was sind das für unterschiede? |
Re: AnsiChar oder pAnsiChar
Wieso? Das ist recht einfach. Die Deklaration stammt von MS und die arbeiten gerne mit Pointern.
AnsiString bzw. String sind in Delphi Pointer auf eine Pascal-/Delphi-spezifische Struktur, welche anders ist als die MS-PChar (PAnsiChar) Pointer.
Code:
...:cat:...
PChar(String) -> Pointer auf das erste Byte des Strings, inklusive einer aufwendigen Kopieraktion.
Wenn der string garantiert nicht geändert wird, ist es besser mit @String[1] zu arbeiten. |
Re: AnsiChar oder pAnsiChar
Oder:
Delphi-Quellcode:
Oder:
@(String1+String2)[1]
Delphi-Quellcode:
pointer(String1+String2)
|
Re: AnsiChar oder pAnsiChar
aber wenn ich "Application.MessageBox('blabla Text', 'fehler', mb_ok);"
dann sieht ersteres für mich wie ein string aus, ich schnall jetzt einfach nur nicht was der unterschied ist :( |
Re: AnsiChar oder pAnsiChar
Delphi kennt den Unterschied und ist an dieser Stelle ein wenig flexibel, damit Du nicht einen extra Type-Cast machen musst. Verwirrend, aber praktisch ;-)
...:cat:... |
Re: AnsiChar oder pAnsiChar
ok, danke für die hilfe, das kapier ich noch nicht ;)
|
Re: AnsiChar oder pAnsiChar
Silent, da gibt es nicht viel zu verstehen. Delphi nimmt Dir oft viel Arbeit ab, in dem es verschiedene Dinge automatisch erledigt. Das macht Dir das Leben leichter. Wenn Du einen konstanten String eingibst, an einer Stelle wo die Deklaration einen PChar Wert erwartet, dann über gibt Delphi automatisch den korrekten Pointer um einen PChar daraus zu machen.
...:cat:... |
Re: AnsiChar oder pAnsiChar
danke für die erklärung :), ich frage mich nur wieso Char und nicht String erwartet wird?
|
Re: AnsiChar oder pAnsiChar
Moin Silent,
ein String ist ein array of char. @sakura: Zitat:
|
Re: AnsiChar oder pAnsiChar
Ah, ich sehe Deine Verwirrung und will mich um mehr Licht kümmern ;-)
Es wird ja nicht ein Char, sondern ein PChar erwartet. Ein Char ist, wie Du weisst ein einzelnes Zeichen. PChar ist ein Pointer auf das erste Zeichen in einem Array "vieler" Zeichen, wo das letzte Zeichen ein Nullwert (#0) ist. In Delphi enden alle Strings automatisch auf #0, um solche Casts auch leichter zu gestallten. PChar müsstest Du Dir am Besten als einen Pointer auf @CharArray[0] vorstellen, wobei CharArray als array of Char definiert ist. (Nicht ganz korrekt, aber zur Veranschaulichung sollte es reichen) ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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