AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Typenproblem: Array of Byte...

Ein Thema von Kedariodakon · begonnen am 16. Feb 2005 · letzter Beitrag vom 17. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 17:22
Ich habe ein Typ:
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
Christian
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#2

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 17:27
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?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 17:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 17:52
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 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
Christian
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 17:58
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?
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 18:04
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
Function sumArrayTests( Const Data: TDataArray; Const Start, Ende: Cardinal ): Cardinal; soll nicht summieren, sondern die
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
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 18:11
[ot][Kommentar]Ich glaube tommie-lie meint die ganzen Leerzeichen überall in deinem Code [/Kommentar][/ot]
Michael
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 18:33
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 von Neutral General:
Ich glaube tommie-lie meint die ganzen Leerzeichen überall in deinem Code
Nein, eben das Fehlen solchiger und das Vorhandensein von Tab-Characters, sowie die eigensinnige Verwendung von Linebreaks
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 18:50
Zitat von tommie-lie:
Nein, eben das Fehlen solchiger und das Vorhandensein von Tab-Characters, sowie die eigensinnige Verwendung von Linebreaks

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

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

Bye
Christian
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#10

Re: Typenproblem: Array of Byte...

  Alt 16. Feb 2005, 18:57
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz