Einzelnen Beitrag anzeigen

Ceruso

Registriert seit: 11. Jan 2021
5 Beiträge
 
#4

AW: Hallo suche Hilfe auf Stundenbasis in Ludwigsburg Delphi XE5

  Alt 11. Jan 2021, 13:58
Hallo

dies wird übergeben
als erstes sollte der Name der Datei übergeben werden.
Die Dll prüft in einem Verzeichniss alle Dateien auf folgende Zeichen " IF POS('0 1 2 3 4 5 6 7 8 9',HStr)=1 THEN "
und falls vorhanden soll der Name übergeben werden.

F
Delphi-Quellcode:
UNCTION ExtFlrFirst (Name : STR255;
                         VAR Kopf : TFlrKopf;
                         VAR ExtFlrDat : TExtFlrDat) : INTEGER;
StdCall EXTERNAL 'Flr_Ein.dllINDEX 1;

FUNCTION ExtFlrNext (VAR Kopf : TFlrKopf;
                         VAR ExtFlrDat : TExtFlrDat) : INTEGER;
StdCall EXTERNAL 'Flr_Ein.dllINDEX 2;

FUNCTION ExtFlrKopf (Name : STR255;
                         Bez : STR255;
                         VAR Kopf : TFlrKopf) : INTEGER;
StdCall EXTERNAL 'Flr_Ein.dllINDEX 3;

FUNCTION ExtFlrLesen (Name : STR255;
                         Bez : STR255;
                         VAR Kopf : TFlrKopf;
                         VAR Anz : INTEGER;
                         VAR C,X : TEHTSpalte) : INTEGER;
StdCall EXTERNAL 'Flr_Ein.dllINDEX 4;

FUNCTION ExtFlrLoeschen (Name : STR255;
                         Bez : STR255;
                         TmpName : STR255) : INTEGER;
StdCall EXTERNAL 'Flr_Ein.dllINDEX 5;
DLL:
Delphi-Quellcode:
FUNCTION StringIstLeer (HStr : STRING) : BOOLEAN;
VAR I : INTEGER;
BEGIN
  I := LENGTH(HStr); WHILE (I>0) AND (HStr[I]=' ') DO DEC(I);
  StringIstLeer := I=0;
END;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
BEGIN
  HoleZeile := FALSE;
  IF Dat.Flag AND (Dat.BPos<Dat.Size) THEN
  BEGIN
    Zeile.Anfg := Dat.BPos;
    Zeile.Txt := '';
    Zeile.Typ := -1;
    CR := FALSE;
    LF := FALSE;
    I := 0;
    REPEAT
      IF Dat.BPos>=Dat.Pos THEN LeseBlock(Dat);
      IF Dat.Flag AND (Dat.BPos<Dat.Size) THEN
      BEGIN
        B := Dat.Blk[Dat.BPos-Dat.BAnf];
        INC(Dat.BPos); INC(I);
        IF B=$0A THEN LF := TRUE ELSE
        IF B=$0D THEN CR := TRUE ELSE
        IF Length(Zeile.Txt)<128 THEN
        BEGIN
           {Zeichen kleiner ' ' in Leerzeichen wandeln,
            fuehrende und mehrfache Leerzeichen gleich aussondern:}

           IF (B>ORD(' ')) THEN Zeile.Txt := Zeile.Txt+CHR(B) ELSE
           IF (LENGTH(Zeile.Txt)>0)
              AND (Zeile.Txt[Length(Zeile.Txt)]<>' ')
           THEN Zeile.Txt := Zeile.Txt+' ';
        END ELSE
        IF I>MaxZL THEN Dat.Flag := FALSE;
      END;
    UNTIL (NOT Dat.Flag) OR CR OR LF OR (Dat.BPos>=Dat.Size);
    {Zeilenabschluss mit CR, folgt noch ein zugehoeriges LF?}
    IF CR AND Dat.Flag AND (Dat.BPos<Dat.Size) THEN
    BEGIN
      IF Dat.BPos>=Dat.Pos THEN LeseBlock(Dat);
      IF Dat.Flag AND (Dat.Blk[Dat.BPos-Dat.BAnf]=$0A) THEN INC(Dat.BPos);
    END;
    {Zeile gelesen?}
    IF Dat.Flag THEN
    BEGIN
      HoleZeile := TRUE;
      {Enthaelt die Zeile Daten?}
      HStr := Zeile.Txt;
      {Leerzeile?}
      IF StringIstLeer(HStr) THEN Zeile.Typ := 0 ELSE
      {Spaltenbeschriftung?}
      IF [B]POS('0 1 2 3 4 5 6 7 8 9',HStr)=1[/B] THEN
      BEGIN
        IF StringIstLeer(COPY(HStr,20,255)) THEN Zeile.Typ := 1;

Geändert von mkinzler (12. Jan 2021 um 06:51 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat