![]() |
Re: Dynamische Arrays ... kleines Problem!
Dank Dir! :)
|
Re: Dynamische Arrays ... kleines Problem!
Kein Problem.
Streams sind zum verschieben von Datenmengen auf jeden Fall besser als file of-Konstruktionen. Es gibt übrigens auch ![]() ![]() |
Re: Dynamische Arrays ... kleines Problem!
Hmmm.. bekomme andauernd "undeclared Identifier" .... sehr merkwürdig, die sind doch definiert...
|
Re: Dynamische Arrays ... kleines Problem!
Zeig doch ein wenig Code.
Am besten den, in dem der Fehler auftritt |
Re: Dynamische Arrays ... kleines Problem!
Unter "Implementation" :
Delphi-Quellcode:
..muss hier kein record hin?(Hier habe ich garantiert noch etwas verwechselt) :oops:
Type
TSmallIntArray = Array of SmallInt; end; Ansonsten:
Delphi-Quellcode:
Procedure LoadTheWav: Identifier redeclared usw
(...)
procedure SaveWavFileClick(Sender: TObject); procedure DisableItems(Status: Boolean); procedure KeyNoteClickCheck(Sender: TObject); Procedure LoadTheWave(FileName: String; out Value: TSmallIntArray; Start: Integer = 0); private { Private declarations } public KeysToRecord: Array[0..11] of Integer; function ValidateInput(Itemobject: String; minval, maxval: Integer): String; { Public declarations } end; (...) :| |
Re: Dynamische Arrays ... kleines Problem!
1. der type muss ins interface, nicht in implementation
2. es sollte in ein EINER unit nur EINMAL type geben ! alles andere führt potenziell zu schlimmen Sachen.... 3. identifier redeclared kommt, weil du es im implementation abschnitt deklarierst, im interface aber schon verwedest... ja, die fehlermeldung ist ein wenig irreführend... |
Re: Dynamische Arrays ... kleines Problem!
Vielen Dank!! :)
EDIT: Hab es :oops: :lol: |
Re: Dynamische Arrays ... kleines Problem!
Okayyyy.... alllso einmal muss ich doch noch was fragen! :oops:
Und zwar:
Delphi-Quellcode:
Siehe "ProcessWave(FileName: String);"
Procedure TForm1.LoadTheWave(FileName: String; out Value: TSmallIntArray;Start: Integer = 0);
begin with TFilestream.Create(Filename, fmOpenRead) do try Position := Size; setlength(Value, Size-Position); ReadBuffer(Value,length(Value)); finally Free; end; end; Procedure TForm1.SaveTheWave(Filename: string; Value: TSmallIntArray); begin with TFileStream.Create(Filename, fmOpenWrite) do try WriteBuffer(Value,length(Value)*sizeof(SmallInt)); finally Free; end; end; Procedure TForm1.ProcessWave(FileName: String); var Wavbuffer: TSmallIntArray; Header: TWaveHeader; i: Integer; begin LoadTheWave(Outputfile.Text, Wavbuffer, sizeof(Header)+1); //laden des waves for i := 0 to high(Wavbuffer) do // testweise stille einfügen begin Wavbuffer[i] := 0; end; SaveTheWave(Outputfile.Text, Wavbuffer); end; Ich lade also das wav-file, modifiziere es und speichere es wieder ... allerdings hat sich rein gar nichts im WAV file verändert? :) |
Re: Dynamische Arrays ... kleines Problem!
Zitat:
Wenn du 0 Byte zu schreiben hast, nun ja, dann wird natürlich auch nie irgendwas geschrieben... Gruß Der Unwissende [EDIT] PS: Du solltest deine FileStreams noch etwas anders öffnen. Wenn du etwas zum Lesen öffnest, solltest du eine Schreibsperre setzen (sonst könntest du irgendwann das Problem haben, dass jmd. schreibt während du liest) und wenn du schreibst, dann kannst du gleich exklusiv sperren.
Delphi-Quellcode:
[/EDIT]
// zum Lesen:
TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); // zum Schreiben: TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); |
Re: Dynamische Arrays ... kleines Problem!
Danke! Aber wieso ein "or" dazwischen? Nicht: fmOpenRead, fmSowieso?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 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