Byte aus einem ARRAY zuweisen klappt nicht

  • 1
  • 2
  • Page 1 of 2
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 20:36  ·  #1
Hallo Leute,

entweder sehe ich Heute den "Wald vor lauter Bäumen nicht mehr...." oder ich habe einen kleinen Denkfehler:

Code
procedure CS( var inTxBuffer : Array [0..79]of byte );
var
 xi, zi      : byte;
 tempBCC : byte;

begin
  tempBCC:=0;
    zi:= inTxBuffer[79];
    
for xi:= 0 to zi-1 do
 tempBCC:= tempBCC xor inTxBuffer[xi];
endfor;

end CS;


Warum klappt das nicht? Byte ist doch Byte!

Thorsten
Attachments
Fehler Compiler
Filename: 28-03-_2018_20-30-16.jpg
Filesize: 50.8 KB
Title: Fehler Compiler
Information: Fehler Compiler
Download counter: 128
Fehler
Filename: 28-03-_2018_20-37-13.jpg
Filesize: 29.2 KB
Title: Fehler
Information: Fehler
Download counter: 105
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 20:43  ·  #2
HI,
bei mir funktioniert das, da muss ein Fehler davor da sein.
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 20:48  ·  #3
Quote by miparo

HI,
bei mir funktioniert das, da muss ein Fehler davor da sein.


Hallo miparo,

schön :-D, also scheint meine Brile noch ok zu sein.

Wenn ich die Funktion ausklammere lässt es sich übersetzen ?!?!?
Und nun...
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 21:00  ·  #4
Hallo Thorsten,

in Funktionen oder Prozeduren sollte man im Header keine Arrays oder Records konstruieren.
Der Arraytyp sollte vorher schon als type deklariert sein. Das ist wahrscheinlich das Problem.

rolf
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 21:06  ·  #5
Nö, es funzt auch so wie er es geschrieben hat.
Die Typedefinition vorher ist natürlich immer sauberer.
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 22:11  ·  #6
Quote by rh

Hallo Thorsten,

in Funktionen oder Prozeduren sollte man im Header keine Arrays oder Records konstruieren.
Der Arraytyp sollte vorher schon als type deklariert sein. Das ist wahrscheinlich das Problem.

rolf


Hallo rolf,

Code
type
   TzksBuffer = ARRAY[0..79] of byte;
...
var
   inTxBuffer : TzksBuffer;
..

procedure CS( var inTxBuffer : TzksBuffer );
var
 xi, zi      : byte;
 tempBCC : byte;

begin
  tempBCC:=0;
    zi:= inTxBuffer[79];
    
for xi:= 0 to zi-1 do
 tempBCC:= tempBCC xor inTxBuffer[xi];
endfor;

end CS;

das hatte ich vorher und als es nicht ging habe ich es so geändert.
Aber das geht aucht nicht. Wie gesagt, wenn ich es ausklammere kann ich das Projekt komplett übersetzen (siehe Bild ).

Thorsten

Nachtrag:

Wenn ich aus dem Procedurekopf das VAR entferne, macht er auch.

Code
procedure CS(  inTxBuffer : TzksBuffer );
var
 xi, zi      : byte;
 tempBCC : byte;

begin
 tempBCC:=0;
    zi:= inTxBuffer[79];
    
for xi:= 0 to zi-1 do
 tempBCC:= tempBCC xor inTxBuffer[xi];
endfor;

end CS;


Aber dann greift der Compiler ja nicht direkt drauf zu, wenn ich es richtig verstanden habe, wird hier ein zusätzlicher Speicher angelegt und die Daten werden dort reinkopiert. Und ich schreibe bei Änderungen nicht direkt in den Speicher der Ursprungsdaten. Richtig?
Attachments
Mit Typedef
Filename: 28-03-_2018_22-06-22.jpg
Filesize: 93.92 KB
Title: Mit Typedef
Information: Mit Typedef
Download counter: 92
Deklaration in der UNIT
Filename: 28-03-_2018_22-07-11.jpg
Filesize: 67.53 KB
Title: Deklaration in der UNIT
Information: Deklaration in der UNIT
Download counter: 91
ausgeklammert
Filename: 28-03-_2018_22-08-29.jpg
Filesize: 118.46 KB
Title: ausgeklammert
Information: ausgeklammert
Download counter: 89
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 22:21  ·  #7
Da läuft irgendwas schief. Ich schaue mir das morgen mal an
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Posted: 28.03.2018 - 22:39  ·  #8
Quote by rh

Da läuft irgendwas schief. Ich schaue mir das morgen mal an


Ich habe zum testen mal die komplette Procedure in eine meiner UNITs ausgelagert.
Dann klappt es sofort auch mit der VAR.

Ich lasse die Funktion dann erstmal in der Unit, mal schauen was Du rausfindest :-)
Könnte es evtl. etwas mit den Compiler-Schaltern zu tun haben

Code
{$NOSHADOW}
{ $WG}                     {global Warnings off}


Thorsten
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 17 · Cache Hits: 15   145   160 · Page-Gen-Time: 0.043301s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI