Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi störendes '=' vor String nach Update von TStringList (https://www.delphipraxis.net/81839-stoerendes-%3D-vor-string-nach-update-von-tstringlist.html)

bensh 4. Dez 2006 18:39


störendes '=' vor String nach Update von TStringList
 
Moin.
Ich habe ein Problem beim Updaten eines Items einer TStringList, das ich mir nicht erklären kann!!!

Ich spreche eine Funktion zum Updaten eines Eintrags an, führt die MessageBox auch den korrekten Wert auf.
Nun ist es aber komischerweise so, dass nach dem Beenden dieser Funktion der Eintrag Value[i] mit einem sch...ß Gleichheitszeichen anfängt. Ich habe nirgenswo geschrieben, das das da rein soll!! ich häng hier schon seit 2 Stunden am Debuggen!!!

Eintrag soll sein: 'EintragderListe'
Eintrag ist: '=EintragderListe'

Befreit mich bitte!!!!! Danke!

Delphi-Quellcode:
var
  Values : TStringList;

...

// stinknormales zuweisen
procedure TForm1.EditItem(i : Integer; item1 : String; item2 : String);
begin
  Values.ValueFromIndex[i] := item1+' '+item2;
  ShowMessage(Values.ValueFromIndex[i]); //<--- gibt korrekten wert!!! 
end;

// Values in eine Datei schrieben
procedure TForm1.WriteToFile();
var
  handle : textFile;
  i : Integer;
begin
                                //  <--- Hier ist Values[i] schon scheisse!
  try
    if Values.Count > 0 then
      Values.SaveToFile(hostfile)
    else
    begin
    // workaround für den letzten gelöschten eintrag
    // leere Datei. Es hat sonst vorher immer geknallt!
    assignFile(handle,hostfile);
    ReWrite(handle);
    Write(handle, '');
    CloseFile(handle);
    end;
  except
    showMessage('Fíle kann nicht beschrieben werden');

  end;
end;

marabu 4. Dez 2006 18:46

Re: störendes '=' vor String nach Update von TStringList
 
Hi,

wenn du die Stringliste nicht zum Speichern von name/value-pairs benutzen willst, dann sind die properties Names[], Values[] und ValueFromIndex[] tabu für dich:

Delphi-Quellcode:
// stinknormales zuweisen
procedure TForm1.EditItem(i : Integer; item1 : String; item2 : String);
begin
  Values[i] := item1 + ' ' + item2;
end;
Oder hast du eine gute Erklärung für dein Vorgehen?

Grüße vom marabu

bensh 4. Dez 2006 19:43

Re: störendes '=' vor String nach Update von TStringList
 
Ah! Gut zu wissen dass man die TStringList auch als eine Art Dictionay nutzen kann.
Ich habe schon vergebens nach einer Lösung hierfür gesucht... Danke dafür!

Wie nutzt ich denn die Schlüssel->Wert Geschichte?!

harald44 4. Dez 2006 19:55

Re: störendes '=' vor String nach Update von TStringList
 
Hi bensh

Zeig mal den Code, wo die Methode "TForm1.EditItem" aufgerufen wird.
Ansonsten bin ich der gleichen Meinug wie "marabu".

bensh 4. Dez 2006 20:57

Re: störendes '=' vor String nach Update von TStringList
 
hi harald.

code:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
 action : Integer;
 selected: Integer;
 item: String;
 A : TStringList;
begin

  try
    A := TStringList.Create;
    selected := ListBox1.ItemIndex;
    if selected < 0 then ShowMessage('Kein Eintrag ausgwählt!')
    else
    begin
      action := MessageDlg('"'+item+'" ändern?', mtWarning , mbOKCancel, 0);
      if action = mrOK then
      begin
        item := Values[selected];
        Split(' ', item, A);
        Edit3.Text := a[0];
        Edit4.Text := a[1];
        ShowEditComponents();
      end;
    end;
  finally
    A.Free;
  end;
end;
Wie du siehts würde ich die name/value kombi brauchen

Cheers

---
Edit:
ich habe das jetzt zu fuss gelöst. Nicht schön aber es funkt. Über alle Elemente iterieren und stringCompare()


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 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