![]() |
TStringList Max String länge
Vielleicht hat jemand eine Idee.
Wenn ich ca 100 Dateien zu einer TStringList addieren möchte bei dem der Pfad zu diesen extrem lang ist kracht es in Delphi gewaltig beim Debugen. Was ich dann machen muss ist soviele Dateien entfernen so das die maximale stringlänge nicht überschritten wird. Irgendwo kann es das aber nicht sein. Hab mir überlegt nur den Dateinamen zu übergeben dann hab ich aber das problem das ich dann keine recursive suche mehr durchführen kann da in diesen Fall der Pfad nicht mehr bekannt ist. Habe da schon so viel versucht scheitere aber immer an der länge des Pfads(string) Also die Frage wie würdet ihr das lösen ? gruss Emil |
Re: TStringList Max String länge
Anderer Vorschlag:
TList mit PChar statt TStringList. |
Re: TStringList Max String länge
Hallo,
beim Debuggen oder auch zur Laufzeit. was heisst "krachen" Heiko |
Re: TStringList Max String länge
Ich tippe eher darauf das das "Krachen" in der Stringlist durch einen anderen Fehler verursacht wird.
Kannst du ein Minimalbeispiel posten wo dieses Verhalten auftritt? |
Re: TStringList Max String länge
Beispiel:
Zitat:
Das ist einer. Zitat:
Zitat:
Nun kann man sich vorstellen wie lang der String wird wenn ich 100 Ordner addiere. Zitat:
Beim Debugen Wenn die Exe Kompiliert ist also außerhalb der IDE gestarte wird funktioniert es. Das ist der aufruf
Delphi-Quellcode:
function GlobalFindPlugins(Kind: TBASSVIS_KIND_T;
Vispath: PAnsiChar; flags: DWord; Delimiter: AnsiChar = ','): PAnsiChar; Zitat:
Was ich noch dabei sagen muss die liste wird aus einer DLL übergeben gruss Emil |
Re: TStringList Max String länge
Zitat:
Kann das nur beseitigen indem ich einige Ordner entferne. Der Code... Beispiele ist schlecht da aus DLL changed kein code problem Gruss EMil |
Re: TStringList Max String länge
Kann es eher sein das hier eine Windows-Eigenheit zuschlägt das Dateinamen/Pfad nur aufgelöst werden können wenn sie < 255 Zeichen sind bzw. weniger als 255 Zeichen vom aktuellen pfad entfernt sind?
|
Re: TStringList Max String länge
Zitat:
Deshalb meine Frage wie ich das anderes lösen kann. Am Code liegt es nicht .. der ist in Ordnung da ändert auch nichts dran wenn ich TList verwende. Wie gesagt wenn ich nur das Plugin übergeben hätte ich kein problem mehr mit der länge des String Kann aber dann den Pfad nicht übergeben was bedeute das recursive suchen wäre dann sinnlos. gruss Emil |
Re: TStringList Max String länge
Hallo Emil,
wie es ausschaut, wirst Du wohl nicht viel anderes übrigbleiben als Dir Dein eigenes ExtractFilePath zu schreiben. Die Routinen könnten in etwa so aussehen:
Delphi-Quellcode:
Kann man sicherlich noch eleganter machen ...
function extractFileName(s:string):String;
var i: Integer; begin i:= length(s); while (i > 0) and (s[i] <> '\') do begin dec(i); end; result := copy(s,i+1,length(s)-i+1); end; function extractFilePath(s:string):String; var i: Integer; begin i:= length(s); while (i > 0) and (s[i] <> '\') do begin dec(i); end; result := copy(s,1,i-1); end; Grüße Klaus |
Re: TStringList Max String länge
(sorry)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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