![]() |
TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Hallo zusammen,
ich hänge an einem wahrscheinlich simplen Problem. Da mir aber die Zusammenhänge in diesem Bereich nicht klar sind, komme ich hier nicht weiter. Ich möchte einer TStringList den Delimiter über ein Edit "übergeben". Anscheinend wird hierfür ein Char-Typ erwartet. Ich hatte nun angenommen, dass das mit PAnisChar möglich wäre... Dabei erscheint aber Fehler Zitat:
Delphi-Quellcode:
Kann mir hier jemand weiter helfen und vllt. auch kurz erklären?
procedur....
var sl: TStringList; i, j: Integer; begin sl := TStringList.Create; try sl.Delimiter := PAnsiChar(Main_Form.edt_Delimiter.Text); <= ???? ... end; Vielen Dank schon mal vorab. |
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Hallo
du brauchst doch sowas:
Delphi-Quellcode:
du mußt aber noch prüfen, das das edit mind 1 Zeichen enthält.
sl.Delimiter := Main_Form.edt_Delimiter.Text[1];
Gruß Frank |
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Du hast zwei Moeglichkeiten:
Delphi-Quellcode:
oder (einfacher):
sl.Delimiter := PAnsiChar(Main_Form.edt_Delimiter.Text)^;
Delphi-Quellcode:
Allerdings solltest Du allererstes pruefen, ob Text nicht leer ist, sonst kommt dabei Muell raus.
sl.Delimiter := Main_Form.edt_Delimiter.Text[1];
|
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
:wall: Ich war so auf die Fehlermeldung fixiert...
Klar, das war's. Ich danke Euch und noch ein schönes Wochenende! :dp: |
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Also ich würde gleich Nägel mit Köpfen machen und ein eigene Funktion/Methode vorsehen:
Delphi-Quellcode:
// liefert das Delimterzeichen zurück
// zusätzlich darf man auch ein #-Zeichen gefolgt von einer Zahl angeben // Beispiel: '#8' ==> Tabulatorzeichen // '#$FF' ==> ASCII-Zeichen 255 function StringToDelimiter(s:string):char; const DEFAULT_DELIM =';'; var i : Integer; begin if s = '' then s := DEFAULT_DELIM else if s[1] := '#' then begin i := StrToIntDef(Copy(s, 2, 5), ord('#')); s := Chr(i); end; result := s[1]; end; sl.Delimiter := StringToDelimiter(Main_Form.edt_Delimiter.Text); |
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Eigentlich wurde alles schon gesagt, aber vielleicht noch das Wesentliche: Edit1.Text enthält einen String, sl.Delimiter möchte einen Char. Du kannst einem Char nicht ein String zuweisen. Umgekehrt geht es, aber nicht so. String ist eine Zeichenkette, Char nur ein Zeichen.
Eine Möglichkeit ist so wie oben, wobei ich es so nicht machen würde, denn wenn Edit1.Text leer ist und du über Edit1.Text[1] liest, dann kracht es. Besser ist so:
Delphi-Quellcode:
if Length(Edit1.Text) > 0 then
sl.Delimiter := Edit1.Text[1] else ... was auch immer |
AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Hmm, ich sehe gerade, dass mein letzter Post vom Samstag hier fehlt.
Dabei war ich mir sicher den abgesendet zu haben. @Popov Genauso hatte ich es auch gemacht. Danke für den Hinweis. @sx2008, Bist du Hellseher? Genau das hattee ich benötigt und war am Samstag schon dran, als ich deinen Post sah. Vielen Dank! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz