Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typenproblem: Array of Byte... (https://www.delphipraxis.net/40494-typenproblem-array-byte.html)

Kedariodakon 16. Feb 2005 16:22


Typenproblem: Array of Byte...
 
Ich habe ein Typ:
Delphi-Quellcode:
Type TDataArray = Array Of Byte;
Dieser Typ wird bei sehr vielen Procedure/Function als Übergabeparameter genutzt...
Nun will ich sehr vielen Procedure/Function so einen Array-Typ übergeben, aber immer nur einen Teil davon z.B: [ $03..$23 ], [ $00..$21]...
Kann so eine Übergabe irgendwie einfach als diesen Typ übergeben, ohne dauernt neue Teilarrays anlegen und löschen zu müssen?
Is ja unnötig dauernt Tausende MB's durch den Speicher zu schauffeln...

Bye

Thanatos81 16. Feb 2005 16:27

Re: Typenproblem: Array of Byte...
 
Wieso arbeitest du nicht gleich mit Zeigern? Dann bräuchtest du gar nichts durch den Speicher schaufeln. Oder ist das aufgrund der Programmstruktur nicht möglich?

Muetze1 16. Feb 2005 16:30

Re: Typenproblem: Array of Byte...
 
Moin!

Delphi-Quellcode:
Function NimmArray(Const AArray: TDataArray): Integer;
Var
  i : Integer;
Begin
  Result := 0;
  For i := Low(AArray) To High(AArray) Do
    Inc(Result, AArray[i]);
End;

Begin
  ShowMessage(IntToStr(   NimmArray( [1, 3, 54, 2, 65, 34, 76] )  ));
End.
MfG
Muetze1

Kedariodakon 16. Feb 2005 16:52

Re: Typenproblem: Array of Byte...
 
Zitat:

Zitat von Thanatos81
Wieso arbeitest du nicht gleich mit Zeigern? Dann bräuchtest du gar nichts durch den Speicher schaufeln. Oder ist das aufgrund der Programmstruktur nicht möglich?

Nicht wirklich...

Zitat:

Zitat von Muetze1
Delphi-Quellcode:
Function NimmArray(Const AArray: TDataArray): Integer;
Var
  i : Integer;
Begin
  Result := 0;
  For i := Low(AArray) To High(AArray) Do
    Inc(Result, AArray[i]);
End;

Begin
  ShowMessage(IntToStr(   NimmArray( [1, 3, 54, 2, 65, 34, 76] )  ));
End.

So meinte ich das nicht...
----------------------------------

Ich habe diese Funktion:
Delphi-Quellcode:
Function sumArray( Const Data: TDataArray ): Cardinal;
Var   i: Cardinal;
Begin
   Result   := 0;
   For   i := low( Data ) To High( Data ) Do Inc( Result, Data[ i ] );
End;
und will die so in der Art hier anwenden:
Delphi-Quellcode:
Function sumArrayTests( Const Data: TDataArray; Const Start, Ende: Cardinal ): Cardinal;
Begin
   Result   := sumArray( Data[ Start..Ende ] );
End;
Das das nicht geht ist klar, aber so in der art will ich es anwenden, weiss aber net ob das einfach geht oder net...

Bye

tommie-lie 16. Feb 2005 16:58

Re: Typenproblem: Array of Byte...
 
Wie wär's damit?
Delphi-Quellcode:
function sumArray(const Data: TDataArray; low, high: Integer): Cardinal;
var
  i: Cardinal;
begin
  Result := 0;
  for i := low to high do
    inc(Result, Data[i]);
end;


P.S.: Verdammt nochmal, wie schreibst du eigentlich Code?

Kedariodakon 16. Feb 2005 17:04

Re: Typenproblem: Array of Byte...
 
Zitat:

Zitat von tommie-lie
P.S.: Verdammt nochmal, wie schreibst du eigentlich Code?

Ka was du meinst, aber falls du die oberen beiden Funktionen meinst, die hab ich nur zur verdeutlichung meines Problems hier ins Forum geschrieben, da scheinbar die Leute mein Problem falsch interpretieren, so wie du gerade eben...

Also nochmal:
Mein Problem ist nicht wie ich alles in einem Array zusammenzähl, sondern mit array teilen umgeh...
Die
Delphi-Quellcode:
Function sumArrayTests( Const Data: TDataArray; Const Start, Ende: Cardinal ): Cardinal;
soll nicht summieren, sondern die
Delphi-Quellcode:
Function sumArray( Const Data: TDataArray ): Cardinal;
zum summieren benutzen...

Problem, wie übergebe ich dieser Function das Teilarray ohne es irgendwie im Speicher neu zu erstellen...


Bye

Neutral General 16. Feb 2005 17:11

Re: Typenproblem: Array of Byte...
 
[ot][Kommentar]Ich glaube tommie-lie meint die ganzen Leerzeichen überall in deinem Code :mrgreen:[/Kommentar][/ot]

tommie-lie 16. Feb 2005 17:33

Re: Typenproblem: Array of Byte...
 
Zitat:

Zitat von Kedariodakon
da scheinbar die Leute mein Problem falsch interpretieren, so wie du gerade eben...

Bitte nochmal lesen, was ich schrob:
Zitat:

Delphi-Quellcode:
]function sumArray(const Data: TDataArray; low, high: Integer): Cardinal;
var
  i: Cardinal;
