AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Fehler bei Verwendung mehrerer Forms
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Verwendung mehrerer Forms

Ein Thema von NickPower · begonnen am 6. Nov 2012 · letzter Beitrag vom 19. Nov 2012
Antwort Antwort
NickPower

Registriert seit: 4. Apr 2012
10 Beiträge
 
#1

Fehler bei Verwendung mehrerer Forms

  Alt 6. Nov 2012, 09:00
Hallo,
ich bin dabei einen MediaPlayer zu programmieren. Alles hat funktioniert, bis man versucht hat auf andere Forms zuzugreifen. Es kommt immer die Fehlermeldung:

Zitat:
Im ProjektMediaPayer.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00445BE6 in Modul 'MediaPlayer.exe'. Lesen von Adresse 000002D0'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Nimmt man die Form wieder raus, funktioniert alles wieder.

Code:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Mask, StdCtrls, ExtCtrls, Grids, MPlayer;

type
  TAudiofile = record
    path: String[255];
    title, artist, album, genre: String[30];
    year: String[4];
  end;

  TForm1 = class(TForm)
    MediaPlayer: TMediaPlayer;
    Button1: TButton;
    OpenDialog: TOpenDialog;
    ListBox: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure save(filepath: String);
    procedure loadalldata;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }

    seeker: Integer;
    RAudiofile: TAudiofile;
    musicdata: file of TAudiofile;


  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  RAudiofile: TAudiofile;

implementation

uses medialibrary;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
    assignfile(musicdata,'data.dat');
    seeker := 0;
    if fileexists('data.dat') then
    begin
        Reset(musicdata);
            loadalldata;
        if filesize(musicdata) <> 0 then
        begin
           seek(musicdata,seeker);
           read(musicdata,RAudiofile);
           mediaplayer.close;
           mediaplayer.filename := RAudiofile.path;
           mediaplayer.open;
           mediaplayer.play;
        end;
    end
    else
        rewrite(musicdata);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
    if opendialog.execute then
    begin
        for i := 0 to (opendialog.files.count -1) do
        begin
            save(opendialog.files[i]);
        end;
    end;
end;



procedure TForm1.save(filepath: String);
begin
    with RAudiofile do
    begin
        path := filepath;
        title := '';
        artist :='';
        album := '';
        genre := '';
        year := '';
    end;
    seeker := filesize(musicdata);

    seek(musicdata, seeker);
    write(musicdata, RAudiofile);  
end;



procedure TForm1.loadalldata;
var i: Integer;
begin
    for i := 0 to (filesize(musicdata) - 1) do
    begin
        seeker := i;
        seek(musicdata, seeker);
        read(musicdata, RAudiofile);
        Form2.listbox1.items[i] := RAudiofile.path;

    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    closefile(musicdata);
end;

end.
Code:
unit medialibrary;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm2 = class(TForm)
    ListBox1: TListBox;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

end.
Es wäre toll, wenn ihr mir helfen könntet.

Mit freundlichen Grüßen

Geändert von NickPower ( 6. Nov 2012 um 09:01 Uhr) Grund: Rechtschreibung
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehler bei Verwendung mehrerer Forms

  Alt 6. Nov 2012, 09:11
Form1 wird wohl das Hauptformular sein. Wenn Du in dessen OnCreate bist, existiert Form 2 noch gar nicht. Du kannst das Laden der Daten also auf einen späteren Zeitpunkt verlegen, Form2 aus der automatischen Formularerstellung herausnehmen und selbst anlegen oder darauf verzichten, aus einem Formular auf ein anderes zuzugreifen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NickPower

Registriert seit: 4. Apr 2012
10 Beiträge
 
#3

AW: Fehler bei Verwendung mehrerer Forms

  Alt 7. Nov 2012, 10:52
Form1 wird wohl das Hauptformular sein. Wenn Du in dessen OnCreate bist, existiert Form 2 noch gar nicht. Du kannst das Laden der Daten also auf einen späteren Zeitpunkt verlegen, Form2 aus der automatischen Formularerstellung herausnehmen und selbst anlegen oder darauf verzichten, aus einem Formular auf ein anderes zuzugreifen.
Hallo, ich habe erstmal loadalldata aus Form2 herausgenommen und nun funktioniert es, wie du es gesagt hast! Danke!!!
Aber wie nehme ich Form2 aus der automatischen Formularerstellung heraus?

Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Fehler bei Verwendung mehrerer Forms

  Alt 7. Nov 2012, 10:57
Projekt -> Optionen -> Formulare
Philip
  Mit Zitat antworten Zitat
NickPower

Registriert seit: 4. Apr 2012
10 Beiträge
 
#5

AW: Fehler bei Verwendung mehrerer Forms

  Alt 19. Nov 2012, 21:54
Funktioniert alles!

Vielen Dank!!!

Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
Antwort Antwort

 

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:50 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