AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign TStringList.Delimiter := Edit_1.text....TCaption vs. Char
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList.Delimiter := Edit_1.text....TCaption vs. Char

Ein Thema von juergen · begonnen am 2. Feb 2013 · letzter Beitrag vom 4. Feb 2013
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 17:42
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:
ala: Inkompatible Typen: 'Char' und 'PAnsiChar'...
Delphi-Quellcode:
procedur....
var
  sl: TStringList;
  i, j: Integer;
begin
  sl := TStringList.Create;
  try
    sl.Delimiter := PAnsiChar(Main_Form.edt_Delimiter.Text); <= ????
  ...
end;
Kann mir hier jemand weiter helfen und vllt. auch kurz erklären?
Vielen Dank schon mal vorab.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 17:52
Hallo

du brauchst doch sowas:
sl.Delimiter := Main_Form.edt_Delimiter.Text[1]; du mußt aber noch prüfen, das das edit mind 1 Zeichen enthält.

Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.468 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 17:54
Du hast zwei Moeglichkeiten:

 sl.Delimiter := PAnsiChar(Main_Form.edt_Delimiter.Text)^; oder (einfacher):

 sl.Delimiter := Main_Form.edt_Delimiter.Text[1]; Allerdings solltest Du allererstes pruefen, ob Text nicht leer ist, sonst kommt dabei Muell raus.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 18:03
Ich war so auf die Fehlermeldung fixiert...
Klar, das war's.
Ich danke Euch und noch ein schönes Wochenende!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 18:09
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);
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 2. Feb 2013, 18:11
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
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TStringList.Delimiter := Edit_1.text....TCaption vs. Char

  Alt 4. Feb 2013, 18:37
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!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:51 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