begin
  Result := 0;
  for i := low to high do
    inc(Result, Data[i]);
end;

SumArray kriegt das Array und die Werte von wo bis wo es zusammenzählen soll, es wird also ein Ausschnitt aus dem Array zusammengezählt.
Es wird nix Speicher neu erzeugt und es besteht keine Notwendigkeit, das Array zu zerpflücken. Und ob ich nun sumArray(myarray[lowerbound..upperbound]) aufrufe, was ja nicht geht, oder sumArray(myArray, lowerBound, upperBound), ist ja wohl egal.
Ansosnten könntest du auch mit ein wenig rumgecaste und Pointern zum Ziel kommen, aber dann müsstest du immer noch die obere Grenze übergeben:
Delphi-Quellcode:
function sumArray(someArray: TDateArray; maxCount: Integer): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 0 to maxCount - 1 do
    Result := Result + someArray[i];
end;

function work(data: TDateArray; lower, upper: Integer): Integer;
begin
  Result := sumArray(TDateArray(data[lower]), upper - lower);
end;
Vorsischt: Unjetestet und from scratch! Syntaktische Fähler nit ausjeschlossen Evtl muss evtl auch PDataArray(@data[lower])^ heißen, ich bin grad zu faul den Compiler dazu zu befragen, was sein Parser sehen möchte.


Edit: Da habe ich mich doch tatsächlich beim quotteln der Delphi-Tags entledigt...


Zitat:

Zitat von Neutral General
Ich glaube tommie-lie meint die ganzen Leerzeichen überall in deinem Code :mrgreen:

Nein, eben das Fehlen solchiger und das Vorhandensein von Tab-Characters, sowie die eigensinnige Verwendung von Linebreaks ;-)

Kedariodakon 16. Feb 2005 17:50

Re: Typenproblem: Array of Byte...
 
Zitat:

Zitat von tommie-lie
Nein, eben das Fehlen solchiger und das Vorhandensein von Tab-Characters, sowie die eigensinnige Verwendung von Linebreaks ;-)

:gruebel:
Hmm ich gestallte den Code lesbar :zwinker:
Das das Forum dies anders Darstellt als mein Delphi Editor, kann ich ja nix für... :cyclops:

Hab das Problem nun so beseitigt, das ich nun doch noch ein StartOffset übergeb :|

Bye

tommie-lie 16. Feb 2005 17:57

Re: Typenproblem: Array of Byte...
 
Zitat:

Zitat von Kedariodakon
Hab das Problem nun so beseitigt, das ich nun doch noch ein StartOffset übergeb :|

Und wo kriegt die Funktion dann die obere Grenze her? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz