E-LAB Computers
 

Byte aus einem ARRAY zuweisen klappt nicht

  • 1
  • 2
  • Seite 1 von 2
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 55
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 20:36 Uhr  ·  #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
Anhänge an diesem Beitrag
Fehler Compiler
Dateiname: 28-03-_2018_20-30-16.jpg
Dateigröße: 50.8 KB
Titel: Fehler Compiler
Information: Fehler Compiler
Heruntergeladen: 298
Fehler
Dateiname: 28-03-_2018_20-37-13.jpg
Dateigröße: 29.2 KB
Titel: Fehler
Information: Fehler
Heruntergeladen: 275
miparo
Moderator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1022
Dabei seit: 09 / 2007
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 20:43 Uhr  ·  #2
HI,
bei mir funktioniert das, da muss ein Fehler davor da sein.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 55
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 20:48 Uhr  ·  #3
Zitat geschrieben von 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
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 21:00 Uhr  ·  #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
Moderator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1022
Dabei seit: 09 / 2007
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 21:06 Uhr  ·  #5
Nö, es funzt auch so wie er es geschrieben hat.
Die Typedefinition vorher ist natürlich immer sauberer.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 55
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 22:11 Uhr  ·  #6
Zitat geschrieben von 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?
Anhänge an diesem Beitrag
Mit Typedef
Dateiname: 28-03-_2018_22-06-22.jpg
Dateigröße: 93.92 KB
Titel: Mit Typedef
Information: Mit Typedef
Heruntergeladen: 261
Deklaration in der UNIT
Dateiname: 28-03-_2018_22-07-11.jpg
Dateigröße: 67.53 KB
Titel: Deklaration in der UNIT
Information: Deklaration in der UNIT
Heruntergeladen: 274
ausgeklammert
Dateiname: 28-03-_2018_22-08-29.jpg
Dateigröße: 118.46 KB
Titel: ausgeklammert
Information: ausgeklammert
Heruntergeladen: 278
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 22:21 Uhr  ·  #7
Da läuft irgendwas schief. Ich schaue mir das morgen mal an
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 55
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Byte aus einem ARRAY zuweisen klappt nicht

 · 
Gepostet: 28.03.2018 - 22:39 Uhr  ·  #8
Zitat geschrieben von 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
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Thema

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.