Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Teil eines Arrays auslesen (https://www.delphipraxis.net/157649-teil-eines-arrays-auslesen.html)

HofiderKill 19. Jan 2011 16:28

Delphi-Version: 6

Teil eines Arrays auslesen
 
Hallo
ich bin neu hier, habe aber schon 2 Jahre Delphi erfahrung aus der Schule!
ich bin momentan an der arbeit und programmiere ein Programm welches mir meine musik ordnet!

Dabei bin ich an ein problem gestoßen. ich habe meine Datein, welche ich in einem Array abspeichere. also z.B.: ABBA - Mamma Mia.mp3 (es ist nicht nur ein Titel) sie sind auch nicht mit dem Pfadnamen abgespeichert sondern nur mit Interpret - Titel
ich möchte nun nur den Interpreten auslesen, und diesen in eine Listbox eintragen lassen!

Quellcode
Code:
var i:integer;
begin
for i := 0 to 1000 do
  begin
   listbox1.Items.Add(songs[i]);
  end;

end;
das array
Code:
songs: array [1..1000]of string;
ich hoffe ihr könnt mir weiter helfen!
mfg Florian

Deep-Sea 19. Jan 2011 16:31

AW: Teil eines Arrays auslesen
 
Erstens: Du greifst in der Schleife auf songs[0] zu, obwohl songs erst bei 1 beginnt.
Zweitens: Wo genau ist jetzt das Problem? :glaskugel:

HofiderKill 19. Jan 2011 16:34

AW: Teil eines Arrays auslesen
 
wenn ich aber bei songs[1] zugreif, dann steht der erste dateiname nicht in der listbox!
und mein problem ist ich bekomm so wenn ich das so wie bis jetzt ausgeben lasse
ABBA - Mamma Mia
ich möchte aber das er mir nur noch ABBA ausgibt. also alles was für dem - steht... das is mein momentan großes Problem

DeddyH 19. Jan 2011 16:35

AW: Teil eines Arrays auslesen
 
Delphi-Referenz durchsuchenCopy und Delphi-Referenz durchsuchenPos könnten Dir weiterhelfen.

[edit] Wobei es allerdings eleganter wäre, die Struktur zu ändern und z.B. einen Record mit 2 Feldern zu verwenden. [/edit]

Deep-Sea 19. Jan 2011 16:36

AW: Teil eines Arrays auslesen
 
Zitat:

Zitat von HofiderKill (Beitrag 1075859)
wenn ich aber bei songs[1] zugreif, dann steht der erste dateiname nicht in der listbox!

Dann stimmt die von dir genannte Definition
Delphi-Quellcode:
songs: array [1..1000]of string;
wohl nicht :wink:

HofiderKill 19. Jan 2011 16:38

AW: Teil eines Arrays auslesen
 
Zitat:

Zitat von Deep-Sea (Beitrag 1075861)

Dann stimmt die von dir genannte Definition
Delphi-Quellcode:
songs: array [1..1000]of string;
wohl nicht :wink:

ok ja das kann sein^^ :oops: mit dem pos und copy befehl komm ich leider auch nicht ganz weiter....
ich steh mit dem problem leider voll auf der leitung

DeddyH 19. Jan 2011 16:40

AW: Teil eines Arrays auslesen
 
Delphi-Quellcode:
const WholeFilename = 'ABBA - Mamma Mia.mp3';
Interpret := Copy(WholeFilename,1,Pos(' -',WholeFilename) - 1);
Stimmt das Ergebnis so?

Aphton 19. Jan 2011 16:44

AW: Teil eines Arrays auslesen
 
Per Pos ermittelst du die Position eines beliebigen Zeichens/Substrings in einem beliebigen String:
Pos( 'a', 'cdab' )
liefert dir den Wert 3 zurück.

Per Copy kopierst du vom String, ab der Stelle x, n Zeichen:
Copy( 'Hilfe lesen!', 6, 5 )
liefert dir 'lesen' zurück!

Was DU nun machen musst, ist, dass du die Position von '-' ermittelst und alle Zeichen ab der Stelle 1 bis zu dieser Position kopierst und diesen kopierten String (Interpret) ausgibst.

Das sollte als Hilfestellung reichen!

HofiderKill 19. Jan 2011 16:45

AW: Teil eines Arrays auslesen
 
@ DeddyH
WoW ich bin echt beeindruckt ja das stimmt!!! Dankeschön! damit is mir echt sehr weitergeholfen.
wenn ich das dann für das gesamte array durchlaufen lasse einfach mit na for schleife oder? und dann in ein 2tes array neu abspeichern! das wär mir als ersters eingefallen

@ aphton ja mit den pos zeilen is nur das problem ads ja jeder interpret, bzw titel unterschiedlich lang sind

DeddyH 19. Jan 2011 16:49

AW: Teil eines Arrays auslesen
 
Statt des Arrays kannst Du doch gleich eine TStringlist nehmen, das ist bedeutend einfacher und dynamischer. Und wie bereits gesagt: ich würde die Struktur überdenken und statt einem einfachen String einen Record oder gleich eine Klasse verwenden.

HofiderKill 19. Jan 2011 16:52

AW: Teil eines Arrays auslesen
 
ok stimmt das kann ich machen!
Ich danke für die schnelle und supa antwort!

Aphton 19. Jan 2011 18:11

AW: Teil eines Arrays auslesen
 
Zitat:

Zitat von HofiderKill (Beitrag 1075867)
@ DeddyH
WoW ich bin echt beeindruckt ja das stimmt!!! Dankeschön! damit is mir echt sehr weitergeholfen.
wenn ich das dann für das gesamte array durchlaufen lasse einfach mit na for schleife oder? und dann in ein 2tes array neu abspeichern! das wär mir als ersters eingefallen

@ aphton ja mit den pos zeilen is nur das problem ads ja jeder interpret, bzw titel unterschiedlich lang sind

Schwachsinn! Um bei deinem Beispiel zu bleiben...:

Delphi-Quellcode:
var i:integer;
begin
for i := 0 to 1000 do
   listbox1.Items.Add( Copy( songs[i], 1, Pos( ' -', songs[i] ) ) );
end;
Edit:
Du wolltest die dir gegebenen Informationen nicht aufwerten und bist einfach mit der Lösung konform gegangen -.-'

Sir Rufo 19. Jan 2011 20:31

AW: Teil eines Arrays auslesen
 
Man kann durch die Brust ins Auge kommen oder einfach den richtigen Weg einschlagen.

Hier im Forum schwirrt eine Unit für mp3 Dateien rum um die Informationen zu Interpret etc aus selbigen herauszulesen.

alfold 19. Jan 2011 21:40

AW: Teil eines Arrays auslesen
 
Wird ihm nicht viel nutzen wenn er sich seine mp3 selber erstellt!
Nur gekaufte haben diese Daten drin.

Gruss alfold

Sir Rufo 20. Jan 2011 00:45

AW: Teil eines Arrays auslesen
 
Zitat:

Zitat von alfold (Beitrag 1075958)
Wird ihm nicht viel nutzen wenn er sich seine mp3 selber erstellt!
Nur gekaufte haben diese Daten drin.

Gruss alfold

:shock: Haben wir schon den 1. April :shock:

Falls du das echt ernst meinen solltest ... nee, das muss ein Scherz sein

HofiderKill 20. Jan 2011 19:56

AW: Teil eines Arrays auslesen
 
also ich bin mit der lösung weitergekommen! und es funktioniert auch für das was ich will.

und nur mal so nebenbei man kann in jede mp3 datei interpret und titel und alles was man will schreiben, id3-tagit :=


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