![]() |
AW: PChar in Delphi 7
Zitat:
Wenn ich PChar(txt) übergeben und txt ist selbst als String oder AnsiString (also als ein Delphistring mit Länge ohne abschließendes Hex-00) vereinbart, dann macht ja Delphi die Anpassung - was soll dabei schief gehen ? Wenn man die Texte direkt als Literal angibt ( ' Hallo AnsiString' ), dann kommt ja keinerlei Warnhinweis, intern muss das aber auch in einen Pointer konvertiert werden. |
AW: PChar in Delphi 7
Die, die den PChar haben wollen, sitzen bei Microsoft, denn intern wird ja nur die Win-API-Funktion MessageBox aufgerufen. Und die Meldung kommt ja nur, weil Zeigertypen in .NET eben unmanaged sind und somit als unsicher gelten. Kommen diese Meldungen denn immer noch, trotz Optionen bzw. Compilerschalter?
|
AW: PChar in Delphi 7
Und die, die .NET immer weiter entwickeln und anwenden, sitzen ja auch bei Microsoft. Ist da ein Problem LINKE und RECHTE Hand. Was der eine macht, wird von dem anderen reklamiert.
Wenn ich die Warnungen ausschalte, kommen sie natürlich nicht. Aber eigentlich sind Warnungen ja etwas sehr Sinnvolles, nur wenn sie dort kommen, wo es gar nicht anders zu machen geht, dann sind sie nicht sinnvoll. Beim Ausschalten, sind auch alle anderen Warnungen weg, die evtl. sinnvoll wären. |
AW: PChar in Delphi 7
Aber speziell diese Warnungen sind AFAIK für eine gemeinsame Codebasis von Win32- und .NET-Programmen gedacht gewesen. Da man aber mit Delphi 7 sowieso keine .NET-Programme schreiben kann (dafür bekam man ja mal Delphi 8 im Bundle dazu), sind sie eher hinderlich als nützlich.
|
AW: PChar in Delphi 7
Zitat:
Es ist doch nicht so, dass man auf andere Warnungen ("Methode X überdeckt Methode Y", ...) verzichten müsste, nur wenn nicht bei Zeigern, die in der .NET-Welt als "unsicher" gelten, gewarnt werden soll. |
AW: PChar in Delphi 7
Genau, Warnungen, die mich gar nicht betreffen, möchte ich auch nicht sehen. Oder was würdest Du von einem Schild im Oberhemd denken, auf dem steht "Achtung: Kleidung nicht am Körper bügeln" (das soll es tatsächlich geben)?
|
AW: PChar in Delphi 7
Wenn Du Dir eine Stelle im Programm angesehen hast und diese als nicht "gefährlich" geprüft hast, kannst Du das doch auch so machen:
Delphi-Quellcode:
Oder unter neueren Delphi Versionen:
{$WARNINGS OFF}
Application.MessageBox(PChar('Hallo'), PChar('Hallo')); {$WARNINGS ON}
Delphi-Quellcode:
{$WARN UNSAFE_TYPE OFF}
|
AW: PChar in Delphi 7
Ich glaube, um es Warnungsfrei und 100% korrekt zu machen, müsste man den Delphi-String in seiner belegten Länge in ein Char-Array eintragen, nach dem letzten String-Zeichen ein Hex-00 dahinterschreiben und den Zeiger auf das erste Zeichen des Arr als PChar übergeben. Ich vermute, daß Delphi das beim Ausdruck PChar(stringvariable) so ähnlich macht, also temporär den String umkopiert und mit Hex-00 abschließt. Funktionieren tut es jedenfalls. Wenn man es bewußt selbst macht, dann wäre es warnungsfrei korrekt.
|
AW: PChar in Delphi 7
Zitat:
Deshalb diese "Unsafe" Meldungen abschalten. ![]() Und zusätzlich die ersten 6 Meldungen ("Deprecated Symbol" bis "Deprecated Unit") ebenfalls abschalten. ![]() |
AW: PChar in Delphi 7
Exakt, das sind noch die Kylix-Altlasten. Irgendwie wird die Liste der gestorbenen Projekte immer länger, mal sehen, wie sich der Feueraffe bewähren wird.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 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