Typkonvertierung

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Pascano
Beiträge: 3
Registriert: Fr 9. Sep 2011, 17:40

Typkonvertierung

Beitrag von Pascano »

Hallo,

ich habe auf http://www.freepascal.org/docs-html/rtl/sysutils/" onclick="window.open(this.href);return false; etwas zur Typkonvertierung gefunden.
Was ich bräuchte ist eine Konvertierung von Integer zu PChar.
Oder von Char zu PChar, da ich von Integer zu Char dank

Code: Alles auswählen

Char := chr(Integer)
mittlerweile konvertieren kann. :)
Worum handelt es sich eigentlich bei PChar - ist das ein spezieller Char-Typ? :roll:
ich bin Pascal-Anfänger.
Schöne Grüße,
pascano

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Typkonvertierung

Beitrag von Socke »

Pascano hat geschrieben:Was ich bräuchte ist eine Konvertierung von Integer zu PChar.
[...]
Willkommen im Forum!

Worum handelt es sich eigentlich bei PChar - ist das ein spezieller Char-Typ? :roll:
Woher weißt du, dass du genau diese Konvertierung benötigst, wo du noch nicht einmal weißt, was PChar ist? Beschreibe doch bitte einmal, was du erreichen möchtest.

Kleine Einführung in die Typen, die du hier ansprichst:
  • In Integer kannst du Ganzzahlen speichern (in der Regel 4 Byte)
  • In Char passt genau ein 8-Bit-Buchstabe
  • PChar ist ein Zeiger auf einen Char; In der Regel zeigt er auf den ersten Buchstaben einer Zeichenkette (mehrere Buchstaben hintereinander)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Pascano
Beiträge: 3
Registriert: Fr 9. Sep 2011, 17:40

Re: Typkonvertierung

Beitrag von Pascano »

Hallo Socke,

vielen Dank für Deine schnelle Nachfrage :D
ach so "P" steht für Pointer, damit kann ich bloß noch nicht viel anfangen. :(
Gute Frage, woher ich das weiß :) Ich wollte mir mit der MessageBox etwas ausgeben lassen und hab mir angesehen, welche Parameter erwartet werden und welchen Typ sie haben. Text und Caption sind vom Typ "PChar".
Wenn ich einen normalen "Char"-Wert übergebe bekomme ich einen Fehler und bei anderen Typen auch.

Wie geht das nun?
Wofür steht bei der MessageBox eigentlich der Flag-Parameter?

Schöne Grüße,
Pascano

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Typkonvertierung

Beitrag von Scotty »

Ein PChar() kann auch ein Zeiger auf mehr als ein Character sein, in dem Fall ein String. Per PChar('Hello World') wird "konvertiert".

Wenn du mit Strg+linke Maustaste auf einen validen Parameter klickst, kommst du zur entsprechenden Stelle im Quellcode. Etwas durchhangeln, dann findest du das jeweilige Set an Flags. Meine MessageBox hat allerdings keinen solchen Parameter (sondern uType). Wenn du ausschließlich für ein veraltetes Betriebssystem programmieren willst, dann gibt es die Information zu Flags im Allgemeinen unter msdn. (PS: Bevor du fragst: Flags werden per Oder miteinander verknüpft, d.h. MB_YES or MB_NO.)

Es gibt viel einfachere Möglichkeiten in Dialog mit dem Benutzer zu terten. ShowMessage() und MessageDlg() wären solche Funktionen - beide sind in der Unit Dialogs definiert.

Code: Alles auswählen

uses ..., Dialogs;
 
procedure TestMsg;
var
  s:string;
begin
  s:='Hello World';
  if MessageDlg(s,mtInformation,[mbYes,mbNo],0)=mrYes then 
   ShowMessage('Salute to the programmer');
  MessageBox(Application.MainForm.Handle,PChar(s),PChar('Test'),0);
end;

Pascano
Beiträge: 3
Registriert: Fr 9. Sep 2011, 17:40

Re: Typkonvertierung

Beitrag von Pascano »

Hallo Scotty,
vielen Dank für Deine Antwort, auch für Deine ergänzenden Tips danke ich - ich muß mich erst noch einfuchsen.
Wozu gibt es soviele Möglichkeiten, Messageboxen abzusetzen? In VBA gibts nur eine :D
Ich will eigentlich nicht für veraltete Betriebssysteme programmieren - immer nur für die Neusten :lol:
Schöne Grüße,
pascano

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Typkonvertierung

Beitrag von Christian »

Die lcl routinen sind wrapper die funktionieren auf allen lcl plattformen messagebox nur auf dem veraltetem windows ;-)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Typkonvertierung

Beitrag von pluto »

Wozu gibt es soviele Möglichkeiten, Messageboxen abzusetzen? In VBA gibts nur eine
Du wirst merken: In Lazarus führen viele Wege nach Rom. Das ist auch ein Problem.
MFG
Michael Springwald

Antworten