AGB  ·  Datenschutz  ·  Impressum  







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

Arbeiten mit Dateien

Ein Thema von lordcroc · begonnen am 23. Okt 2002 · letzter Beitrag vom 24. Okt 2002
Antwort Antwort
Seite 1 von 2  1 2      
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#1

Arbeiten mit Dateien

  Alt 23. Okt 2002, 12:55
als attachment habe ich meien code bei gefügt wenn ich den verwende bekomme ich einen Fehler bei readbuffer vielleicht kann mir jemand helfen!
Angehängte Dateien
Dateityp: txt 147_1035374570.txt (6,2 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 23. Okt 2002, 13:40
Moin Lordroc,

mach' mal aus Deinem .Read(RW_BUFFER,... ein .Read(RW_BUFFER[1],...

Das könnte helfen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 23. Okt 2002, 14:41
weiß nicht pb das was bringt

procedure Tmp3v10.ReadBuffer (FileName: pchar);
var
Mp3File: TFileStream;
begin
Mp3File:= TFileStream.create (FileName, fmOpenReadWrite);
Mp3File.Seek (-128, soFromEnd);
Mp3File.Read (RW_Buffer, 128);
mp3File.Free;
end

damit will ich ja auf einen schlag 128 bytes einlesen!
wenn ich doch

Mp3File.Read (RW_Buffer[], 128);
schreibe greife ich doch auf einzelne elemente des buuffers zu oder irre ich mich!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 23. Okt 2002, 15:38
Moin Lordroc,

ja, in diesem Falle irrst Du

Durch den Zusatz [1] gibst Du an ab welcher Stelle Du den Buffer ansprechen willst. Die Anzahl der zu lesenden Zeichen wird ja als zweiter Parameter übergeben.

Lässt Du das [1] weg, wird die falsche Adresse angesprochen, und Dein Programm läuft auf einen Fehler auf.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 23. Okt 2002, 18:33
Ich hab es versucht aber es funktioniert nicht es muß vielleicht noch einen anderen Fehler geben. er sagt mir immer AccessVailationerror oder so ähnlich.
Angehängte Dateien
Dateityp: txt 147_1035394399.txt (6,2 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 23. Okt 2002, 18:51
Moin Lordroc,

erst einmal 'tschulligung, in Deinem Programm muss es RW_BUFFER[0] heissen, da Du ja das Array bei 0 beginnen lässt
Das war's allerdings nicht.
Der Fehler tritt in BufferToTag auf (ich hab's mit ReadTag probiert).

Es fehlt eine Initialisierung der Feldern _Title, _Artist usw. die als string deklariert sind. Du sprichst in der Methode BufferToTag mit dem Index Bereiche an, die noch nicht existieren, da die Länge dieser Stringfelder 0 ist.

Am Besten fügst Du noch den Konstruktor hinzu, und initialisierst dort die Felder, auf die mögliche Länge, oder Du deklarierst die Felder als Shortstring, also mit Längenangabe.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#7
  Alt 23. Okt 2002, 23:32
ich habe es ausprobiert es war aber nicht der einzige grund! ich hab eine class deklariert da wollte er nicht mal diese variablen initialisieren ich musste draus ein object machen! Das lesen funktioniert jetzt!!
Aber das schreiben nicht er schreibt nix rein in die datei. ich habe buffer überwacht, dort standen die neusten daten aber in die datei wurde nicht geschrieben vielleicht kannst du mir ja helfen!
Angehängte Dateien
Dateityp: txt 147_1035412335.txt (6,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#8
  Alt 24. Okt 2002, 07:59
Hallo Croco,

Zitat von lordcroc:
Ich hab eine class deklariert da wollte er nicht mal diese variablen initialisieren ich musste draus ein object machen!
Das ist auch kein Wunder. Die Klassendeklaration ist erstmal nicht viel mehr als die Bau-Anleitung für ein Objekt. Erst das Objekt selber ist ein funktionierendes "Ding", welches alle die Möglchkeiten bietet, die Du Dir in Deiner Klassen-Definition angegeben hast.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#9
  Alt 24. Okt 2002, 11:25
Zitat von Daniel:
Hallo Croco,

Zitat von lordcroc:
Ich hab eine class deklariert da wollte er nicht mal diese variablen initialisieren ich musste draus ein object machen!
Das ist auch kein Wunder. Die Klassendeklaration ist erstmal nicht viel mehr als die Bau-Anleitung für ein Objekt. Erst das Objekt selber ist ein funktionierendes "Ding", welches alle die Möglchkeiten bietet, die Du Dir in Deiner Klassen-Definition angegeben hast.
Ich glaube lordcroc meint es eher so, dass er einer Deklaration type TSomething = class so umformen musste, dass dabei type TSomething = object heraus kommt.

@lordcroc: Das dürfte daran liegen, dass du keinen Kostruktor und Destruktor eingebaut hast. objects sollte man nicht mehr benutzen, sie sind nur zur Abwärtskompatiblität da. Baue deine Klasse so um:

Code:
type
  TSomething = class(TObject)
    { hier dein Kram }
    constructor Create();
    destructor Destroy();
  end;

// ...

constructor TSomething.Create();
begin
  inherited Create();
end;

destructor TSomething.Destroy();
begin
  inherited Destroy();
end;
Du kannst diene Objekte dann mit aTSomethingInstanceVariable := TSomething.Create() erstellen und mit aTSomethingInstanceVariable.Free() entfernen.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 24. Okt 2002, 12:31
Moin Lordroc,

das mit der class Deklaration war schon völlig in Ordnung.

Hier so der abschliessende Kommentar in der Hilfe zu object:
Zitat von Delphi Hilfe:
Objekttypen werden nur aus Gründen der Abwärtskompatibilität unterstützt und sollten in neuen Anwendungen nicht mehr verwendet werden.
Wenn Du nur class schreibst wird angenommen, dass Du class(TObject) gemeint hast. Soweit ist also alles gut.
Um sich das Leben zu vereinfachen, kannst Du übrigens StringOfChar für die Initialisierung der Strings verwenden, dann hast Du einen besseren Überblick über die Länge.

Code:
[b]type[/b]
  TMp3v10 = [b]class[/b]
            [b]private[/b]
              [color=#000080]// Weitere private Deklarationen[/color]
            [b]public[/b]
              [color=#000080]// Weitere public Deklarationen[/color]
              [b]constructor[/b] Create;
             [b]end[/b];

[b]implementation[/b]

[b]constructor[/b] TMp3v10.Create;
[b]begin[/b]
  [b]inherited[/b] Create;
  [color=#000080]// und hier die weiteren Initialisierungen[/color]
  [color=#000080]// z.B.[/color]
  _Title := StringOfChar(#32,30);
[b]end[/b];
Was mir noch aufgefallen ist:
In der Methode IsTag kommt als erstes ein ReadBuffer. Du überschreibst also schon mal wieder die gerade erzeugten Daten.

Probleme beim Schreiben hatte ich allerdings nicht.

[EDIT]Kommt davon wenn man so lange in der Antwort Maske steht [/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 01:59 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