Delphi-PRAXiS
Seite 3 von 7     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamische Arrays ... kleines Problem! (https://www.delphipraxis.net/74376-dynamische-arrays-kleines-problem.html)

BlackJack 2. Aug 2006 22:28

Re: Dynamische Arrays ... kleines Problem!
 
hast du dran gedacht das bei allen BlockReads/BlockWrites zu ändern? weil sowohl Buffer als auch LoopBuffer sind arrays of SmallInt, aber du liest/schreibst immer Length() viele bytes aus, aber du musst immer Length() SmallInts auslesen :warn:

sonicfire 2. Aug 2006 22:31

Re: Dynamische Arrays ... kleines Problem!
 
Zitat:

Zitat von BlackJack
hast du dran gedacht das bei allen BlockReads/BlockWrites zu ändern? weil sowohl Buffer als auch LoopBuffer sind arrays of SmallInt, aber du liest/schreibst immer Length() viele bytes aus, aber du musst immer Length() SmallInts auslesen :warn:

Naja, das merkwürdige ist - lasse ich den letzten "Test" unten weg, ist das Ergebnis 1A! Genau DESWEGEN versteh ich ja die Welt nicht mehr :wall: Denn das ist quasi derselbe Schritt, selber Buffer, selbe Datentypen usw .... :)

sonicfire 3. Aug 2006 13:46

Re: Dynamische Arrays ... kleines Problem!
 
:lol: :roll: Oh man, und jetzt weiss keiner mehr weiter ... *grins*.
Das kann doch alles nicht sein :x Der Code müsste eigtl. doch funzen - tut es aber nicht ... seufz

sonicfire 3. Aug 2006 16:04

Re: Dynamische Arrays ... kleines Problem!
 
Soll ich demjenigen der das zum laufen bekommt 100 Euro zahlen? Lol! Gibts dann eine Antwort?
Man, echt - ich glaub das alles nicht ;) Kann doch nicht sein das ich hier ein unlösbares Problem habe.....! NADA!

EDatabaseError 3. Aug 2006 16:05

Re: Dynamische Arrays ... kleines Problem!
 
:roll: nich soviel pushen

DGL-luke 3. Aug 2006 16:50

Re: Dynamische Arrays ... kleines Problem!
 
Arrays speichern/laden? Nichts leichter als das:

Delphi-Quellcode:

type
  TMyTypeArray = array of TMyType; //TMyType durch fundamentalen typen ersetzen (z.B. Integer, oder ein record mit fudamentalen Typen)


procedure SaveToFile(Filename: string; Value: TMyTypeArray);
begin
  with TFilestream.Create(FileName, fmOpenRead) do
    try
      WriteBuffer(Value,length(Value) * sizeof(TMyType));
    finally
      Free;
    end;
end;

procedure SaveToFileAppend(Filename: string; Value: TMyTypeArray);
begin
  with TFilestream.Create(FileName, fmOpenWrite) do
    try
      Position := Size;
      WriteBuffer(Value,length(Value) * sizeof(TMyType));
    finally
      Free;
    end;
end;


procedure LoadFromFile(FileName: string; out Value: TMyTypeArray;Start: Integer = 0);
begin
  with TFilestream.Create(FileName, fmOpenRead) do
    try
      Position := Start;
      setlength(Value, Size-Position);
      ReadBuffer(Value,length(Value));
    finally
      Free;
    end;
end;
Was du jetzt tun musst:

1. Diesen Code in dein Programm kopieren
2. TMyType (alle Vorkommen!) durch SmallInt ersetzen (allerdings solltest du anstatt "SmallIntArray" evtl. "TSmallIntArray" erwägen, das ist so üblicher)
3. Deinen LoopBuffer als SmallInt deklarieren

Der dritte Schritt ist der wichtigste, der Compiler reisst dir sonst den Arsch auf!

Dann kannst du (gerne auch in SaveTheWave) einfach SaveToFileAppend aufrufen, um an deinen Header (für den du das Verfahren mit dem FileStream gerne übernehmen kannst, du könntest auch z.B. den zusätzlichen Parameter "Header" ins savetofile einfügen, und den zuerst schreiben).

Wenn dir Delphi-Referenz durchsuchenwith ... do und Delphi-Referenz durchsuchentry ... finally ... end nichts sagen, solltest du in deine Delphi-Hilfe schauen, da müsste einiges drüber finden.

sonicfire 3. Aug 2006 16:54

Re: Dynamische Arrays ... kleines Problem!
 
@EDatabaseError: Verzeihung! :oops:

@DGL-Luke: Vielen Dank!! :) Mal sehen, inwieweit ich das so hinbekomme ;) Wofür steht eigtl. das ewige "T"? :stupid:
"T"ype? *grins*

DGL-luke 3. Aug 2006 17:04

Re: Dynamische Arrays ... kleines Problem!
 
Jop. Ist bei Pascal einfach Standard, damit man Typen besser von Variablen unterschieden kann.

sonicfire 3. Aug 2006 18:26

Re: Dynamische Arrays ... kleines Problem!
 
@DGL-Luke: Noch eine (blöde?) Frage ? Wie komme ich über TStream eigentlich an meine WAV-Daten heran um sie zu manipulieren?

Quasi:
For b=0 to endeVomBuffer
"WaveData.Buffer[b] := wasauchimmer"

? :)

DGL-luke 3. Aug 2006 18:41

Re: Dynamische Arrays ... kleines Problem!
 
Naja...

Delphi-Quellcode:
procedure WasMachenMitWavVonDatei(filename: string);
var Wavbuffer: TSmallIntArray;
    i: Integer;
begin
//laden
LoadFromFile(filename, Wavbuffer, sizeof(TWavHeader)+1);
//was machen
for i := 0 to high(Wavbuffer) do
  Wavbuffer[i] .....
end;
Das sizeof(TWavHeader) mache ich, damit er erst nach dem header lädt. Ich habe in dienem Quellcode ja gesehen, dass du zuerst einen Header schreibst. Den überspringe ich damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.
Seite 3 von 7     123 45     Letzte »    

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