Pos()-Funktion


Einleitung

Diese Standardfunktion ermittelt die Position eines oder mehrerer Zeichen in einer größeren Zeichenfolge.


Syntax

Befehl hier dann die richtige Schreibweise gemäß Cockpit
Funktion Gibt die Position einer Zeichenkette innerhalb einer größeren Zeichenfolge zurück.
Rückgabewert Integer


Codebeispiel 1

Das Beispiel führt einige Befehle mit dem Pfad zum Pfad des AddOns durch und schreibt das Ergebnis in eine Protokolldatei.

var
  PosDataFolder : Integer;
  LaengeText : Integer;
  cpDataFolder : String;
  s: String;
  
begin
    
  s:= Trim( cpGetPackagePath() );                  // Leerzeichen vor und nach Zeichenkette entfernen
  LaengeText := Length(s);                         // Länge von s ermitteln
  PosDataFolder := Pos('Cockpit', s);              // Pfad zum Cockpit-Datenverzeichnis extrahieren
  cpDataFolder := Copy(s, 1, PosDataFolder + 10);  // Cockpit-Datenverzeichnis speichern
	
  Cockpit.WriteLog := '--------------------------------------------------';
  Cockpit.WriteLog := 'Package Pfad       : ' + s;
  Cockpit.WriteLog := 'Anzahl Zeichen Pfad: ' + IntToStr(LaengeText);
  Cockpit.WriteLog := 'Position "Cockpit" : ' + IntToStr(PosDataFolder);
  Cockpit.WriteLog := 'Datenverzeichnis   : ' + cpDataFolder;
  Cockpit.WriteLog := '--------------------------------------------------';

end.

Inhalt der Log-Datei

LogAddOn.txt
[29.03.2015 14:23:24] --------------------------------------------------
[29.03.2015 14:23:24] Package Pfad       : C:\ProgramData\Cockpit-V2\AddOn\SLX - Snippets\SLX - Beispiele Wiki
[29.03.2015 14:23:24] Anzahl Zeichen Pfad: 67
[29.03.2015 14:23:24] Position "Cockpit" : 16
[29.03.2015 14:23:24] Datenverzeichnis   : C:\ProgramData\Cockpit-V2\
[29.03.2015 14:23:24] --------------------------------------------------


Codebeispiel 2

In diesem Beispiel wird der Pfad zum AddOn ermittelt und dieser dann in seine einzelnen Bestandteile zerlegt. Das Resultat landet in der Protokolldatei LogAddOn.txt.

var
  i : Integer;
  s : String;
  PathComponents : TStringList;
  PosBackSlash : Integer;
  PathComponentsCount : Integer;
    
begin
  
  // Leerzeichen vorne und am Ende der Zeichenkette entfernen
  s := Trim(cpGetPackagePath());
  
  // Einen Backslash anfügen. Erleichtert die Verarbeitung
  s := s + '\'';
  
  Cockpit.WriteLog := '--------------------------------------------------';
  
  // Zeichenkettenauflistung als Objekt erstellen
  PathComponents := TStringList.Create;
  
  repeat
    
    // Wie sieht die Variable s zur Zeit aus?
    Cockpit.WriteLog := 'Aktueller Inhalt s  : ' + s;
    
    // Position des Backslash ermitteln
    PosBackSlash := Pos('\'', s);
    Cockpit.WriteLog := 'Position Slash      : '+IntToStr(PosBackSlash);

    // Zeichenfolge zu Liste hinzufügen
    PathComponents.Add( Copy(s, 1, PosBackSlash) );
    Cockpit.WriteLog := 'Kopierter Text      : '+ Copy(s, 1, PosBackSlash);
    Cockpit.WriteLog := '--------------------------------------------------';
    
    Delete(s, 1, PosBackSlash);     // Zeichenfolge mit \ löschen
    Inc(PathComponentsCount);       // Zähler um 1 erhöhen
    
  until s = '';   // So lange durchlaufen, bis die Variable s leer ist.
  
  // Protokolldatei schreiben
  Cockpit.WriteLog := '--------------------------------------------------';
  Cockpit.WriteLog := 'Pfad zerlegt in  : ' + IntToStr(PathComponentsCount) + ' Teile.';
  Cockpit.WriteLog := '--------------------------------------------------';
  
  // Jeden einzelnen Ordnernamen im Pfad in Log schreiben
  for i := 0 to PathComponentsCount - 1 do
  begin
    Cockpit.WriteLog := 'Name Ordner ['+IntToStr(i)+']  : ' + PathComponents[i];
  end;

  Cockpit.WriteLog := '--------------------------------------------------';
  
  PathComponents.Free;   // Objekt wieder freigeben
  
end.


Inhalt der Log-Datei:

LogAddOn.txt
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : C:\ProgramData\Cockpit-V2\AddOn\SLX - Snippets\SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 3
[29.03.2015 14:14:22] Kopierter Text      : C:\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : ProgramData\Cockpit-V2\AddOn\SLX - Snippets\SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 12
[29.03.2015 14:14:22] Kopierter Text      : ProgramData\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : Cockpit-V2\AddOn\SLX - Snippets\SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 11
[29.03.2015 14:14:22] Kopierter Text      : Cockpit-V2\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : AddOn\SLX - Snippets\SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 6
[29.03.2015 14:14:22] Kopierter Text      : AddOn\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : SLX - Snippets\SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 15
[29.03.2015 14:14:22] Kopierter Text      : SLX - Snippets\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Aktueller Inhalt s  : SLX - Beispiele Wiki\
[29.03.2015 14:14:22] Position Slash      : 21
[29.03.2015 14:14:22] Kopierter Text      : SLX - Beispiele Wiki\
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Pfad zerlegt in  : 6 Teile.
[29.03.2015 14:14:22] --------------------------------------------------
[29.03.2015 14:14:22] Name Ordner [0]  : C:\
[29.03.2015 14:14:22] Name Ordner [1]  : ProgramData\
[29.03.2015 14:14:22] Name Ordner [2]  : Cockpit-V2\
[29.03.2015 14:14:22] Name Ordner [3]  : AddOn\
[29.03.2015 14:14:22] Name Ordner [4]  : SLX - Snippets\
[29.03.2015 14:14:22] Name Ordner [5]  : SLX - Beispiele Wiki\
[29.03.2015 14:14:22] --------------------------------------------------


Hinweise

Mit der Pos()-Funktion ist es in Kombination mit einer oder mehreren Schleifen, einen strukturierte Zeichenkette, z.B. einen Pfad zu einem Verzeichnis auf der Festplatte auch komplett zu verarbeiten und in seine Bestandteile zu zerlegen.

In dem komplexeren Codebeispiel 2 kommen weitere Standardfunktionen vor. Im einzelnen sind das die Funktionen Copy(), Delete(), Length(), und Inc() und Trim().

Außerdem gibt es eine Repeat...Until- und eine For-Schleife.



Start - FAQ - Glossar - Sitemap - Impressum

 
cockpit-xp/addon/standardfunktionen/pos.txt · Zuletzt geändert: 2020/11/28 12:16 (Externe Bearbeitung)