AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zahlen in Memo ermitteln und in Int umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Zahlen in Memo ermitteln und in Int umwandeln

Ein Thema von Merchator · begonnen am 31. Mai 2007 · letzter Beitrag vom 1. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Merchator

Registriert seit: 24. Feb 2007
16 Beiträge
 
Delphi 7 Personal
 
#1

Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 18:37
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!
<--- Achtung, Anfänger --->
Rechtschreibfehler sind vom Autor beabsichtigt und dienen der allgemeinen Belustigung!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 18:49
Zitat:
wie ich die Zahlen dann in Integer umwandeln kann
Das geht mit StrToInt()

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Merchator

Registriert seit: 24. Feb 2007
16 Beiträge
 
Delphi 7 Personal
 
#3

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 18:55
Ja, das ist mir klar
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
<--- Achtung, Anfänger --->
Rechtschreibfehler sind vom Autor beabsichtigt und dienen der allgemeinen Belustigung!
  Mit Zitat antworten Zitat
Benutzerbild von Testy
Testy

Registriert seit: 2. Mär 2007
56 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 18:57
Schau dir den Thread mal an Link
Dort steht, wie du auf "elegante" Weise bestimmte Formate aus einem Memo lesen kannst!

Gruß!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 18:58
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.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Merchator

Registriert seit: 24. Feb 2007
16 Beiträge
 
Delphi 7 Personal
 
#6

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 20:00
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
<--- Achtung, Anfänger --->
Rechtschreibfehler sind vom Autor beabsichtigt und dienen der allgemeinen Belustigung!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 20:13
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:
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;
Testen kannst du es so:

Delphi-Quellcode:
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;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Merchator

Registriert seit: 24. Feb 2007
16 Beiträge
 
Delphi 7 Personal
 
#8

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 21:00
Hey!
Vielen dank, es klappt soweit ganz gut!
Ich habe deinen Code jetzt mal ein wenig umgewandelt:

Delphi-Quellcode:
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;
Eine kleinigkeit ist da aber noch.
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
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!
<--- Achtung, Anfänger --->
Rechtschreibfehler sind vom Autor beabsichtigt und dienen der allgemeinen Belustigung!
  Mit Zitat antworten Zitat
Merchator

Registriert seit: 24. Feb 2007
16 Beiträge
 
Delphi 7 Personal
 
#9

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 31. Mai 2007, 21:12
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!
<--- Achtung, Anfänger --->
Rechtschreibfehler sind vom Autor beabsichtigt und dienen der allgemeinen Belustigung!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Zahlen in Memo ermitteln und in Int umwandeln

  Alt 1. Jun 2007, 07:11
Zitat von Merchator:
Hey!
Vielen dank, es klappt soweit ganz gut!
Ich habe deinen Code jetzt mal ein wenig umgewandelt:

Delphi-Quellcode:
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;
Eine kleinigkeit ist da aber noch.
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! ;)
Die Zeilen verdoppeln sich nicht plötzlich, sie haben sich auf beim ersten Aufruf verdoppelt.

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:

  Memo1.lines.Strings[i]:='Straße '+ IntToStr(XWert+1)+' ' + IntToStr(YWert); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz