![]() |
AW: Herauslösen eines Strings im string
Zitat:
Nee, im Ernst: Passt scho' bei reinen DTO. Ich halte das auch -speziell bei Delphi- für Overkill, eine Klasse mit quasi Autoproperties anzulegen (die es in Delphi ja leider nicht gibt) und alles wozu diese Properties da sind, ist dann, ein privates Feld zu füllen oder zu liefern. Blödsinn. In C# ist das kein Problem, weil man einfach nur
Code:
schreibt. In Delphi muss man mal wieder nen halben Roman schreiben.
class Foo
string Bar{get;set;} .. |
AW: Herauslösen eines Strings im string
Und worin genau liegt der Zugewinn einer reinen Datenklasse zu einem statischen Array oder einem Record, außer dass man eine Klasse hat und damit "OOP programmiert"?
|
AW: Herauslösen eines Strings im string
Mit Hilfe eines OleVariant oder unter Ausnutzung der Funktionalitäten für TReader/TWriter (oder hast du im TTimer schonmal die Property Top und Left gefunden? ),
kann man auch sowas wie "virtuelle" Property schon seit Jahrzehnten in Delphi benutzen. Aber ich würde davon eher abraten, da, angefangen bei der Codevervollständigung und Codedokumentation, sowas nicht vorhanden und somit in der IDE und im Compiler (Fehlerprüfung) nicht nutzbar ist. Und wenn du keinen Getter/Setter scheiben willst, dann lass' ihn dir automatisch erstellen (für irgendwas muß duie Klassenvervollständigung ja gut sein) Bei
Delphi-Quellcode:
frag ich mich eher "Wo landet der Wert?".
string Bar{get;set;}
Delphi-Quellcode:
und am Ende ein Strg+Shift+C oder ein
property Bar: string;
Delphi-Quellcode:
geht doch auch. :angel:
propf[space]Bar[enter]string[enter]
|
AW: Herauslösen eines Strings im string
Zitat:
Delphi-Quellcode:
(die eckige Klammer ist ja der Seperator(?))
s := ListBox2.Items[ListBox2.ItemIndex];
s_1 := StrToken(s, '['); // ID abtrennen s_2 := StrToken(s, ']'); // Headline abtrennen Das sollte funktionieren. Wenn "[HEADLINE]" nicht enthalten ist, dann
Delphi-Quellcode:
und du kannst mit einem anderen Seperator weiter machen.
s=ListBox2.Items[ListBox2.ItemIndex];
Gruß K-H |
AW: Herauslösen eines Strings im string
Bin mir jetzt zwar nicht ganz sicher obs passt, liest sich aber so^^
Ein Bekannter hat mir vor einiger Zeit mal eine kleine Funktion geschrieben, die genau das tut was sie tut.
Delphi-Quellcode:
GIbt mir persönlich immer genau das zurück, was ich gerade suche
function getTextBetweenStrings(const source, startStr, endStr: String;
var offset: integer; includeSubstrings: Boolean = False): String; var startIndex, endIndex: integer; begin startIndex := PosEx(startStr, source, offset); offset := startIndex + 1; if (startIndex > 0) then begin startIndex := startIndex + Length(startStr); endIndex := PosEx(endStr, source, startIndex) + Length(endStr); if not includeSubstrings then endIndex := endIndex - Length(endStr) else startIndex := startIndex - Length(startStr); Result := MidStr(source, startIndex, endIndex - startIndex); end else Result := ''; end; Grüße Day |
AW: Herauslösen eines Strings im string
Hey schönen Montag euch allen,
Ich habe nun eine Lösung entwickelt, welche einen Mix aus euren Codevorschlägen darstellt. Mit unten stehendem Code kann ich
Code:
oder
99,10,Text1=Text2
Code:
komplett zerlegen:
99,Text1=Text2
Delphi-Quellcode:
So funktioniert es einwandfrei, obwohl da ne Menge Optimierungspotential drinsteckt :oops:
procedure TForm1.b_schneidenClick(Sender: TObject);
var s,s1,s2,s3,s4:string; zahl: double; ipos, xpos:integer; begin s := ListBox2.Items[ListBox2.ItemIndex];//markierte Zeile als Start-String s1 := StrToken(s, ','); // ID abtrennen s2 := StrToken(s, ','); // Headline abtrennen //Prüfen ob Headline überhaupt existiert if TryStrToFloat(s2, zahl) then begin //Headline ist vorhanden ! s3 := StrToken(s, ','); s4 := StrToken(s3, '='); end else begin //KEINE Headline vorhanden s2 := '99';//fake ID setzen s := ListBox2.Items[ListBox2.ItemIndex];//s neu setzen, weil leer.. //Dazwischen abschneiden iPos := Pos (',', s); if (iPos > 0) then begin Delete(s,1,ipos); //nochma schneiden xPos := Pos ('=', s); if (xPos > 0) then begin Delete(s,xpos,s.Length-1); e_qu.Text:=s; end; end; s := ListBox2.Items[ListBox2.ItemIndex];//s neu setzen, weil leer.. s4 := StrToken(s, '='); end; End; Ich danke euch ! |
AW: Herauslösen eines Strings im string
Zitat:
Delphi-Quellcode:
Nachteil: ExtractStrings kann keine leeren Einträge erzeugen - aber wenn die Daten alle in der Art sind wie deine Beispieldaten sollte das ausreichend funktionieren...
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringlist; begin sl := TStringLIst.Create; ExtractStrings([','],[' '], PChar(Edit1.Text), sl); Memo1.Text := sl.Text; sl.Free; end; |
AW: Herauslösen eines Strings im string
Zitat:
Gegenfrage: Wieso soll ich leere Getter/Setter deklarieren und überflüssige private Variablen einführen? weil man damit "OOP programmiert"? |
AW: Herauslösen eines Strings im string
Da fehlen noch 12 Factories mit 42 Interfaces, um eine Darstellungsform in eine andere umzuwandeln. Aber macht doch, was Ihr wollt, heute ist ja eh Pappnasenfeiertag :stupid:
|
AW: Herauslösen eines Strings im string
Zitat:
Und damit man sich die Möglichkeit offen hällt, da ml einen Getter/Setter granzumache. Und sei es nur um später das mal besser debuggen zu können. Und, wie gesagt, für den Programmierer ist es ja kein großer Mehraufwand. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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 by Thomas Breitkreuz