Copy einer array Konstante

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6977
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Copy einer array Konstante

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

Benutzeravatar
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:

Re: Copy einer array Konstante

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

Re: Copy einer array Konstante

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

Benutzeravatar
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:

Re: Copy einer array Konstante

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

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 399
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Copy einer array Konstante

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

Re: Copy einer array Konstante

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

Re: Copy einer array Konstante

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

Benutzeravatar
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:

Re: Copy einer array Konstante

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

Antworten