Aktuelles Directory Ermitteln!

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Aktuelles Directory Ermitteln!

Beitrag von al90 »

Code: Alles auswählen


; Ermittelt das Aktuell gesetzte Verzeichnis!

Procedure.s GetCurrentDir()
buflen=#MAX_PATH
a$=Space(buflen)
l=GetCurrentDirectory_(buflen,@a$)
d$=PeekS(@a$,l)
If Right(d$,1)<>"\":d$+"\":EndIf
ProcedureReturn d$
EndProcedure

currentdir$=GetCurrentDir()
Debug currentdir$
Zuletzt geändert von al90 am 03.09.2005 23:27, insgesamt 1-mal geändert.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Warum hast du den Stringbuffer auf 2 KB gesetzt? Das ist viel zu hoch.
250-300 sollten reichen.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Nur zur sicherheit. Klar, ist normalerweise viel zu hoch aber 2KB haben
selbst die ältesten Rechner der Welt noch. :mrgreen:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Dafür gibts aber #MAX_PATH :wink: (sind 260)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Na gut ich werd's bei zeiten anpassen bevor man mich noch lyncht. :lol:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich habs mal ein bissel um unnötige Umwandlungen gekürzt, ich hoffe Du bist nicht böse, ist ja nur zum lernen:

Code: Alles auswählen

; Ermittelt das Aktuell gesetzte Verzeichnis!

Procedure.s GetCurrentDir()
buflen=#MAX_PATH
a$=Space(buflen)
GetCurrentDirectory_(buflen,@a$)
If Right(a$,1)<>"\":a$+"\":EndIf
ProcedureReturn a$
EndProcedure

currentdir$=GetCurrentDir()
Debug currentdir$
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Nö kein problem, hab's ja eh als PD freigegeben. :wink:
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Hey al90.

Warum erfindest du das Rad neu? All die Proceduren die Du zuletzt gepostet hast gibts alle schon....Wer sucht der findet. Z.t. auch im Codearchiv...
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Und wenn Du die größe des erforderlichen Buffers nicht kennst, kann man diesen oft ermitteln und zwar mit derselben Funktion, durch Übergabe von #NULL

Code: Alles auswählen

Procedure.s GetCurrentDir()
  buflen=GetCurrentDirectory_(#Null,@a$); ermitteln des erforderlichen Buffers, deswegen #NULL
  a$=Space(buflen)
  GetCurrentDirectory_(buflen,@a$); zweiter Aufruf mit erforderlich Buffer
  If Right(a$,1)<>"\":a$+"\":EndIf
  ProcedureReturn a$
EndProcedure

currentdir$=GetCurrentDir()
Debug currentdir$
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Agent hat geschrieben:Hey al90.

All die Proceduren die Du zuletzt gepostet hast gibts alle schon....Wer sucht der findet. Z.t. auch im Codearchiv...
Bist Du dir da sicher ?
Antworten