AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variable an Thread übergeben

Ein Thema von seddto1977 · begonnen am 19. Mai 2004 · letzter Beitrag vom 23. Mai 2004
 
seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#1

Variable an Thread übergeben

  Alt 19. Mai 2004, 15:40
Hallo,

Ichbin dabei ein Programm zu schreiben, das die Festplatten des Computers nach mp3 Dateien durchsucht, die mp3tags ausliest und dann die Möglichkeit bietet eine Playlist zu erstellen. Zuerst durchsuche ich die Festplatte nach allen mp3 Dateien und schreib den kompletten Pfad zu jeder Datei in eine txt-Datei. Damit das auslesen der mp3-tags etwas schneller geht bei vielen mp3 Dateien möchte ich das gerne mit 20 gleichzeitigen Threads machen. Jetzt hab ich das problem das die Übergabe der Pfadnamen an die Threadprozedur nicht richtig klappt:

Code:
While not eof(f) do
 begin
   readln(f, einlesen2); // aus der Textdatei den Pfad zur mp3 einlesen
   // Wenn mehr als 20 Threads, warten bis ein Thread frei wird.
   While mp3threadcounter > 20 do application.ProcessMessages;
   // Threadcounter um eins erhöhen, beim verlassen des Threads wird eins abgezogen
   inc(mp3threadcounter);
   //Thread starten, String-Variable einlesen2 übergeben.
   BeginThread(nil, 0, TFNThreadStartRoutine(@Tmp3Thread.mp3Thread),@einlesen2, 0, ThreadID);
end;
Das ist der Aufruf des Threads und hier ist der Beginn des Threads:

Code:
 
procedure Tmp3thread.mp3thread(Filename: Pointer);
var Inhalt, Fname: String;
    Stream1: tfilestream;
    einlesen: Char;

begin
// Type TCriticalSection, wurde zum Programmstart schon initialisiert
kritischerabschnitt.enter;
// In Filename steht nicht das was ich übergeben haben sondern nur Müll zb: //&%//%$%$%$)==?=?
Fname := String(Filename^);
// Obwohl in String(Filename^) etwas drinsteht ist Fname nach der Zuweisung leer ('')
kritischerabschnitt.Leave;
//Programm springt zum Ende der Threadprocedur (weil die Datei /&/&$%/()&() natürlich nicht existiert) und bricht
// mit Fehlermeldung Write of Adress irgendwas ab.
if fileexists (Fname) then
  begin
Die Variable die an die Thread-Procedur übergeben werden soll kommt nicht an, sondern nur Müll (zb: ()$%&(§$&%/§/&)$%&/()&/()$%) obowhl in dem Pointer was drin steht ist FName nach der Zuweisung leer und das programm bricht mit der Fehlermeldung Write of Adress irgendwas ab. hat jemand eine Ahnung was ich falsch mache?

Danke & LG Seddto
  Mit Zitat antworten Zitat
 


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