Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TStrings Erzeugen bevor die Form initialisiert wird? (https://www.delphipraxis.net/42287-tstrings-erzeugen-bevor-die-form-initialisiert-wird.html)

Gregg 16. Mär 2005 21:06


TStrings Erzeugen bevor die Form initialisiert wird?
 
Hallo,
schreibe grad nen Mediaplayer und versuche mit paramstr den jeweiligen Filename in eine Textdatei auf den Computer tempörär zu speichern. Allerdings funktioniert TMemo.Create nicht und die Zuweisung der Variable temp als TStrings endet auch in einem access violation error. Mit assign(temp,extractfiledrive(paramstr(0)+'\Mediapl ayer_System'temp.dat') kann ich keine Absätze reinschreiben, welche ich allerdings bräuchte, um sie der listbox1 meines player zuzuführen.

Hilfe ?!?

Pr0g 16. Mär 2005 21:14

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Warum nutzt du nicht das onCreate der Form?

MfG Pr0g

Gregg 16. Mär 2005 21:25

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Liste der Anhänge anzeigen (Anzahl: 1)
mach ich doch:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
type
    Einstellungen = record
     Lautstaerke : integer;
     Skin : string[1];        {Buttons}
     playlistnamen : boolean; {Vollst. Namen anzeigen?}
     Color : Tcolor;          {Hintergrund}
     Color_ue : Tcolor;       {Ueberschriftenfarbe}
     Color_sch : Tcolor;      {Schriftfarbe}
     Font_ue : TFont;         {Schriftart(Ueberschriften)}
     Font : TFont;            {Schriftart(Normalschriften)}
    end;

var i,j:integer;
    groesse:longint;
    Sem: THandle;
    strin:string;
    Mutex: THandle;
    Was:Einstellungen;
    f:file of byte;
    temp:file of char;

label 99;

begin
  MediaplayerMsg := RegisterWindowMessage('Mediaplayer');
  Mutex := CreateMutex(nil, False, 'Mediaplayer');
  if GetLastError = ERROR_ALREADY_EXISTS then
   begin
    SendMessage(HWND_BROADCAST, MediaplayerMsg, 0, 0);
    if paramcount=0 then halt;
   end;
  if Mutex <> 0 then
    ReleaseMutex(Mutex);

  id1 := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, id1, MOD_CONTROL, VK_F1);
  id2 := GlobalAddAtom('Hotkey2');
  RegisterHotKey(Handle, id2, MOD_CONTROL, VK_F2);
  id3 := GlobalAddAtom('Hotkey3');
  RegisterHotKey(Handle, id3, MOD_CONTROL, VK_F3);
  id4 := GlobalAddAtom('Hotkey4');
  RegisterHotKey(Handle, id4, MOD_CONTROL, VK_F4);
  id5:=GlobalAddAtom('Hotkey5');
  RegisterHotkey(Handle, id5, MOD_Control, VK_Prior);
  id6:=GlobalAddAtom('Hotkey6');
  RegisterHotkey(Handle, id6, MOD_CONTROL, VK_Next);

if not fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\mediaplayer.ini') then
 begin
 CreateDir('\Mediaplayer_System');
 CreateDir(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs');
 skin_c_p.picture.SaveToFile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\play.bmp');
 skin_c_pa.picture.SaveToFile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\pause.bmp');
 skin_c_s.picture.SaveToFile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\stop.bmp');
 skin_c_b.picture.SaveToFile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\back.bmp');
 skin_c_n.picture.SaveToFile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\next.bmp');
 end
 else begin
 Einstellungen_laden(trackbar2,playlistnamen,classic,modern,Form1,
 label1,label3,label4,label5,label6,label7,label8, title,artist,comment,
 year,album,genre,memo1,listbox1,gauge1,Statictext1,Statictext2);
  AssignFile(f, extractfiledrive(paramstr(0))+'\Mediaplayer_System\mediaplayer.ini');
  Reset(f);
  BlockRead(f,Was,FileSize(f));
  CloseFile(f);
 if was.skin='' then
  begin
   playbutton.glyph.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\play.bmp');
   pausebutton.glyph.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\pause.bmp');
   stopbutton.glyph.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\stop.bmp');
   back.glyph.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\back.bmp');
   nextbutton.glyph.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\glyphs\next.bmp');
  end;
 end;


 for i:=0 to MaxID3Genre do genre.items.add(ID3Genre[i]);
  i:=0;
  assignfile(temp,(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat'));
    if not fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat') then
    rewrite(temp) else append(temp);

  99:
  strin:='';
 if (paramcount>0) then
  begin
   while not fileexists(strin) do begin
   i:=i+1;
    strin:=strin+paramstr(i);
    end;
    strin:=strin+#13#10;
    for j:=1 to length(strin)-1 do write(temp,strin[j]);
    if i<paramcount then goto 99;
    closefile(temp);
    delete(strin,length(strin)-1,2);
    listbox1.items.clear;
    listbox1.items.add(extractfilename(strin));
    maxlied:=1;
    mediaplayer1.close;
    Label1.caption:=strin;
   FillID3TagInformation(strin, Title,Artist,Album,Year,Comment, Genre);
   mediaplayer1.filename:=strin;
   mediaplayer1.open;
   SetMPVolume(mediaplayer1,trackbar2.position);
   gesamtzeitsek:=(mediaplayer1.length div 1000);
   gesamtzeitmin:=0;
   trackbar1.max:=mediaplayer1.length;
   gauge1.maxvalue:=mediaplayer1.length;
   while (gesamtzeitsek>=60) do
    begin
     gesamtzeitsek:=gesamtzeitsek-60;
     gesamtzeitmin:=gesamtzeitmin+1;
    end;
   if gesamtzeitsek<10 then gesamtzeit.caption:=inttostr(gesamtzeitmin)+':0'+inttostr(gesamtzeitsek)
   else gesamtzeit.caption:=inttostr(gesamtzeitmin)+':'+inttostr(gesamtzeitsek);
   mediaplayer1.play;
  end;
end;
Und was auch ganz toll ist: bei dem Code sieht die temp.dat dann ungefähr so aus, wie auf dem Bild im anhang...


Ich versteh des einfach nich..

Pr0g 16. Mär 2005 21:29

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Du könntest doch eine StringList zum bearbeiten/speichern der Datei nutzen. Was genau ist denn das Problem? Du sagts, dass du keine Absätze in die die Datei bekommst, was meinst du damit? Zeilenumbrüche scheinen ja drin zu sein.

Gregg 16. Mär 2005 21:31

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Ja das Problem hab ich durch nen Hexeditor lösen können (wusste den internen Code für Absätzee nich aber schau dir mal das Bild an (1 post vorher im anhang)

Das Problem liegt darin, dass ich anscheinend keine delphiinternen Objecte im OnCreate benutzen kann, ohne ein access Violation zu provozieren..

Pr0g 16. Mär 2005 21:34

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Da die Datei als Text gespeichert werden soll kannst du doch eigentlich auch "textfile" statt "file of char" nehmen. Ich würde dir aber trotzdem zu einer Stringliste raten, da es leichter geht.

Gregg 16. Mär 2005 21:37

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Mit einer TStrings Komponente erzeugt er mir grad nen Abstract Error..

Pr0g 16. Mär 2005 21:40

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Wie sieht denn dein Code aus mit dem Fehler?

Gregg 16. Mär 2005 21:44

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Delphi-Quellcode:
var test : TStrings;

begin
//....
test:=TStrings.Create;
test.add(strin);
test.savetofile('.....\temp.dat');

aber ok
mit deinem tipp mit dem textfile geht alles (war noch pascal gewöhnt; da isses ja text; deshalb dacht ich das gibts nich mehr)

Vielen Dank

Wenn du willst kannste nen ja mal testn:

Meine Hp mit Download

GuenterS 16. Mär 2005 21:48

Re: TStrings Erzeugen bevor die Form initialisiert wird?
 
Zitat:

Zitat von Gregg
Delphi-Quellcode:
var test : TStrings;

begin
//....
test:=TStrings.Create;
test.add(strin);
test.savetofile('.....\temp.dat');

aber ok
mit deinem tipp mit dem textfile geht alles (war noch pascal gewöhnt; da isses ja text; deshalb dacht ich das gibts nich mehr)

Vielen Dank

Wenn du willst kannste nen ja mal testn:

Meine Hp mit Download

Is klar Du solltest auch nicht "TStrings" sondern "TStringList" verwenden, da die Methoden der TStrings Klasse abstract sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Seite 1 von 2  1 2      

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