| 

.NET C# Java Javascript Exception

1
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

TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit2: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit7: TEdit;
Edit8: TEdit;
SaveDialog1: TSaveDialog;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
Label2: TLabel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
CheckBox1: TCheckBox;
function SaveTag(const FileName: String; TagData: TagRecord): Boolean;
function ReadTag(const FileName: string; var TagData: TagRecord): Boolean;
procedure speichern(var TagData:TagRecord);
end;

var
Form1: TForm1;


implementation
{$R *.dfm}


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;


end.

Verwendete Komponente:
Button2(öffnen)
Button3(speichern)
Edit2(album)
Edit4(titel)
Edit5(interpret)
Edit8(jahr)
Edit7(genre)

FEHLERMELDUNGEN
Undefinierter Bez.:('Save1'[Z92],'edit2'[Z93])
Operator oder Semikolon fehlt[Z94]
Undefinierter Bez.:'Edit4'[Z94]
Oper. od. Semik. fehlt[Z95]
Undefinierter Bez.:'Edit5'[Z95]
Oper. od. Semik. fehlt[Z96]
Undefinierter Bez.:'Edit7'[Z96]
Oper. od. Semik. fehlt[Z97]
Undefinierter Bez.:'Edit8'[Z97]
Oper. od. Semik. fehlt[Z98]
Nicht genügend wirkl. parameter[Z98]
';' aber 'else' gefunden[Z101]
'.' erwartet, aber ';' gefunden[Z103]
Ungen. Forward- oderExternal.Deklaration:'TForm1.SaveTag'[Z38]
Ungen. Forward- oderExternal.Deklaration:'TForm1.ReadTag'[Z39]
Ungen. Forward- oderExternal.Deklaration:'TForm1.speichern'[Z40]

Meine E-Mail:Davecreate@yahoo.de
News:
28.05.2011
david k. 13 5
Naja. Wäre schon schön, wenn du uns an den Fehlermeldungen teil haben lassen könntest...
Andreas Richter 28.05.2011
1
wie schon erwähnt, stelle Function/Procedure Definition ein TForm1.
Ersetze in speichern: Save1 durch SaveDialog1 und trec durch TagData.
– Gast 30.05.2011
2 Antworten
1
Wie ich in meinem Kommentar schon schrieb ist es schwierig dir zu helfen, wenn wir nicht wissen, was dein Problem ist.

Beim überfliegen deines Codes sind mir aber zwei Fehler aufgefallen:

1.
type
public
TForm1 = class(TForm)

hier ist das public fehl am Platz.

2.
end;
else
Application.MessageBox('Abgebrochen!','Meldung',MB_OK);

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.
28.05.2011
Andreas Richter 1,7k 1 2 8
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.
david k. 29.05.2011
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.
Andreas Richter 29.05.2011
0
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 :)
29.05.2011
Andreas Richter 1,7k 1 2 8

Stelle deine Delphi-Frage jetzt!