Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme mit ListView in HTML Speichern (https://www.delphipraxis.net/86248-probleme-mit-listview-html-speichern.html)

Flom 11. Feb 2007 16:09


Probleme mit ListView in HTML Speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich habe Probleme wenn ich Daten von einem ListView in HTML Speichere (jedoch nur mit dem FireFox).
Ich benutze erst mal folgende Funktion zum Auslesen von ID3 Tags (ich glaube daher kommt der, ich finde den Fehler nur nicht) .
http://www.dsdt.info/tipps/?id=349&search=id3

Und speichern tue ich es so:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var LCount1, LCount2: Integer;
    LListe: TStringlist;
    LStr: String;
begin
if SaveDialog1.Execute then

  begin
    LListe := TStringlist.Create;
    LListe.Add('MP3 Lister
');
    LListe.Add('Insgesamt: '+IntToStr(ListView1.Items.Count)+' MP3s.
');
    LListe.Add('
');
    for LCount1 := 0 to ListView2.Items.Count - 1 do
    begin
      LStr := ListView1.Items.Item[LCount1].Caption;
      for LCount2 := 0 to ListView2.Items.Item[LCount1].SubItems.Count - 1 do
        LStr := LStr + '-' + Listview1.Items.Item[LCount1].SubItems.Strings[LCount2]+'
';
      LListe.Add(LStr);
    end;
    LListe.SaveToFile(SaveDialog1.FileName);
    LListe.Free;
  end;
end;
Ich erhalte folgende Ausgabe s. Anhang diese Vierecke jedoch bekomme ich das eben nicht beim IE sowie am Ende oder mitten drin immer Symbol reihen (auch siehe Bild).

Hat wer eine Idee?

marabu 11. Feb 2007 16:27

Re: Probleme mit ListView in HTML Speichern
 
Hallo,

der gezeigte Code verursacht den Fehler nicht. Bei der Beschaffung der Strings aus dem ID3-Tag hast du wahrscheinlich zuviele Zeichen übernommen. Wahrscheinlich sind sie abgezählt - dann darfst du nur die entsprechende Anzahl übernehmen.

Grüße vom marabu

Flom 11. Feb 2007 16:33

Re: Probleme mit ListView in HTML Speichern
 
eigentlich lass ich nichts abzählen woher ich nicht weiß, woher es kommen sollte

marabu 11. Feb 2007 16:40

Re: Probleme mit ListView in HTML Speichern
 
Zeige mal den Code, mit dem du die Angaben aus dem Tag übernimmst. Auch die Typen der beteiligten Variablen. Im ID3-Tag stehen die Daten offensichtlich (DSDT-Link) mit einem Längenbyte.

Flom 11. Feb 2007 16:50

Re: Probleme mit ListView in HTML Speichern
 
ich habe hier die längen weg genommen
Delphi-Quellcode:
type
  TID3Tag = record
    ID: string[3];
    Titel: string;
    Artist: string;
    Album: string;
    Year: string[4];
    Comment: string;
    Genre: byte;
    dauer: longint; //in sekunden;
    sample: integer;
    bits: byte;
    vers: byte;
    layers: byte;
end;

const
  MPEG_BIT_RATES : array[1..3] of array[1..3] of array[0..15] of word =
  { Version 1, Layer I }
    (((0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,0),
  { Version 1, Layer II }
    (0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,0),
  { Version 1, Layer III }
    (0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,0)),
  { Version 2, Layer I }
    ((0,32,48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,0),
  { Version 2, Layer II }
    (0, 8,16,24, 32, 40, 48, 56, 64, 80, 96, 112,128,144,160,0),
  { Version 2, Layer III }
    (0, 8,16,24, 32, 40, 48, 56, 64, 80, 96, 112,128,144,160,0)),
  { Version 2.5, Layer I }
    ((0,32,48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,0),
  { Version 2.5, Layer II }
    (0, 8,16,24, 32, 40, 48, 56, 64, 80, 96, 112,128,144,160,0),
  { Version 2.5, Layer III }
    (0, 8,16,24, 32, 40, 48, 56, 64, 80, 96, 112,128,144,160,0)));

  sample_rates: array[1..3] of array [0..3] of word=
    ((44100,48000,32000,0),
    (22050,24000,16000,0),
    (11025,12000,8000,0));
Hiermit erstelle ich die liste nach Feld eintrag

Delphi-Quellcode:
procedure TForm1.CreateFileList(Dir, Ext: String; UseSubDirs: Boolean);
var
SR: TSearchRec;
Item: TListItem;

begin
If FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
Repeat
  If (SR.Attr and faDirectory = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') and (UseSubDirs) then CreateFileList(IncludeTrailingPathDelimiter(Dir + SR.Name), Ext, UseSubDirs)
  Else If LowerCase(ExtractFileExt(SR.Name)) = LowerCase(Ext) then
   begin
    Application.ProcessMessages;
    ///////////////////////////////////////////////
    Item := ListView1.Items.Add;
    ///////////////////////////////////////////////
    Lese_ID3Tag(Dir + SR.Name);
    Item.Caption := ID3Tag.Artist;
    Item.SubItems.Add(ID3Tag.Titel);
    Item.SubItems.Add(ID3Tag.Album);
    Item.SubItems.Add(SR.Name);
    //Item.SubItems.Add(Dir);
    ///////////////////////////////////////////////
    Item := ListView2.Items.Add;
    Item.Caption := artist;
    Item.SubItems.Add(titel);
   end;
   Label2.Caption:='Aktion: Suche Dateien';
Until FindNext(SR) <> 0;
FindClose(SR);
Label2.Caption:='Aktion: Fertig';
end;
Beginn der Suche:
Delphi-Quellcode:
procedure TForm1.SucheClick(Sender: TObject);
begin
artist:=ID3Tag.Artist;
titel:=ID3Tag.Titel;
ListView1.Clear;
ListView2.Clear;
if CheckBox_MP3.Checked = True then
CreateFileList(quelle + '\', '.mp3', CheckBox1.Checked);
if CheckBox_WMA.Checked = True then
CreateFileList(quelle + '\', '.wma', CheckBox1.Checked);
Label1.Caption:='Insgesamt: '+IntToStr(ListView1.Items.Count);
//////////////////////////////////////////////////////////////
ColumnToSort := 0; //hier also der Index der Spalte, nach der Sortiert werden soll
ColumnToSort2 := 2;
ColumnToSort3 := 1;
ListView1.AlphaSort;
end;

marabu 11. Feb 2007 17:05

Re: Probleme mit ListView in HTML Speichern
 
Du darfst die Längen nicht einfach wegnehmen. String[3] reserviert Platz für einen String mit einem Längenbyte und maximal drei Zeichen Inhalt. String als Typ ist etwas ganz anderes, auch wenn du beim Arbeiten damit nicht sofort etwas merkst.

Freundliche Grüße

Flom 12. Feb 2007 14:25

Re: Probleme mit ListView in HTML Speichern
 
es ist egal ob ich diese weg nehme oder gar da sind!
Das Problem ist das selbe... wenn ich jedoch es als txt datei speichere und dort dann in html geht es... ich versteh nur nicht wieso


kann wer sagen ob man auch id3v2 irgendwie auslesen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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