AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PChar in Delphi 7

Ein Thema von kwhk · begonnen am 12. Jul 2013 · letzter Beitrag vom 12. Jul 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#1

PChar in Delphi 7

  Alt 12. Jul 2013, 08:39
Hallo, ich bin gerade dabei, einige SourceCodes, die noch für Delphi 3 entwickelt wurden, für Delphi 7 anzupassen. Dabei habe ich z.B. so etwas
Delphi-Quellcode:
Procedure xxx(sTx : AnsiString, sTit : AnsiString);
Begin
  if Application.MessageBox
   ( PChar(sTx),
     PChar(sTit),
     MB_OK ) = 0 then Begin End;
End;
Wenn ich die Warnungen Unsicherer Typ nicht ausschalte, bekomme ich immer folgende Warnung angezeigt.
[Warnung] xxx.pas(148): Unsicherer Typ 'PChar'
Ich habe beim Googeln gefunden, daß das etwas mit .NET usw. zu tun hat. Ich kann auch die Warnung unterdrücken. Ich möchte aber gern wissen, wie ich Application.MessageBox korrekt ohne PChar aufrufen soll. In C++ benutze ich ja ausschliesslich PChar, d.h. einen NULL-terminierten String 'xxxxx',0x00.
Das Programm selbst funktioniert einwandfrei.
Die Delphi-7-Hilfe zeigt es ja so, wie ich es geschrieben habe, an.
Miniaturansicht angehängter Grafiken
d7help.jpg  
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 09:09
Schau mal hier: http://entwickler-forum.de/showthrea...-Typumwandlung
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 sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 10:51
Delphi 7 hat einige Projektoptionen, die den Compiler ganz erheblich ausbremsen.
Dazu gehört diese Prüfung der "unsicheren Typumwandlung".
Leider kann ich nicht genau sagen um welche Optionen es sich handelt;
soweit ich mich erinnern kann stehen sie ganz am Anfang und am Ende der Optionenliste und es müssten einmal 3 und dann noch 6 Optionen sein.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 10:57
Die Optionen sind ja schnell so eingestellt. Offernbar gibt es keine warnungsfreie Codiermöglichkeit. Wie ruft man denn in den neueren Delphi-Versionen Aplication.MessageBox auf ?
Miniaturansicht angehängter Grafiken
d7opt.jpg  
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 11:02
Am Aufruf hat sich nichts geändert: TApplication.MessageBox, außer dass PChar nun nicht mehr PAnsiChar, sondern PWideChar ist.
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 kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 11:37
In Deiner Hilfe steht ja ebenfalls PChar, genau wie bei Delphi 7, die API-Funktion erwartet das auch so, egal ob Delphi, C++ oder irgend ein anderer Compiler.
Ich habe PChar mal durch PWideChar ersetzt, da bekomme ich folgenden Fehler.

[Fehler] CompHKwPgm.pas(2448): Inkompatible Typen: 'WideChar' und 'Char'

WideChar bedeutet eigentlich, daß pro Zeichen 2 Bytes benutzt werden, bei Char jeweils nur 1 Byte pro Zeichen. Application.MessageBox will doch Char und nicht WideChar.
Hartmut

Geändert von kwhk (12. Jul 2013 um 11:42 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 11:39
Du hast ja auch nach neueren Delphi-Versionene gefragt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 12:00
Eben, mit PAnsiChar wird es funktionieren (in Delphi <= 2007).
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 kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 13:21
Zitat:
Du hast ja auch nach neueren Delphi-Versionene gefragt
Ja, aber in der XE3-Hilfe wurde doch wieder PChar angezeigt, genau wie bei Delphi 7. Nun mag das dabei ein WideChar sein, das angebliche .NET Sicherheitsproblem ist dabei doch dasselbe, ein Pointer auf den Anfang eines Stringes, dessen Ende man erst suchen muss.
Zitat:
Eben, mit PAnsiChar wird es funktionieren (in Delphi <= 2007).
Bei Delphi 7 kommt mit PAnsiChar dergleiche Warnhinweis, wie bei PChar, ich habe beides ausprobiert.
Hartmut

Geändert von kwhk (12. Jul 2013 um 13:31 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: PChar in Delphi 7

  Alt 12. Jul 2013, 13:25
PChar ist ja bei neueren Versionen ein Alias für PWideChar . Früher war ein PChar das, was heute ein PAnsiChar ist.

Der Warnhinweis hat damit nichts zu tun, der möchte dir nur sagen "Vorsicht bei Zeigern".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:

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