Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Pos"-Befehl Fehler beim Auslesen (https://www.delphipraxis.net/108196-pos-befehl-fehler-beim-auslesen.html)

gizzy 8. Feb 2008 16:30


"Pos"-Befehl Fehler beim Auslesen
 
Beim Auslesen von vorhandenen Strings die durch eine Datei in mein Array eingelesen werden soll, kommen falsche Strings am Ende raus:

(Ohne Array und bla bla)

Delphi-Quellcode:
Fullname:='text - beispiel ~ wort'; //Der String der zerlegt werden soll!

Fulllen:=length(Fullname);
Pos1:=pos('-',Fullname);
Pos2:=pos('~',Fullname);

nach1:=Pos1 - 2;
vor2 :=Pos1 + 1;
nach2:=Pos2 - 2;
vor3 :=Pos2 + 1;

Intr:= Copy(Fullname,0,nach1);
tit:= Copy(Fullname,vor2,nach2);
Alb := Copy(Fullname,vor3,fulllen);
Als ergebnis gibt es für
Intr: "text"
tit: " beispiel ~ wor"
Alb: " wort"

Obowhl eigentlich das rauskommen sollte:
Intr:"text"
tit: "beispiel"
Alb: "wort"

Wo allerdings der fehler liegen "sollte", weiß ich nicht. Bei "tit" haben die Variablen vor2 und nach2 die Richtigen Zeichenpos. aber trotzdem nimmt copy mehr Zeichen raus.

Ich hoffe, dass jemand weiterhelfen kann :)
Viele Grüße
gizzy

sirius 8. Feb 2008 16:34

Re: "Pos"-Befehl Fehler beim Auslesen
 
copy hat ja auch nicht die index "von-bis", sondern "von-Anzahl"

gizzy 8. Feb 2008 16:38

Re: "Pos"-Befehl Fehler beim Auslesen
 
Zitat:

Zitat von sirius
copy hat ja auch nicht die index "von-bis", sondern "von-Anzahl"

gut zu wissen :wall: Dann kann es auch schlecht funktionieren!

Gibt es so etwas wie ich es brauche :angel2: ?

Horst_ 8. Feb 2008 16:39

Re: "Pos"-Befehl Fehler beim Auslesen
 
Hallo,

Copy funktioniert nicht ala String Von,bis sondern
string von, wieviele Zeichen
Zitat:

siehe Hilfe:
Copy Routine

Gibt einen Teilstring eines Strings oder ein Segment eines dynamischen Arrays zurück.

Unit
System

Syntax
function Copy(S: string; Index: Integer; Count: Integer): string;

Beschreibung
S ist ein Ausdruck des Typs String oder dynamisches Array. Index und Count sind Integer-Ausdrücke. Copy gibt einen Teilstring oder ein Teilarray zurück, das Count Zeichen oder Elemente ab S[Index] enthält. Der Teilsstring oder das Teilarray ist eine eindeutige Kopie (d.h., Speicher wird nicht gemeinsam mit S genutzt, obwohl Zeiger- oder Objekt-Elemente des Arrays nicht kopiert werden).

Ist Index größer als die Länge von S, gibt Copy einen leeren String oder ein leeres Array zurück.

Gibt Count mehr Zeichen oder Array-Elemente an, als verfügbar sind, werden nur die Zeichen oder Elemente von S[Index] bis zum Ende von S zurückgegeben.

Hinweis:
Wenn S ein dynamisches Array ist, brauchen Sie die Parameter Index und Count nicht anzugeben. Copy kopiert dann das gesamte Array.
Also
Delphi-Quellcode:
tit:= Copy(Fullname,vor2,nach2-vor2+1);
Gruß Horst

gizzy 8. Feb 2008 16:43

Re: "Pos"-Befehl Fehler beim Auslesen
 
Zitat:

Zitat von Horst_
Hallo,

Copy funktioniert nicht ala String Von,bis sondern
string von, wieviele Zeichen

Also
Delphi-Quellcode:
tit:= Copy(Fullname,vor2,nach2-vor2+1);
Gruß Horst

Danke! Genau was ich brauche. Mathematik for the win!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz