Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StringError - ListenIndex überschrietet das maximum (https://www.delphipraxis.net/101317-stringerror-listenindex-ueberschrietet-das-maximum.html)

hedie 11. Okt 2007 10:54


StringError - ListenIndex überschrietet das maximum
 
Hallo

Ich habe diesen Code

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var desc:tstringlist;
begin
desc := tstringlist.Create;
////////////////////////ID3Tag Speichern/////////////////////////

desc.Add(Edit1.Text);
desc.Add(Edit2.Text);
desc.Add(Edit3.Text);
desc.Add(Edit4.Text);
desc.Add(Edit5.Text);
desc.Add(tempfilename);

saveid3(desc);
desc.Free;
////////////////////////END ID3 Speichern////////////////////////

end;
saveid3 ist so deklariert
Delphi-Quellcode:
function saveid3(descriptions:tstrings):boolean;stdcall;
Und in der DLL Sieht das so aus:

Delphi-Quellcode:
function saveid3(descriptions:tstrings):boolean;stdcall;
begin
descriptions := tstringlist.Create;
id3v2tag.Title := descriptions.Strings[0];
id3v2tag.Artist := descriptions.Strings[1];
id3v2tag.Album := descriptions.Strings[2];
id3v2tag.Track := descriptions.Strings[3];
id3v2tag.Year := descriptions.Strings[4];
id3v2tag.WriteToFile('test.mp3');
descriptions.Free;
end;
Wenn ich nun den Code (den ersten) ausführe, bekomme ich einen ListenInsdex überschreitet das Maximum 0 error

Wenn ich diese zeile
Delphi-Quellcode:
saveid3(desc);
weglass, dan bekomme ich keinen error aber dan gehts auch nicht :D

Ich hoffe ihr seht den fehler den ich nicht sehe :D

Danke schonmal

Muetze1 11. Okt 2007 10:58

Re: StringError - ListenIndex überschrietet das maximum
 
Zitat:

Zitat von hedie
Ich hoffe ihr seht den fehler den ich nicht sehe :D

Joa, tun wir. Und nicht nur einen - aber du willst ja erstmal nur den einen Wissen, warum es nicht geht...

Zitat:

Zitat von hedie
Delphi-Quellcode:
function saveid3(descriptions:tstrings):boolean;stdcall;
begin
descriptions := tstringlist.Create;
id3v2tag.Title := descriptions.Strings[0];
id3v2tag.Artist := descriptions.Strings[1];
id3v2tag.Album := descriptions.Strings[2];
id3v2tag.Track := descriptions.Strings[3];
id3v2tag.Year := descriptions.Strings[4];
id3v2tag.WriteToFile('test.mp3');
descriptions.Free;
end;

du übergibst eine Instanz um sie dann sofort mit einer neu angelegten Instanz zu überschreiben? Was meinste denn, hat eine neu angelegte Instanz von TStringList so als Inhalt? Wettervorhersage 5-zeilig? :wink:

hedie 11. Okt 2007 11:01

Re: StringError - ListenIndex überschrietet das maximum
 
also müssen
Delphi-Quellcode:
descriptions.create
und
Delphi-Quellcode:
descriptions.free
weg :D

EDIT: Habs ausprobiert... immernoch der gleiche fehler

Was für fehler siehst du denn noch? würd mich schon interessieren :D

Muetze1 11. Okt 2007 11:16

Re: StringError - ListenIndex überschrietet das maximum
 
Zitat:

Zitat von hedie
Was für fehler siehst du denn noch? würd mich schon interessieren :D

Ich habe noch folgendes gesehen:

1. Das free würde die Instanz löschen die übergeben wurde und das würde sich negativ auf die Freigabe der Instanz nach dem Aufruf auswirken.
2. Ich hoffe du hast ShareMem als erste Unit in die Applikation und der DLL eingebunden
3. Du kannst keine Klasseninstanzen übergeben, da dann die DLL sowie die App eine unterschiedliche Typinformationen haben. Damit sollte sich der gesamte Aufruf erledigen.

Zitat:

Zitat von hedie
EDIT: Habs ausprobiert... immernoch der gleiche fehler

Siehe 2. und 3.

hedie 11. Okt 2007 11:19

Re: StringError - ListenIndex überschrietet das maximum
 
Nein hab sharemem nicht in der unit eingetragen

Das merkwürdige ist, ich übertrage an einer anderen stelle im Programm auch mit hilfe von stringlists Strings
und da klappt es ohne probleme....

hedie 11. Okt 2007 12:29

Re: StringError - ListenIndex überschrietet das maximum
 
Lieber Thomas

Danke für deine Hilfe es hat funktioniert :D

Muetze1 11. Okt 2007 15:28

Re: StringError - ListenIndex überschrietet das maximum
 
Wodran lag es denn nun?

hedie 11. Okt 2007 15:40

Re: StringError - ListenIndex überschrietet das maximum
 
Das hab ich nicht herausgefunden :D

Ich hab das programm mit sharemem gestartet, dann gam zuerste (bei code ausführe) eine zugriffsverletzung

Danach hab ich es offen gelassen und dan einfach so nochmal geklickt, dan ging es und geht noch immer :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 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 by Thomas Breitkreuz