![]() |
Problem beim String bearbeiten/ändern
Hallo,
folgendes Szenario: Ich habe ein synEdit (txtCode), in dem PHP-Quelltext drin steht. Gelegentlich kommt es vor, dass dort Sachen, wie zum Beispiel
Code:
Nun möchte ich, das wenn ich mit dem Cursor (Textcursor des SynEdits) in eine Zeile mit o.g. Zeileninhalt springe, er mir die
<?=_RENDER_('ProjectType','ProjectName','ProjectParam','ProjectValue','ProjectHTML')?>
Werte ("Project...") ausliesst und in einen TValueListEditor á la Objektinspektor anzeigt. Das macht er auch einwandfrei. Nun möchte ich jedoch, dass wenn ich diese Werte im TValueListEditor (hier heisst er "propTool") eingebe, er die automatisch in die zeile des SynEdits übernimmt. Hier der Quellcode, der fürs Einlesen zuständig ist:
Delphi-Quellcode:
procedure TfrmMain.txtCodeKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); var curPos: Integer; begin propTool.Strings.Clear; TA := Pars.Parse(txtCode.Lines[txtCode.CaretY - 1], False); Pars.GetTokenValueFirst(T_IDENT,curPos,'_RENDER_'); if curPos<>-1 then begin Pars.GetTokenValueNext(curPos); Pars.GetTokenValueNext(curPos); propTool.InsertRow('Type',Pars.GetTokenValueNext(curPos),True); Pars.GetTokenValueNext(curPos); propTool.InsertRow('Name',Pars.GetTokenValueNext(curPos),True); Pars.GetTokenValueNext(curPos); propTool.InsertRow('Params',Pars.GetTokenValueNext(curPos),True); Pars.GetTokenValueNext(curPos); propTool.InsertRow('Value',Pars.GetTokenValueNext(curPos),True); Pars.GetTokenValueNext(curPos); propTool.InsertRow('HTML',Pars.GetTokenValueNext(curPos),True); end; end; Hier der Quellcode, der fürs übernehmen der Eingaben zusändig sein soll, aber nicht funktioniert;
Delphi-Quellcode:
Vielleicht habt Ihr ja eine Idee. Vielleicht kann man das Ganze auch vereinfachen.
procedure TfrmMain.propToolKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); var NewCode, NewLine: String; NewType, NewName, NewParams, NewValue, NewHTML: String; RowID, CodePos: Integer; begin try propTool.FindRow('Type',RowID); NewType:=propTool.Cells[1,RowID]; propTool.FindRow('Name',RowID); NewName:=propTool.Cells[1,RowID]; propTool.FindRow('Params',RowID); NewParams:=propTool.Cells[1,RowID]; propTool.FindRow('Value',RowID); NewValue:=propTool.Cells[1,RowID]; propTool.FindRow('HTML',RowID); NewHTML:=propTool.Cells[1,RowID]; NewCode:='_RENDER_('''+NewType+''','''+NewName+''','''+NewParams+''','''+NewValue+''','''+NewHTML+''');'; CodePos := txtCode.CaretY; txtCode.CaretX := 0; txtCode.SelStart := txtCode.CaretX; txtCode.SelEnd := Length(txtCode.Lines[txtCode.CaretY]); NewLine:=txtCode.Lines[txtCode.CaretY]; NewLine:=Copy(NewLine,1,CodePos - 1); NewLine:=NewLine+NewCode; txtCode.Lines[txtCode.CaretY]:='<?='+NewCode+'?>';//NewLine; txtCode.Lines[txtCode.SelEnd] := '<?='+NewCode+'?>'; txtCode.Invalidate; except end; Ich hoffe jedenfalls, das mir hier irgendjemand dabei helfen kann, denn ich komm echt nicht weiter. Liebe Grüße! |
Re: Problem beim String bearbeiten/ändern
*push*
Keiner 'ne Idee??? |
Re: Problem beim String bearbeiten/ändern
Wäre interessant zu wissen, was genau nicht geht. ;)
|
Re: Problem beim String bearbeiten/ändern
Zitat:
|
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
|
Re: Problem beim String bearbeiten/ändern
Wirklich keiner 'ne Idee?
Vielleicht hat ja sowas in der Art schon mal jemand in seinen HTML Editor/Notepad-Ersatz oder was auch immer eingebaut, und würde mir evtl. Code zur Verfügung stellen? Es muss ja nicht zwingend meine Prozedur sein. Hauptsache, es passiert das, was ich (wie oben beschrieben) möchte. Wäre für Hilfe sehr dankbar! |
Re: Problem beim String bearbeiten/ändern
Hi,
frag mal den mirage228, der hat sowas, meine ich, in seinem Alpha Code Studio drin. ;) |
Re: Problem beim String bearbeiten/ändern
Hey,
Ich ersetze innerhalb des Ausdrucks (also bei dir zwischen <? und ?>) die entsprechende Eigenschaft durch die neue. Ich mache das zwar mittels RegEx, aber wenn Du ein Replace('ProjectType_Alt', 'ProjectType_Neu') (oder ggf. auch alle Eigenschaften) durchführst, sollts gehen. mfG mirage228 |
Re: Problem beim String bearbeiten/ändern
Zitat:
|
Re: Problem beim String bearbeiten/ändern
An welcher Stelle genau kommst Du denn nicht weiter?
Anfangs- und Endposition der Ausdrucks (also <? und ?>) hast Du ja und dann weißt du ja den alten Wert und den neuen Wert (bzw. die Werte) und kannst Dann einfach mittels ![]() mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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