Results 1 to 9 of 9

Thread: ExtractShortFilePath werkt alleen op c:\

  1. #1
    Senior Member
    Join Date
    Mar 2002
    Location
    Edam
    Posts
    426

    ExtractShortFilePath werkt alleen op c:\

    Hoi,

    Omdat het long filepath (= catalog_name = max 128 chars) van een bestand voor Firedac te lang is probeer ik de korte versie op te halen met ExtractShortFileName.
    Dat leek in eerste instantie niet te werken in de zin de functie altijd de long versie teruggeeft. Nu blijkt dat als een bestand op systeemschijf C:\ staat het short path wél wordt teruggegeven.
    Geprobeerd met D10.4, XE7 en D7 maar het werkt bij alle drie hetzelfde. NB bij GetShortPathname is hetzelfde het geval.

    Heeft iemand een idee wat hiervan de oorzaak is en/of hoe het eventueel te omzeilen is ?

  2. #2
    Senior Member
    Join Date
    Mar 2002
    Location
    Edam
    Posts
    426
    overigens werkt het opgeven van een short pathname niet om het probleem van een te lange catalog_name voor firedac op te lossen. Intern wordt (kennelijk) nog steeds de lange padnaam gebruikt

  3. #3
    Bedoel je met shortnake de 8.3 notatie?
    Die kan voor NTFS volumes per vilume aangezet worden (en in jouw geval bij een andere volume dus uitstaan).

    Ook niet alle bestanden hebben daarom gegarandeerd een shortname.

    Even met fsutil 8dot3name query c: kijken of ie dus aanstaat (c vervangen door je driveletter) en met dezelfde util e.v. aanzetten.

  4. #4
    Senior Member
    Join Date
    Mar 2002
    Location
    Edam
    Posts
    426
    @rvk

    Ja, dank, dat is het! De 8dot3name stond alleen aan voor C:

    Jammer dat het geen oplossing is voor het probleem van de te lange pathnames in Firedac in de zin dat die klaarblijkelijk de lange naamversie gebruikt als basis voor de koppeling.

  5. #5
    Work-arounds die ik zo kan bedenken:
    - Database verplaatsen naar een hogere directory/korter pad
    - Driveletter-mapping maken naar de map waar de database staat (met subst of net use)
    - In een ander, korter pad een symbolic link maken naar de directory waar de database staat

    Elk natuurlijk met als doel om een kortere versie van het pad naar FireDAC te kunnen sturen.

    Valt me overigens wel tegen, van "de vrucht van 10 jaar ervaring in het ontwikkelen van real-world database-applicaties", zoals Embarcadero FireDAC omschrijft. De pad-lengte in Windows is standaard 260 tekens, en dat kan redelijk makkelijk opgerekt worden met een registry instelling. Geen idee waarom er zo'n gekke limiet in FireDAC op zit.
    1+1=b

  6. #6
    Senior Member
    Join Date
    Mar 2002
    Location
    Edam
    Posts
    426
    - Database verplaatsen naar een hogere directory/korter pad
    - Driveletter-mapping maken naar de map waar de database staat (met subst of net use)
    - In een ander, korter pad een symbolic link maken naar de directory waar de database staat
    Het is niet voor eigen gebruik en bij externe organisaties ( met lekker hard afgebakende werkomgevingen) lopen zaken als symbolic links, drive-mapping en zelfs het hernoemen van mapnamen al snel tegen een "no can do" aan.
    Het advies was al om het database-bestand maar even expliciet te verplaatsen naar een "korter"pad.
    Ben nu aan het testen of het automatisch kopieëren/verplaatsen en terugzetten naar/van user.temp een werkzame oplossing biedt.

    Wat betreft die max catalog_name length: is dit nu specifiek een beperking van Firedac of hangt het samenhangen met zoiets als een generieke voorwaarden voor ODBC ( als die er zouden zijn)

  7. #7
    Quote Originally Posted by Willem View Post
    Ben nu aan het testen of het automatisch kopieëren/verplaatsen en terugzetten naar/van user.temp een werkzame oplossing biedt.
    Ik dacht ergens gezien te hebben dat je ook met environment variabelen of relatieve paden kunt werken, maar ik weet dat niet zeker.
    Je zou dus een environment variabele aan kunnen maken en die dan gebruiken in je string.
    Misschien dat je hem zo voor de gek kunt houden (en dat het intern allemaal wel wat langer kan zijn)

    Quote Originally Posted by Willem View Post
    Wat betreft die max catalog_name length: is dit nu specifiek een beperking van Firedac of hangt het samenhangen met zoiets als een generieke voorwaarden voor ODBC ( als die er zouden zijn)
    Ik kan er niet zoveel over vinden.
    Maar mij is FireDAC sowieso te duur. Alleen Server/Client mogelijkheid voor Enterprise (en ik gebruik Professional).

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Goleztrol: er is ook een manifest optie. Lazarus heeft die in zijn applicatie schermpje (naast de utf8 optie)

  9. #9
    Om langere paden te kunnen hebben? Handig, maar dat zal hier niet werken, aangezien de beperking in FireDAC's metadata-definitie lijkt te zitten.
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •