Variable mit Zeiger in String wandeln?

Hallo,

da ich grad schon am Fragen bin:

von einer Schnittstelle kommen Daten, z.b. ‚001‘.
Diese werden in eine Variable eingelesen.
Dazu soll dann passend eine Datei aufgerufen werden, die so heisst
wie die Zeichenfolge+Dateiendung, .z.b:
‚C:\Programm‘ +VARIABLE+ ‚.txt‘

Das Problem:
Es kommt an dieser letzten Zeile eben der Fehler dass PChar und String inkompatibel sind. Das leuchtet zwar ein, aber wie gibt man das dann aus?
Sicher lächelt der wahre Profi jetzt und weiss gleich die Antwort :smile:

Hallo,

Es kommt an dieser letzten Zeile eben der Fehler dass PChar
und String inkompatibel sind. Das leuchtet zwar ein, aber wie
gibt man das dann aus?
Sicher lächelt der wahre Profi jetzt und weiss gleich die
Antwort :smile:

DateiName := ‚c:\Pfad‘ + String(VARIABLE) + ‚.txt‘;

Gruss, Niels

Hallo Niels,

ich wollte dich schon zum besten Delphimann hier erklären. Aber dein Tip funktioniert irgendwie nicht. Es kommt weiterhin die gleiche Fehlermeldung mit String und PChar inkompatibel.

Übrigens versuche ich das mit der Funktion
sndplaysound(‚c:‘ + String(variable) + ‚.wav‘, SND_ASYNC)

Und diese Zeile bringt dann besagt Fehlermeldung.
Diese Funktion scheint hartnäckiger als andere zu sein, oder bilde ich mir das nur ein?

Hallo Niels,

ich wollte dich schon zum besten Delphimann hier erklären.
Aber dein Tip funktioniert irgendwie nicht. Es kommt weiterhin
die gleiche Fehlermeldung mit String und PChar inkompatibel.

Übrigens versuche ich das mit der Funktion
sndplaysound(‚c:‘ + String(variable) + ‚.wav‘, SND_ASYNC)

Mit neueren Deplhi-Versionen:
sndplaysound(PChar(‚c:‘ + variable + ‚.wav‘), SND_ASYNC)

Bei alten:
var buffer:array[0…1024] of char;

strpcopy(buffer, ‚c:‘ + variable + ‚.wav‘);
sndplaysound(buffer, SND_ASYNC)

Alexander

Hallo,

eins vorneweg: WOW! Ich bin sprachlos. Es funktioniert, was du da schreibst.
Würdest du mir verraten, wie man darauf kommt, bzw. was es damit auf sich hat? In keinem Buch oder Doku konnte ich das bisher finden.

Da ich es mit einem Profi zu tun habe, eine weitere Frage:
Wie kann man ein kleines Pop up Fenster programmieren?

Also ich möchte festlegen wo es erscheint, z.b. in der Mitte, und es soll z.b. erscheinen, wenn eine bestimmte Uhrzeit erreicht ist. Nach 1 Minute soll es dann wieder verschwinden.
Irgendwie kann man weitere „Forms“ machen, und die dann einblenden.
Und in vielen Programmen sieht man nette kleine Fenster, die ohne Rahmen,Titelleiste usw. einfach nur eine kleine Meldung darstellen.
So etwas suche ich auch, aber bin bisher noch nicht so weit gekommen.
Kann mir jemand eine Richtung weisen?

Hallo,

eins vorneweg: WOW! Ich bin sprachlos. Es funktioniert, was du
da schreibst.
Würdest du mir verraten, wie man darauf kommt, bzw. was es
damit auf sich hat? In keinem Buch oder Doku konnte ich das
bisher finden.

Ich weiss zwar nicht wie er darauf gekommen ist aber das ist nicht unbedingt ungewöhnlich ?!:wink:

Also ich möchte festlegen wo es erscheint, z.b. in der Mitte,
und es soll z.b. erscheinen, wenn eine bestimmte Uhrzeit
erreicht ist. Nach 1 Minute soll es dann wieder verschwinden.
Irgendwie kann man weitere „Forms“ machen, und die dann
einblenden.
Und in vielen Programmen sieht man nette kleine Fenster, die
ohne Rahmen,Titelleiste usw. einfach nur eine kleine Meldung
darstellen.
So etwas suche ich auch, aber bin bisher noch nicht so weit
gekommen.
Kann mir jemand eine Richtung weisen?

Naja, du kannst nen TFORm nehmen das dan zurecht clicken die Einstellungen vornehmen(grösse, position etc.)
mit TTImer kannst du dan dies in einem bestimmten Intervall wieder auf Form.visible := FALSE setzen dan ist es „weg“
oder wenn du Dialogboxen haben möchtest schau die Showmessage an.
Bzw Application.Messagebox(sehr viel besser als Showmesssage).

Ciao

Hallo,

eins vorneweg: WOW! Ich bin sprachlos. Es funktioniert, was du
da schreibst.
Würdest du mir verraten, wie man darauf kommt, bzw. was es
damit auf sich hat? In keinem Buch oder Doku konnte ich das
bisher finden.

Das ist das, was man Typecasting nennt, also die Umwandlung einer Variable in einen anderen Typ. Wird in vielen Anfängerbüchern meist nicht erwähnt, weil man da schöne Abstürze mit bauen kann, wenn die Typen nicht kompatibel sind.

Im Prinzip einfach NameDesTyps(Variable_kompatiblen_Typs). Geht schon seit „alten“ Borland Pascal Zeiten so.

Da ich es mit einem Profi zu tun habe, eine weitere Frage:
Wie kann man ein kleines Pop up Fenster programmieren?

Neues Formular hinzufügen und mit Inhalt füllen.

Also ich möchte festlegen wo es erscheint, z.b. in der Mitte,
und es soll z.b. erscheinen, wenn eine bestimmte Uhrzeit
erreicht ist. Nach 1 Minute soll es dann wieder verschwinden.

Für Zentriert gibt es eine Eigenschaft des TForm im Objektinspektor, ansonsten top und left entsprechend setzen.
Im Hauptformular dann einen TTimer verwenden, im OnTimer die Uhrzeit abfragen und das 2. Formular mit Form2.Show bzw. Form2.hide ein- oder ausblenden.

Irgendwie kann man weitere „Forms“ machen, und die dann
einblenden.

Ja, per Symbolleiste oder Menü kein Problem. Über den „Name“ des Forms kann man dann darauf zugreifen, und es z.B. mit Form2.show einblenden (wenn es Form2 heisst).

Und in vielen Programmen sieht man nette kleine Fenster, die
ohne Rahmen,Titelleiste usw. einfach nur eine kleine Meldung
darstellen.

Such mal Border oder BorderStyle im Objektinspektor des TForm, kann hier leider nicht nachsehen, wie es genau heisst.

Alexander