![]() |
Zahlen in Memo ermitteln und in Int umwandeln
Hi!
Ich bins mal wieder^^ Ich hatte mal wieder Lust, ein Tool zu scripten, doch an einer Stelle stocke ich... So als Beispiel, im Memo steht: .........(x) (y) Straße 50 50 (ja, klingt merkwürdig, ist jetzt auch nur ein Beispiel ;)) Dann hab ich da die Buttons: X+1 X-1 Y+1 Y-1 Nun möchte ich die Zahlen per Click auf einen der Buttons ändern Beispiel: Ich drück X+1, dann steht da Straße 51 50 dann drück ich Y-1 Dann steht da 51 49 Und ich hab keine Ahnung, wie ich die Zahlen im Memo "ermitteln" kann! (Ich hatte da schon ne Methode, doch die klappt einfach nicht und ist, sag ich mal, "dämlich und anfängerhaft", ihr müsst garnet erst nach fragen^^) Ich hab mal gelesen, dass geht irgendwie mit Pos, Sel, Copy, aber ich habe keine Ahnung, wie ich die Zahlen dann in Integer umwandeln kann. Ich hoffe, ihr versteht, was ich meine...ich hab keine Ahnung, wie ich's erklären soll, falls ihr es net versteht: Einfach nochmal fragen, ich versuch es sonst, besser zu erklären! |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Zitat:
Grüße Klaus |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Ja, das ist mir klar :D
Vllt hab ich mich doof ausgedrückt: Mir geht es ums Ermitteln der Zahlen im Memo, und sie DANN mit StrToInt in Integer umzuwandeln. Also meine Hauptfrage ist eher: Wie kann ich Zahlen im Memo ermitteln (imer nur die letzte Zeile) Da steht zum Beispiel: Straße 50 50 Straße 50 51 Straße 50 52 Straße 51 52 Nun möchte ich, dass die Zahlen 51, 52 aus der letzten Zeile in INT umgewandelt werden. Wie mache ich das? mfG, Merchator |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Schau dir den Thread mal an
![]() Dort steht, wie du auf "elegante" Weise bestimmte Formate aus einem Memo lesen kannst! Gruß! |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Die letzte Zeile bekommst du mit Memo1.Lines[Memo1.Lines.Count-1]
mit Pos und PosEx kommst du an die Position der beiden Leerzeichen mit Copy kannst du dann teile des Strings kopieren. |
Re: Zahlen in Memo ermitteln und in Int umwandeln
hi!
Danke für die Antworten! Leider hab ich mit den Begrifen Pos und Copy noch nie gearbeitet. Aus der Hilfe werd ich auch net schlau O.o Hat jemand nen Link wo es steht, wies geht, oder kanns eben in 1-2 Sätzen erklären? Nehmt Rücksicht auf einen Anfänger :wiejetzt: |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Herzlich willkommen in der Delphi-PRAXiS, Merchator.
Mit diesem Trick kommst du an die beiden Zahlen in einem String - egal ob es sich dabei um eine Zeile aus einem Memo oder ein Item aus einer ListBox handelt:
Delphi-Quellcode:
Testen kannst du es so:
procedure ExtractLastWords(const line: string; s: TStrings; n: Word);
begin s.BeginUpdate; s.Clear; s.CommaText := line; while s.Count > n do s.Delete(0); s.EndUpdate; end;
Delphi-Quellcode:
Freundliche Grüße vom marabu
procedure TDemoForm.ButtonClick(Sender: TObject);
var i: Integer; s: TStrings; begin s := TStringList.Create; with Memo do for i := 0 to Pred(Lines.Count) do begin ExtractLastWords(Lines[i], s, 2); ShowMessage(Format('x = %d, y = %d', [StrToInt(s[0]), StrToInt(s[1])])); end; s.Free; end; |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Hey!
Vielen dank, es klappt soweit ganz gut! Ich habe deinen Code jetzt mal ein wenig umgewandelt:
Delphi-Quellcode:
Eine kleinigkeit ist da aber noch.
var
s: TStrings; begin s := TStringList.Create; with memo1 do for i := 0 to Memo1.Lines.Count-1 do //<-Da gibt es ein Problem! begin ExtractLastWords(Lines[i], s, 2); XWert:=StrToInt(s[0]); YWert:=StrToInt(s[1]); memo1.lines.add('Straße '+ IntToStr(XWert+1)+' ' + IntToStr(YWert)); end; s.Free; end; Zum Beispiel steht da Straße 100 100 Drück ich jetzt nen Knopf, das Y+1 gerechnet werden soll, steht das da erst ganz normal: Straße 100 100 Straße 100 101 Drück ich den jetzt aber nochmal, verdoppeln sich die Zeilen plötzlich :roll: Etwa so: Straße 100 100 Straße 100 101 Straße 100 101 Straße 100 102 ICh glaube, ich weis worans liegt (s. Soruce) Aber wie behebe ich das jetzt? Danke im vorraus! ;) |
Re: Zahlen in Memo ermitteln und in Int umwandeln
HAlt, Problem hat sich gelöst
Hab einfach folgendes genommen^^ for i := memo1.Lines.Count-1 to Memo1.Lines.Count-1 do JEdenfalls Danke für die Hilfe hier! |
Re: Zahlen in Memo ermitteln und in Int umwandeln
Zitat:
Das liegt daran, daß Du mit " memo1.lines.add('Straße '+ IntToStr(XWert+1)+' ' + IntToStr(YWert));" eine neue Zeile an das Memo anhängst und nicht die bestehende Zeile ersetzt. Das würde dann so gehen:
Delphi-Quellcode:
Grüße
Memo1.lines.Strings[i]:='Straße '+ IntToStr(XWert+1)+' ' + IntToStr(YWert);
Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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