Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
-
Mathias
- Beiträge: 6977
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Beitrag
von Mathias »
Ich wollte folgendes in einem komplexeren Code machen, aber er scheitert mit "Illegal Expression".
Code: Alles auswählen
type
TVec = array[0..2] of single;
const
v1: TVec = (1, 1, 1);
v2 = v1; // Illegal Expression
Kann man dies auf eine einfache weise machen, oder muss man Mühsam alles an y1 Manuel im begin end Block zuweisen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
-
corpsman
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
-
Kontaktdaten:
Beitrag
von corpsman »
Weis nicht ob es dass ist was du willst, aber das compiliert
Code: Alles auswählen
Type
TVec = Array[0..2] Of single;
Const
v1: TVec = (1, 1, 1);
var
v2: Tvec absolute v1;
--
Just try it
-
Mathias
- Beiträge: 6977
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Beitrag
von Mathias »
Danke, die hilft weiter, mit dem {$J-} ist sogar v1 un v2 gesperrt.
Code: Alles auswählen
type
TVec = array[0..2] of single;
{$J-}
const
v1: TVec = (1, 1, 1);
var
v2: Tvec absolute v1;
begin
WriteLn(v2[1]);
v1[1] := 2; // gesperrt
v2[1] := 2; // gesperrt
Mit absolute habe ich es auch probiert gehabt,, nur habe ich const anstelle von var gehabt, darum ging es nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
-
corpsman
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
-
Kontaktdaten:
Beitrag
von corpsman »
ist das nicht ein bisschen umständlich um 2 Variablen zu haben die auf den exakt selben Speicherbereich zeigen ?
--
Just try it
-
Jorg3000
- Lazarusforum e. V.
- Beiträge: 399
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Beitrag
von Jorg3000 »
(Kommentar gelöscht, hab's falsch gelesen)
Zuletzt geändert von
Jorg3000 am Do 17. Jul 2025, 20:39, insgesamt 1-mal geändert.
-
Mathias
- Beiträge: 6977
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Beitrag
von Mathias »
Was soll denn der Vergleich machen? Meintest du eventuell ... v2 := v1;
Es ist in dem const Abschnitt. Ein Vergleich kann man erst nach begin machen.
ist das nicht ein bisschen umständlich um 2 Variablen zu haben die auf den exakt selben Speicherbereich zeigen ?
Wie würdest du dies machen, nur das ich es für eine Array und nicht nur für einen Char brauche.
Code: Alles auswählen
const
SLASH = '/';
BACKSLASH = '\';
{$ifdef windows}
DEFAULSLASH = BACKSLASH;
{$endif}
{$ifdef linux}
DEFAULSLASH = SLASH;
{$endif}
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
-
Acia6850
- Beiträge: 42
- Registriert: Mo 9. Okt 2023, 18:45
- OS, Lazarus, FPC: Windows + WSL / Linux Debian Rasbian OS (L 3.0.0 FPC 3.3.2)
- CPU-Target: 64Bit
- Wohnort: LK Ludwigsburg
Beitrag
von Acia6850 »
Hallo Mathias
const
SLASH = '/';
BACKSLASH = '\';
{$ifdef windows}
DEFAULSLASH = BACKSLASH;
{$endif}
{$ifdef linux}
DEFAULSLASH = SLASH;
{$endif}
Füe SLASH oder BACKSLASH gibt es eine Konstante oder Funktion in Lazarus :
DirectorySeparator
Mit Move kann man kopieren:
procedure Move(
const source;
var dest;
count: SizeInt
);
Description
Move moves Count bytes from Source to Dest.
Grüsse Acia6850
-
corpsman
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
-
Kontaktdaten:
Beitrag
von corpsman »
Also wenn ich ehrlich bin, sind deine Fragen ein klein wenig Diffus.
Kannst du in Worten erklären was genau du machen willst, mir drängt sich der Eindruck auf, dass deine Lösung ggf ganz anders ausfallen könnte ..
Code: Alles auswählen
Type
TVec = Array[0..2] Of single;
{$J-}
Const
{$IFDEF Windows}v1{$ELSE}v2{$ENDIF}: TVec = (1, 1, 1);
--
Just try it