Autor Beitrag
Stephan.Woebbeking
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: Di 15.09.09 16:53 
Hallo *!

Möglicherweise liegt's am Wetter, aber irgendwie hab ich hier eine Inkonsistenz, die mir den Nerv raubt. Zumal es so was simples ist, dass ich mich echt langsam frag, ob ich **** bin... Für den Fall, dass das so ist, dürft ihr mir das gerne sagen, ich stehe zu meinen Dummheiten! ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  buf: array[1..6of Byte;
  a: Integer;
begin
  for a := 1 to 6 do begin
    Logging.Debug( '#1 ' + IntToStr( a ) );
    buf[a] := 255;
  end;
  SendConnectSecondDevice( buf );
end;

procedure TEW3ServiceToolMainForm.SendConnectSecondDevice( MAC: array of Byte );
var
  a: Integer;
begin
  AppendLineStringToMemo( 'Connect to MAC: ' + IntToStr( MAC[1] ) + ', ' + IntToStr( MAC[2] ) + ', ' +
    IntToStr( MAC[3] ) + ', ' + IntToStr( MAC[4] ) + ', ' + IntToStr( MAC[5] ) + ', ' + IntToStr( MAC[6] ) );


Ich hab jetzt einiges weggelassen, von dem ich denke, dass es nichts damit zu tun hat. Was ich machen will/muss ist ganz, ganz, ganz einfach: Einfach ein Array von 6 Byte in die Unterfunktion SendConnectSecondDevice übergeben. Aber die Ausgabe von "AppendLineStringToMemo" sieht allen Ernstes (kein Scherz!) so aus:

ausblenden Delphi-Quelltext
1:
15.9.2009 16:38:53: Connect to MAC: 25525525525525596					


Irgendjemand eine Erklärung dafür??? Ich bin auch eher ein Fan von Java, und gerade verstehe ich mehr und mehr warum, ich lasse mich aber gerne wieder etwas zurückholen. :o)

PS: Anbei noch: Die Schleifen laufen lt. Debugger RÜCKWÄRTS, d.h. fangen mit 6 an und laufen runter bis 1, ich nehme an, das ist ein Effekt der Code-Optimization??? Ist mir ja im Prinzip auch egal, fand ich bloß komisch...

Danke schonmal,
Stephan


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 15.09.2009 um 18:00
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Di 15.09.09 17:20 
user profile iconStephan.Woebbeking hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
2:
  buf: array[1..6of Byte;
( MAC: array of Byte );


"array of xy" fängt normalerweise bei 0 an.

Einige Dich mit deinem Alter Ego doch auf einen einheitlichen Datentyp TMacArray = array[1..6of Byte :wink:

MfG,
Dirk
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 16.09.09 07:15 
user profile iconStephan.Woebbeking hat folgendes geschrieben Zum zitierten Posting springen:
PS: Anbei noch: Die Schleifen laufen lt. Debugger RÜCKWÄRTS, d.h. fangen mit 6 an und laufen runter bis 1, ich nehme an, das ist ein Effekt der Code-Optimization??? Ist mir ja im Prinzip auch egal, fand ich bloß komisch.
Richtig. Im Programm wird einfach das Zählregister auf Null geprüft, daher läuft die Schleife rückwärts. Wenn die Schleifenvariable benutzt wird, wird das natürlich trotzdem richtig umgesetzt. Nur der Debugger weiß davon nix und zeigt deshalb oft den optimierten falschen Wert an, weshalb man beim Debuggen die Optimierung besser ausschaltet, auch wenn der Code an sich genauso läuft.

Was Arrays angeht:
Statt direkte Werte zu benutzen, sollte man Schleifen usw. einfach von Low(DeinArray) bis High(DeinArray) laufen lassen, dann sucht es sich die Grenzen automatisch. Bzw. ab Delphi 2006 kann man ja direkt ne foreach-Schleife benutzen.
Stephan.Woebbeking Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97



BeitragVerfasst: Mi 16.09.09 09:15 
Wow, auf die Idee mit den Indizes wäre ich so bald wohl nicht gekommen. Wie gesagt, Java verwöhnt, wüsste nicht, dass mir sowas da schon mal untergekommen ist. ;) Auf jeden Fall vielen Dank an Euch beide!!!