Autor Beitrag
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 10:29 
Hi Leute,

ich bin wohl irgendwie zu blöde dafür, ich wende den folgenden Befehl an :

ausblenden Quelltext
1:
  Delete(regValue,0,j);					


Wenn ich jetzt nun regValue wieder ausgebe schneidet er mir immer das letzte Zeichen ab. Hat jemand eine Idee, warum das so ist und wie ich es beheben kann ?
ao
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Mi 21.08.02 10:40 
Hallo bis11,

irgendwie brauche ich für eine vernünftige Antwort mehr Code! :wink:

Gruß
Andreas
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: Mi 21.08.02 10:49 
was willst du mit dem Befehl denn erreichen? Und wie berechnet sich j?

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 10:52 
Hi,

hier ist mehr Code :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
   j : Integer;
   regValue : String;
begin
   ....
    j := length(Value);
    Delete(regValue,0,j);
    Label1.Caption := regValue;
   ....
end;


Ich lösche immer nur vom Anfang des Strings. Das hängt in einer Abfrage drin ob das Value existiert. Existiert es, dann soll es vom Anfang gelöscht werden.
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: Mi 21.08.02 11:42 
Die Indizierung bei Strings beginnt mit 1 - und nicht mit 0. Dies ist noch eine alte Win31 Konvention. Damals wurde an Position 0 immer die Länge des Strings gespeichert (1 byte, unter Windows 3.1 waren nur Strings bis 255 Zeichen zulässig!).
Unter Delphi 2 aufwärts ist dies nur noch bei den ShortStrings möglich, da unter Windows 95/NT/... diese Limitierung aufgehoben wurde und nun Strings fast beliebig lang sein können.

Die Codezeile lautet dann korrekt
Delete(regValue,1,j);

_________________
"Wenn Debugging ein Vorgang ist, Fehler aus einem Programm auszubauen, dann ist Programmieren der Vorgang, Fehler einzubauen."
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 11:56 
Auch mit der Codezeile Delete(regValue,1,j) schneidet er mir den letzten Buchstaben ab. Was nun ?
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mi 21.08.02 13:17 
j ist die Länge des gesamten Strings. Deshalb muß Du so proggen:
Zitat:

Delete(regValue,1,j-1);

cu Patmann
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 14:02 
Also, ich habe folgendes herausgefunden, egal wie ich den Befehl schreibe der letzte Buchstabe wird noch immer von Ergebnisstring abgeschnitten. Der Unterschied besteht jetzt nur noch darin, wenn ich das alles über Variablen mache und das wieder in die Datei reinschreibe löscht er den letzten Buchstaben des Ergebnis-Strings. Nehme ich den gleichen String und starte den Vorgang manuell über einen Button und die Strings sind jeweils in einem Edit-Feld, dann löscht er passend den String, der gelöscht werden soll. Warum ?
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 15:04 
Weiß denn keiner Rat, warum von meinem Ergebnisstring immer der letzte Buchstabe abgeschnitten wird, wenn ich das wieder in die Datei zurückschreibe ?
Teutobod
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 55



BeitragVerfasst: Mi 21.08.02 16:07 
Hast du eigentlich schon mit dem Debugger nachgeschaut ob das letzte Zeichen beim delete... schon abgeschnitten wird oder erst beim in die Datei zurückschreiben?
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 21.08.02 17:12 
Ich habe mittlerweile den Fehler gefunden. Die Positionsangabe 0 oder 1 als feste Angabe hat durch meine Abfragen nicht funktioniert, ich mußte die Position durch eine POS-Abfrage ermitteln. Dann funktionierte es. Denn mal gab er Null aus und mal 1.

Trotzdem danke für eure Hilfe.