AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

StringList - merkwürdiges Verhalten

Ein Thema von harfes · begonnen am 25. Okt 2011 · letzter Beitrag vom 25. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2   
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
120 Beiträge
 
Delphi 11 Alexandria
 
#1

StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 07:49
Delphi-Version: XE
Hallo,

ich habe bisher unter D2007 folgenden Code problemlos eingesetzt:

Delphi-Quellcode:
procedure DatumInMemo(datum:String);
var
sl : TStringList;
begin
.....(hier wird kdname und tourtxt ermittelt)...
for i := 0 to sl.Count - 1 do
begin
    sldatum:=copy(sl.ValueFromIndex[i],3,10);
    if (sldatum=datum) then
    begin
        Memo1.Lines.Add(kdname+': '+tourtxt);
    end;
end;
end;
In der StringList sind definitiv 1202 Zeilen in folgender Form:

FR 06.02.2009 14:00 - 06.02.2009 15:45
FR 06.11.2009 14:00 - 06.11.2009 15:45
FR 13.11.2009 14:00 - 13.11.2009 15:45

Wie oben ersichtlich, möchte ich nun das erste Datum der jeweiligen Zeile in der
StringList (deshalb der copy-Befehl) mit einem vorgegebenem Datum vergleiche, wenn
das dann gleich ist, werden bestimmt Variablen in ein Memofeld geschrieben.
So weit so gut - unter D2007 läuft das völig problemlos! Wenn ich die selbe Routine
unter Delphi XE (NICHT XE2!) kompiliere, dann gibt es zwar keine Fehlermeldung...ABER
auch keine Einträge in dem Memofeld mehr. Wenn ich mir mit einem showmessage die
Variable sldatum anschaue, kommt da nix mehr an...

Hat da jemand eine Idee????

Hartmut
Hartmut

Geändert von mkinzler (25. Okt 2011 um 08:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 07:57
Copy(sl[i],4,10) meinst Du nicht ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
120 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:17
Nochmal: die procedure funktioniert problemlos mit D2007 - also ist es egal,
ob
copy(sl.ValueFromIndex[i],3,10);
oder
copy(sl[i],4,10);
Es ist zwar kürzer, macht aber trotzdem keinen Unterschied - allerdings fängt der
String mit Index 0 an, so dass für copy Index 4 das erste Zeichen des Datums nicht
mitkopiert wird...

Die Frage ist doch, was hat sich an der copy-Funktion geändert von D2007 nach
DelphiXE?

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.314 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:21
Hast Du denn einmal die beiden Werte im Debugger verglichen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.358 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:40
Du enthältst uns etwas über die Struktur der Zeilen vor. ValueFromIndex holt nämlich den hinter einem NameValueSeparator (z.B. Gleichheitszeichen) stehenden Wert eines Strings in einer Stringliste. Kann also nur funktionieren wenn der Aufbau in etwa so wäre:

Code:
Tour1=FR 06.02.2009 14:00 - 06.02.2009 15:45
Tour2=FR 06.11.2009 14:00 - 06.11.2009 15:45
Tour3=FR 13.11.2009 14:00 - 13.11.2009 15:45
Ist nämlich KEIN NameValueSeparator enthalten, gibt ValueFromIndex immer einen Leerstring zurück. Diese Funktionen werden eigentlich für Wertepaare eingesetzt (wie INI).

P.S.: Programmierer die nicht debuggen kommen in die Hölle (Steve McConnel).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
439 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:44
Ersetzt mal den Bindestrich mit einem Gleichheitszeichen ...
ValueFromIndex findet nichts!
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.963 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:44
Zitat:
Es ist zwar kürzer, macht aber trotzdem keinen Unterschied - allerdings fängt der
String mit Index 0 an,
Es macht einen großen Unterschied, wie Union eben schon sagte.
SL[i] entspricht SL.Strings[i], was aber garantiert nicht SL.ValueFromIndex[i] entspricht.

Und die Chars in den Delphi-Strings beginnen immer bei Index 1, nicht bei 0.

Ersetzt mal den Bindestrich mit einem Gleichheitszeichen ...
ValueFromIndex findet nichts!
Oder NameValueSeparator anpassen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 08:57
Wenn der String kein Key/Value Trenner hat, wird bei D2007 scheinbar sogar das erste Zeichen durch ValueFromIndex abgeschnitten.

Würde auch das "funktionierende" Copy mit falsch gesetztem StartIndex in D2007 erklären.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.358 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 09:04
Ja, früher wurde (simpel, fehlerhaft, krank und unperformant) einfach der Namenswert des Index genommeen, und ab der Länge+2 kopiert. Jetzt wird wirklich die Position des Trenners verwendet.

Immerhin hat der TE dadruch jetzt festgestellt, dass er jahrelang eine umständlich und nicht für den Zweck vorgesehene Funktion verwendete
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: StringList - merkwürdiges Verhalten

  Alt 25. Okt 2011, 09:24
Ja, früher wurde (simpel, fehlerhaft, krank und unperformant) einfach der Namenswert des Index genommeen, und ab der Länge+2 kopiert. Jetzt wird wirklich die Position des Trenners verwendet.
Du willst mich veräppeln?!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf