AGB  ·  Datenschutz  ·  Impressum  







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

Dynamische Arrays ... kleines Problem!

Ein Thema von sonicfire · begonnen am 2. Aug 2006 · letzter Beitrag vom 4. Aug 2006
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#31

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 18:48
Dank Dir!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#32

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 18:57
Kein Problem.

Streams sind zum verschieben von Datenmengen auf jeden Fall besser als file of-Konstruktionen.

Es gibt übrigens auch Delphi-Referenz durchsuchenTMemoryStream und Delphi-Referenz durchsuchenTResourceStream.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#33

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 19:12
Hmmm.. bekomme andauernd "undeclared Identifier" .... sehr merkwürdig, die sind doch definiert...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#34

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 19:15
Zeig doch ein wenig Code.

Am besten den, in dem der Fehler auftritt
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#35

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 19:22
Unter "Implementation" :
Delphi-Quellcode:
Type
    TSmallIntArray = Array of SmallInt;
end;
..muss hier kein record hin?(Hier habe ich garantiert noch etwas verwechselt)

Ansonsten:
Delphi-Quellcode:
(...)

   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;

(...)
Procedure LoadTheWav: Identifier redeclared usw

  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#36

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 19:28
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...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#37

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 19:35
Vielen Dank!!

EDIT: Hab es
  Mit Zitat antworten Zitat
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#38

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 20:15
Okayyyy.... alllso einmal muss ich doch noch was fragen!

Und zwar:
Delphi-Quellcode:
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;
Siehe "ProcessWave(FileName: String);"

Ich lade also das wav-file, modifiziere es und speichere es wieder ...
allerdings hat sich rein gar nichts im WAV file verändert?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#39

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 20:30
Zitat von sonicfire:
Delphi-Quellcode:
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;
Schau dir mal an was du hier tust! Du setzt Position := Size und dann die Länge von Value auf Size - Position, anders gesagt, du setzt die Länge von Value auf 0.
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:
// zum Lesen:
TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

// zum Schreiben:
TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
[/EDIT]
  Mit Zitat antworten Zitat
sonicfire

Registriert seit: 17. Jan 2006
Ort: Berlin
58 Beiträge
 
#40

Re: Dynamische Arrays ... kleines Problem!

  Alt 3. Aug 2006, 20:49
Danke! Aber wieso ein "or" dazwischen? Nicht: fmOpenRead, fmSowieso?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    


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 16:39 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