Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   String an bestimmtem Zeichen Splitten (https://www.delphipraxis.net/119073-string-bestimmtem-zeichen-splitten.html)

FAlter 20. Aug 2008 17:21

Re: String an bestimmtem Zeichen Splitten
 
Hi,

nein, ein Char (von Character) wird wie ein String mit genau einem Zeichen geschrieben. Der Compiler bestimmt aus dem Kontext, ob es ein String oder ein Char ist. Also 'h' und nicht nur h.

(Es gibt aber auch Sprachen, bei denen unterschieden wird, da ist dann z. B. "h" ein String und 'h' ein Char, aber bei pascalartigen Sptrachen ist es in beiden Fällen 'h'.)

Für eine neue Zeile reicht #13 aus, obwohl unter Windows eigentlich #13#10 korrekt ist.

Delphi-Quellcode:
'Zeile1'#13'Zeile2'
Mfg
FAlter

cRayZo 20. Aug 2008 17:32

Re: String an bestimmtem Zeichen Splitten
 
vielen Dank, ihr seid klasse^^

eine Frage noch..

ich habe ein normales Label und möchte es mit einem String füllen.. geht nicht also nicht mit der Funktion von oben
Delphi-Quellcode:
  RandomZeile: integer;
  Loesung:      string;
{Vorgabe}
SplitStr(const S: string; Delim: Char; out S1, S2: string)
{von mir ausgefüllt}
Splitstr(Richedit1.Lines[RandomZeile],'=',label1.Caption ,Loesung)
..

DeddyH 20. Aug 2008 17:35

Re: String an bestimmtem Zeichen Splitten
 
Nimm noch eine lokale Stringvariable, übergib diese an die Funktion und weise sie anschließend dem Label zu.

cRayZo 20. Aug 2008 17:37

Re: String an bestimmtem Zeichen Splitten
 
k dachte es geht auch so..

LuCSteR 20. Aug 2008 17:37

Re: String an bestimmtem Zeichen Splitten
 
An deiner Stelle würde ich mir trotzdem das Tutorial mal anschauen. Dann kannst du mit Strings alles machen was du willst, wenn du alles durchgegangen bist. Bei dem Lösungscodepost z.b. weist du wieder nicht was ein Delimiter ist oder was die einzelnen Paramter bedeuten. klar man kanns bei dem einfachen bsp deuten aber bei anderen fuktionen ist es schon schwieriger zu wissen, wofür ein einzelner paramter steht...

Naja hauptsache du hast jetzt deine Lösung und sie auch verstanden ;)

FAlter 20. Aug 2008 17:42

Re: String an bestimmtem Zeichen Splitten
 
Hi,

Zitat:

Zitat von cRayZo
Delphi-Quellcode:
  RandomZeile: integer;
  Loesung:      string;
{Vorgabe}
SplitStr(const S: string; Delim: Char; out S1, S2: string)
{von mir ausgefüllt}
Splitstr(Richedit1.Lines[RandomZeile],'=',label1.Caption ,Loesung)
..

Delphi-Quellcode:
var
  RandomZeile: integer;
  Loesungm Key: string;

Key := RichEdit1.Lines.Names[RandomZeile];
Label1.Caption := Key;
Loesung := RichEdit1.Lines.Values[Key];
Da es gerade in nem anderen Thread darum geht... Ist bei Delphi und Lazarus (bzw. VCL und LCL) gleich.

Mfg
FAlter

cRayZo 20. Aug 2008 17:55

Re: String an bestimmtem Zeichen Splitten
 
Ja habe ich..^^
nur die Funktion klappt trotzdem nicht

und da wären wir wieder bei deinem Punkt, denn wenn ich sie selber gemacht hätte, wüsste ich woran es liegt:


edit:
vergesst es..^^
muss mich korrigieren... ich hatte einen schleifenfehler davor, die zeilen oben hat er einfach übersprungen, der code stimmt... SRY^^

DP-Maintenance 21. Aug 2008 18:08

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage

Alter Mann 21. Aug 2008 18:30

Re: String an bestimmtem Zeichen Splitten
 
Hi,

auch wenn es nicht an den bisherigen Code anschließt, darf es so etwas sein?
Delphi-Quellcode:
function StringSplit(input : String; SeperatorChar : Char) : TStringList;
var
  SL : TStringList;
  S1, S2 : String;
begin
  SL := TStringList.Create;
  s1 := input;
  while POS(SeperatorChar, S1) <> 0 do
  begin
    S2 := Copy(S1, 1, POS(SeperatorChar, S1) -1);
    SL.Add(S2);
    S1 := Copy(S1, POS(SeperatorChar, S1) +1, Length(S1));
  end;
  SL.Add(S1);
  Result := SL;
end;
Gruß

[Edit]
Ich glaub das war kontraproduktiv :oops:
[/Edit]

FAlter 21. Aug 2008 18:35

Re: String an bestimmtem Zeichen Splitten
 
Zitat:

Zitat von Alter Mann
Delphi-Quellcode:
function StringSplit(input : String; SeperatorChar : Char) : TStringList;
var
  SL : TStringList;
  S1, S2 : String;
begin
  SL := TStringList.Create;
  s1 := input;
  while POS(SeperatorChar, S1) <> 0 do
  begin
    S2 := Copy(S1, 1, POS(SeperatorChar, S1) -1);
    SL.Add(S2);
    S1 := Copy(S1, POS(SeperatorChar, S1) +1, Length(S1));
  end;
  SL.Add(S1);
  Result := SL;
end;

Hi,

und was machst du bei einer Exception?

Delphi-Quellcode:
function ReturnsAnObject: TObject;

begin
  Result := TObject.Create;
  try
    ...
  except
    Result.Free; // <-- WICHTIG!
    raise;
  end;
end;
In deinem Fall wird dann die SL nicht freigegeben (aber natürlich auch nicht zurückgegeben).

Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.
Seite 2 von 3     12 3      

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