Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datum mit Datum austauschen (https://www.delphipraxis.net/112055-datum-mit-datum-austauschen.html)

hoika 15. Apr 2008 13:07

Re: Datum mit Datum austauschen
 
Hallo,

sl: TStringList;

Delphi-Quellcode:
sl.Delimiter:= ' ';
sl.DelimitedText:= 'Das ist ein Text';
-> in sl.Items hast du jetzt 4 Strings


Heiko

mkinzler 15. Apr 2008 13:09

Re: Datum mit Datum austauschen
 
Eher
Delphi-Quellcode:
sl: TStrings;

sl := TStringList.Create;
sl.Delimiter:= ' ';
sl.DelimitedText:= 'Das ist ein Text';

hoika 15. Apr 2008 13:11

Re: Datum mit Datum austauschen
 
Ha,

auch ein Fehler DelimiteText -> DelimitedText ;)


Heiko

mkinzler 15. Apr 2008 13:12

Re: Datum mit Datum austauschen
 
Sch... Tippfehler

BTW. .StrictDelimiter := False sollte reichen

aaron 15. Apr 2008 22:57

Re: Datum mit Datum austauschen
 
Hallo und danke für eure Antworten.
Jetzt muss ich das nur noch zusammen bekommen.
freundliche Grüße
Aaron

aaron 17. Apr 2008 00:28

Re: Datum mit Datum austauschen
 
Hallo
ich habs mit euren Beispielen nicht hinbekommen, habe ein Beispiel gefunden mit dem ich schonmal aus einem String Zahlen extrahieren kann:

Delphi-Quellcode:
type
  TCharSet = set of Char;

function StripNonConforming(const S: string;
  const ValidChars: TCharSet): string;
var
  DestI: Integer;
  SourceI: Integer;
begin
  SetLength(Result, Length(S));
  DestI := 0;
  for SourceI := 1 to Length(S) do
    if S[SourceI] in ValidChars then
    begin
      Inc(DestI);
      Result[DestI] := S[SourceI]
    end;
  SetLength(Result, DestI)
end;

function StripNonNumeric(const S: string): string;
begin
  Result := StripNonConforming(S, ['0'..'9'])
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
showmessage(StripNonConforming('TEST TEST 12.11.2008 Test Test',['0'..'9']));
end;
Nun müßte ich nur noch wissen wie ich daraus wieder ein Datum machen kann.



Freundliche Grüße
Aaron

aaron 17. Apr 2008 02:23

Re: Datum mit Datum austauschen
 
Hallo,
ich habe es nun so gemacht, leider funktioniert das nicht sobald auch nur ein Punkt im String steht.
Wenn nur ein Datum drinnen steht funktioniert es.

Delphi-Quellcode:
sl := TStringList.Create;
sl.DelimitedText:= StringGrid1.Cells[1, StringGrid1.Row];
sl.DelimitedText := StripNonConforming(sl.DelimitedText, ['0'..'9','.']);
if StrToDate(sl.DelimitedText) = Date then begin
StringGrid1.Cells[1, StringGrid1.Row] := StringReplace(StringGrid1.Cells[1, StringGrid1.Row],sl.DelimitedText,StringGrid1.Cells[2, StringGrid1.Row],[rfReplaceAll, rfIgnoreCase]);
Was mache ich falsch oder bin ich auf einem komplett falschen Weg?

Freundliche grüße
Aaron

aaron 17. Apr 2008 11:27

Re: Datum mit Datum austauschen
 
Hallo,
sorry, ich weiß es ist unhöflich nach so kurzer Zeit zu pushen, leider brauche ich ganz, ganz superdringend eine Antwort bzw. Hilfe.

Habe auch hiermit rumprobiert, leider ohne Ergolg:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var d,d1: String;
    S: TDateTime;
begin
d:=(StripNonConforming('TEST TEST 12.11.2055 Test.',['0'..'9']));
d1:=Copy(d,1,2)+'.'+Copy(d,3,2)+'.'+Copy(d,5,2);
s:=StrToDate(d1);
ShowMessage(FormatDateTime('ddmmyyyy',s));
end;
Zitat:

Zitat von hoika
Hallo,

der Text sollte intern ohne das Datum (nur als Platzhalter)
gespeichert sein. Das Datum wird extra gespeichert.
Beim Füllen des StringGrids wird dann der Text zusammengebaut.

Das geht leider auch nicht weil das Datum mitten im Text stehen kann (an keiner festen Stelle)

Freundliche Grüße
Aaron

aaron 18. Apr 2008 13:48

Re: Datum mit Datum austauschen
 
Hilfe !!!
:-)

tomsel 18. Apr 2008 14:24

Re: Datum mit Datum austauschen
 
Ich hätte da mal einen ganz anderen vorschlag. Im Kern benötigst du ja nur die Position eines in einem String vorkommenden Datums, damit kannst du dann das alte Datum entfernen und ein neues einfügen.

Ersetze in einer Kopie deiner Zeichenkette alle numerischen Zeichen durch ein einheitliches Zeichen, z.Bsp. "0". Dann kommt an der Stelle, wo vorher das Datum stand etwas heraus wie: "00.00.0000".

Danach kannst du dann ganz einfach suchen mit
Delphi-Quellcode:
iPos := Pos('00.00.0000', sKopieVonMeinString);
Durch
Delphi-Quellcode:
System.Delete(sMeinString, iPos, 10)
löschst du das alte Datum und mit
Delphi-Quellcode:
System.Insert(sDasDatum, sMeinString, iPos)
fügst du das neue Datum an der gleichen Stelle ein.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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 by Thomas Breitkreuz