![]() |
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) . ![]() Und speichern tue ich es so:
Delphi-Quellcode:
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).
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; Hat wer eine Idee? |
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 |
Re: Probleme mit ListView in HTML Speichern
eigentlich lass ich nichts abzählen woher ich nicht weiß, woher es kommen sollte
|
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.
|
Re: Probleme mit ListView in HTML Speichern
ich habe hier die längen weg genommen
Delphi-Quellcode:
Hiermit erstelle ich die liste nach Feld eintrag
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));
Delphi-Quellcode:
Beginn der Suche:
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;
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; |
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 |
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 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz