Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi: Teilstring auslesen

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

auch wenn's wahrscheinlich eine popelige Angelegenheit ist...aber ich bin nun mal Delphi-Anfänger und mir rauchen schon die Finger vom "Delphi-Kochbuch" wühlen.

Also, folgendes Problemchen:

Ich habe z.B. eine Datei die "Anreiseliste.rpt" heisst. In meiner Tabelle will ich den Namen des Berichts -nämlich "Anreiseliste"- speichern, das Dateiformat interessiert mich dabei herzlich wenig. Wie schaffe ich es, den String so auseinander zu nehmen, dass ich nur noch den Text vor dem ".rpt" übrig habe?

Wär nett wenn's jemand weiss...ich geh jetzt Wasser holen und lösche den Kabelbrand im Gehirn. ;):D

Bye,

Saga

Versuch's mal hiermit:

Datei := Copy(Dateiname, Pos('.', Dateiname), Length(Dateiname) - Pos('.', Dateiname)

In der Hilfe kannst du nachschlagen, was die einzelnen Funktionen machen.

äh, war das nicht gerade vollkomener Quatsch ?

Sollte es nicht eher

Name := Copy(Dateiname, 1, Pos('.', Dateiname))

sein ?

Mit

Datei := Copy(Dateiname, Pos('.', Dateiname), Length(Dateiname) - Pos('.', Dateiname)

kopierst du von der Stelle '.' bis zur Stelle (Länge des Strings-Stelle'.'),

also z.B. beim String 'Irgendwas.abc' würdest du von der Stelle 10 '.' bis zur Stelle 3 'g' kopieren (Falls er rückwärts überhaupt kopiert)

Original geschrieben von MarcG

Sollte es nicht eher

Name := Copy(Dateiname, 1, Pos('.', Dateiname))

sein ?

Es sollte. Das andere Beispiel ist a) viel zu kompliziert (überflüssig) und B) dürfte es den letzten Teil, also den nicht gewünschten, kopieren.

Oh Sorry, hab zu schnell geantwortet. Es sollte natürlich Copy(Dateiname, 1, Pos('.', Dateiname) heißen. Mein Beispiel gibt nur die Dateierweiterung zurück. Sorry nochmal.

Original geschrieben von Executioner

Oh Sorry, hab zu schnell geantwortet. Es sollte natürlich Copy(Dateiname, 1, Pos('.', Dateiname) heißen. Mein Beispiel gibt nur die Dateierweiterung zurück. Sorry nochmal.

aber auch dann wäre copy(Dateiname, Pos('.', Dateiname), Length(Dateiname)) weniger kompliziert gewesen und hätte das richtige Ergebnis gebracht :D :D :D

Such mal in der Hilfe nach der Funktion ExtractFileName(...). Die ist für soetwas da - ganz ohne stress.

  • Autor

Also meine Lösung schaut jetzt so aus:

Copy(Dateiname,1,length(Dateiname)-length(ExtractFileExt))

Bei dem Ansatz mit Pos('.',Dateiname) etc. hatte ich das Problem, dass er mir nur die Dateiendung in das Feld geschrieben hat.

Man kann sich jetzt drüber streiten ob das so umständlich ist oder nicht, aber so funktioniert's mal. ;)

Euch allen danke für die Hilfe!! :)

Bye,

Saga

  • Autor
Original geschrieben von Olli_Master

Such mal in der Hilfe nach der Funktion ExtractFileName(...). Die ist für soetwas da - ganz ohne stress.

Mit der arbeite ich ohnehin schon, weil der Dateiname aus nem OpenDialog heraus in die Tabelle geschrieben wird. Aber danke für den Tipp! :)

Bye,

Saga

  • Autor

Mal noch was anderes:

Ich hab ne Tabelle in der ich Gruppen anlege, denen unsere Kunden zugeordnet werden. Für die Kunden existiert ein extra Verzeichnis in dem deren Berichte etc. abgelegt sind. Jetzt will ich jedes Mal wenn eine Gruppe neu angelegt wird in dem Verzeichnis auch einen neuen Unterordner mit dem Gruppennamen anlegen. Frage: Wie setzt man sowas um? Und kann ich das auf das After-Insert-Ereignis der DBGrid legen?

Bye,

Saga

Einen neuen Ordner legt man mit CreateDir an. Mit ForceDirectories legst du mehrere Unterordner an. Ob du das Ereignis nutzen kannst, weiss ich nicht.

Original geschrieben von Saga

Und kann ich das auf das After-Insert-Ereignis der DBGrid legen?

Das After-Inser-Event müsste ausgelöst werden, nachdem du eine neue Zeile im Grid angelegt hast. Das Problem : In dem Moment hast du noch keine Daten. Dementsprechend kannst du diese Sache dort nicht lösen.

Eventuell könnte es im After-Append-Event klappen, das weiß ich aber so jetzt nicht.

Du kannst allerdings nachprüfen, wann ein Event ausgelöst wird, indem du es per Doppelklick erstellst, zwischen "begin" und "end" einen Kommentar einfügst ("//" reicht) und dann einen Haltepunkt auf "begin" legst.

  • Autor
Original geschrieben von elpedre

Das After-Inser-Event müsste ausgelöst werden, nachdem du eine neue Zeile im Grid angelegt hast. Das Problem : In dem Moment hast du noch keine Daten.

Ich werd's auf das After-Post-Ereignis legen. Hatte da nen kleinen Denkfehler...ich hab nicht daran gedacht, dass man den Insert ja in dem Moment macht, in dem man beim Navigator auf das + klickt. *peinlich*

Danke euch beiden! :)

Bye,

Saga

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.