Ich habe einen Fehler in meiner Delphi-Anwendung. Kann mir jemand helfen? Es geht um bearbeiten und auslesen von MP3-Tags. Hier ist der Code:
unit v1u;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MPlayer, ComCtrls; type TagRecord = record Header : array [1..3] of Char; Title : array [1..30] of Char; Artist : array [1..30] of Char; Album : array [1..30] of Char; Year : array [1..4] of Char; Comment : array [1..30] of Char; Genre : Byte; end; type
function SaveTag(const FileName: String; TagData: TagRecord): Boolean; var SourceFile : File; begin try Result := true; FileSetAttr(FileName, 0); AssignFile(SourceFile, FileName); FileMode := 2; Reset(SourceFile, 1); Seek(SourceFile, FileSize(SourceFile)); BlockWrite(SourceFile, TagData, SizeOf(TagData)); CloseFile(SourceFile); except Result := false; end; end;
function ReadTag(const FileName: string; var TagData: TagRecord): Boolean; var SourceFile : File; begin try Result := true; AssignFile(SourceFile, FileName); FileMode := 0; Reset(SourceFile, 1); Seek(SourceFile, FileSize(SourceFile) - 128); BlockRead(SourceFile, TagData, 128); CloseFile(SourceFile); except Result := false; end; end;
Procedure speichern(var TagData : TagRecord); begin
if Save1.Execute then begin tagdata.Album:=Edit2.text; tagdata.Title:=Edit4.Text; tagdata.Artist:=Edit5.Text; tagdata.Year:=Edit8.text; tagdata.Genre:=Edit7.Text; SaveTag(Save1.FileName,trec);
end else Application.MessageBox('Abgebrochen!','Meldung',MB_OK); end;
Vor einem else darf kein Semikolon kommen. Sonst meckert der Compiler.
Vielleicht noch als Hinweis: Deine try-except-Blöcke sind schlechtes Design. Du fängst _alle_ Exceptions ab und behandelst sie nicht weiter. Also egal, was in dem Block schief geht, deine Anwender bekommen es nicht mit.
Ich habe die Frage geändert(mit Fehlermeldungen) Dass mit den try-exept Blöcken , das war mal eine Funktion und im exept würde sie dann Resut(boolean)=false zurückgeben.
Es spielt keine Rolle, dass das eine Funktion ist. Wenn ein _unerwarteter_ Fehler auftritt, sollte das Programm geregelt herunterfahren. Denn ab einem _unerwarteten_ Fehler kannst du nicht mehr sicher sein, dass sich das Programm noch in einem konsistenten Zustand befindet.
Bei allem nötigen Respekt: Du solltest dir ein Delphi-Buch besorgen und dich wenigstens in die Grundlagen einarbeiten. Andernfalls wird das hier ein Onlineseminar für Delphi-Programmierer :)
Deinen ganzen Methodenimplementierungen fehlt ein TForm1. vor dem Namen. Danach sollten die meisten Fehlermeldungen weg sein. Aber noch nicht alle :)
Ersetze in speichern: Save1 durch SaveDialog1 und trec durch TagData.