Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Borland C++ 3.1 und lange Dateinamen...





Frage

Hallo, hat jemand von Euch eine Ahnung, wie man ein für den BC 3.1 geschriebenes Programm dazu bringen kann, lange Dateinamen zu "verstehen"? Ich habe es mit der Fkt 7160h des Interrupts 21h versucht. Es funktioniert aber laut MSDN nur unter Win9x (noch nicht ausprobiert). Unter Windows NT, 2000 oder XP funzt es leider nicht. *schluchz* z.B:[code] #include <dos.h> #include <stdio.h> #include <string.h> int short_path(char *lpath, char *spath) { int errorcode; asm push ds asm lds si,dword ptr lpath asm les di,dword ptr spath asm mov ax,7160h asm mov cx,1 asm int 21h asm pop ds asm sbb bx,bx asm and ax,bx asm mov [errorcode],ax return errorcode; } void main(int argc, char *argv[]) { char sp[256]; char lp[256]; int result; strcpy(lp, argv[1]); result = short_path((char*)&lp, (char*)&sp); printf("%d : %s : %s", result, lp, sp); } [/code]Mein Problem kommt daher, dass ich von Java aus ein altes Programm aufrufen muß, das nur vom BC 3.1 übersetzt werden kann. (Umschreiben wäre zu aufwendig) Das Programm erwartet u.a. einen Dateinamen mit vollständigen Pfad als Parameter. Das Programm kann aber nur mit der alten 8.3 Notation umgehen. Ich kann noch ein kleines Programm dazwischen schieben, welches die Konvertierung des Pfades vornimmt und es an das alte Programm weiterleitet. (getShortPath in Windows-API, dann mit _spawnv weiterleiten). Oder auch in Java via JNI auf die Windows-API zugreifen. Bevor ich die tue, wollte ich doch lieber nach einer anderen/einfacheren Lösung suchen. Gruß, Michael

Antwort 1 von semi

Hat sich erledigt.
Das mit dem Programm dazwischen war noch die beste Lösung.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: