![]() |
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:
|
Re: Dynamische Arrays ... kleines Problem!
Zitat:
|
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 |
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! |
Re: Dynamische Arrays ... kleines Problem!
:roll: nich soviel pushen
|
Re: Dynamische Arrays ... kleines Problem!
Arrays speichern/laden? Nichts leichter als das:
Delphi-Quellcode:
Was du jetzt tun musst: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; 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 ![]() ![]() |
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* |
Re: Dynamische Arrays ... kleines Problem!
Jop. Ist bei Pascal einfach Standard, damit man Typen besser von Variablen unterschieden kann.
|
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" ? :) |
Re: Dynamische Arrays ... kleines Problem!
Naja...
Delphi-Quellcode:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
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