AGB  ·  Datenschutz  ·  Impressum  







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

TStringList Max String länge

Ein Thema von EWeiss · begonnen am 11. Mär 2009 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
Seite 3 von 3     123   
EWeiss
(Gast)

n/a Beiträge
 
#21

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:18
@Muetze
Und warum nutzt du dann nicht die im Text angegebene Möglichkeit über UNC Angaben um wenigstens auf eine Pfadtiefe von 32767 Zeichen zu kommen? Weil ich zu meiner schande gestehen muss das ich nur die hälfte von dem verstehe was da steht.
Habe nie English gelernt das einzige was ich verstehe ist Denglish aus der Werbung und (Computer English) oder wie man es sonst nennen will.

gruss Emil
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:22
Guten Morgen Emil,

eingentlich brauchst Du nur \\?\ vor die PfadStrings schreiben,
denn dann weiß Windows dass ein langer Pfadname folgt.

s:=extractFileExt('\\?\'+Aplugin); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#23

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:38
Zitat von Klaus01:
Guten Morgen Emil,

eingentlich brauchst Du nur \\?\ vor die PfadStrings schreiben,
denn dann weiß Windows dass ein langer Pfadname folgt.

s:=extractFileExt('\\?\'+Aplugin); Grüße
Klaus
Guten Morgen Klaus
Danke für die Info..

Und dann verkürzt Window den Pfad ?

gruss Emil
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:42
Zitat von EWeiss:
Guten Morgen Klaus
Danke für die Info..

Und dann verkürzt Window den Pfad ?

gruss Emil
wenn ich das richtig verstanden habe:
Nö, die ExctractFileExt ruft eine Win-Api auf und die kommt dann mit den langen Pfadnamen zurecht.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#25

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:44
Zitat von EWeiss:
Ach so verstehe jetzt was du meinst
Hier mal die Funktion aus dem Forum hier...

Delphi-Quellcode:
var
  ErrorCode: DWord;
Delphi-Quellcode:
function GetShortName(sLongName: string): string;
var
  sShortName: string;
  nShortNameLen: Integer;
begin
  SetLength(sShortName, MAX_PATH);
  nShortNameLen := GetShortPathName(PChar(sLongName), PChar(sShortName), MAX_PATH - 1);
  if (0 = nShortNameLen) then
  begin
    ErrorCode := ERROR_INVALID_PARAMETER; // Du meinst das hier in etwa ?
    Exit;
  end;
  SetLength(sShortName, nShortNameLen);
  Result := sShortName;
end;
Richtig. Und damit ist dieser try-except-Block:
Delphi-Quellcode:
try
     tmpPath := GetShortName(Path);
except
     if GetlastError = ERROR_INVALID_PARAMETER then
       tmpPath := Path;
end;
überflüssig.

Aber ich würde in der Funktion GetShortName eine Exception werfen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#26

Re: TStringList Max String länge

  Alt 12. Mär 2009, 09:57
Zitat von Luckie:

Richtig. Und damit ist dieser try-except-Block:
Delphi-Quellcode:
try
     tmpPath := GetShortName(Path);
except
     if GetlastError = ERROR_INVALID_PARAMETER then
       tmpPath := Path;
end;
überflüssig.

Aber ich würde in der Funktion GetShortName eine Exception werfen.
Ich mache hier nichts anderes als den alten Pfad mit langen Namen weiter zu leiten sollte der Kurze nicht unterstützt werden.
Warum wäre dieser Block dann ungültig ?.

Edit:
Grmm .. glaube du meinst lediglich den Block nicht die abfrage.
Delphi-Quellcode:
     
tmpPath := GetShortName(Path);
if GetlastError = ERROR_INVALID_PARAMETER then
  tmpPath := Path;
das wäre es dann.
end Edit

Zitat:
Aber ich würde in der Funktion GetShortName eine Exception werfen.
werfen ?
Hab ich noch nichts mit zu tun gehabt
Wie geht das ?


@Klaus01
Zitat:
wenn ich das richtig verstanden habe:
Nö, die ExctractFileExt ruft eine Win-Api auf und die kommt dann mit den langen Pfadnamen zurecht.
Das ist aber sehr unsicher. Oder ?

Hab jetzt verschiedene möglichkeiten.
Die frage ist was nun am besten verwenden.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#27

Re: TStringList Max String länge

  Alt 12. Mär 2009, 10:27
So könnte es zum Beispiel gehen:

Delphi-Quellcode:
resourcestring
  rsEInvalidParameter = 'Der Parameter %s ist ungültig';

type
  EInvalidParameter = class(Exception)
  public
    constructor CreateFmt(Parameter: string);
  end;

{ EInvalidParameter }

constructor EInvalidParameter.CreateFmt(Parameter: string);
begin
  inherited CreateFmt(rsEInvalidParameter, [Parameter]);
end;

procedure TForm1.RaiseDemoException;
begin
  Raise EInvalidParameter.CreateFmt('Foobar');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    RaiseDemoException;
  except
    on E: EInvalidParameter do ShowMessage(E.Message);
  end;
end;
Ich habe eine eigene Exceptionklasse abgeleitet, weil ich keine passende, fertige Exception gefunden habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#28

Re: TStringList Max String länge

  Alt 12. Mär 2009, 10:37
@Luckie
Danke schön ..
Dann kann ich die noch ausbauen für etwaige andere überprüfungen.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#29

Re: TStringList Max String länge

  Alt 12. Mär 2009, 10:55
Richtig du kannst dir da dann weitere Exceptions für deine speziellen Fälle deklarieren. Habe ich bei meiner Adress-Datenbank auch gemacht. Da habe ich zum Beispiel die Exeptions:

Delphi-Quellcode:
type
  EArgumentNull = class(Exception)
  public
    constructor CreateFmt(const MethodeName: String; const Parameter: String);
  end;

  EXMLError = class(Exception)
  public
    constructor CreateFmt(const MethodeName: String; const Msg: String; const Parameter: String);
  end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:31 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