AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit aktuellen Parameter

Ein Thema von punker-lili · begonnen am 26. Mai 2007 · letzter Beitrag vom 27. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
punker-lili

Registriert seit: 22. Apr 2007
91 Beiträge
 
#1

Problem mit aktuellen Parameter

  Alt 26. Mai 2007, 10:15
Hiho!

Ich habe eine Prozedur, welche mir den inhalt eines Stringrids öffnet,welches ich zuvor gespeichert habe. Leider speichert er das alles als Stringlist ab, und öffnet es auch wieder als diese. Aber ich brauche Integerwerte, da die Tabelle die Punkte für ein Koordinatensystem erhält, welche ich benutze zum zeichnen.
Also meine Frage... wie kann ich meine Strings in integerwerte umwandeln?! Mit StrToInt habe ich es schon versucht,aber da meckert er rum, dass ich keine aktuellen Parameter hab.

Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
  F: TStringList;
  i: Integer;
begin
  opendialog1.execute;
  F := TStringList.Create;
        try
          with StringGrid1 do
          begin
              F.LoadFromFile(OpenDialog1.FileName);
              RowCount := StrToInt(F[0]); // Zeilen
              ColCount := StrToInt(F[1]); // Spalten
              Edit1.Text := F[1];
              Edit2.Text := F[0];
              for i := 0 to (RowCount - 1) do // Zeilen M1
                Rows[i].CommaText := StrtoInt F[i+2];
          end;

        except

        end;


end;
Kann mir jemand weiterhelfen?!
Danke schonmal im vorraus!

MfG Anna

[edit=Jelly]Wie bereits angemerkt wurde handelt es sich wohl doch eher um Win32 Mfg, Jelly[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit aktuellen Parameter

  Alt 26. Mai 2007, 10:19
Also mal abgesehen davon, dass das nicht nach .NET aussieht (da gibts StrToInt gar nicht) solltest du dir vielleicht einmal das Grundlagentutorial auf dsdt.info ansehen.

StrToInt ist eine Funktion. Eine Funktion, die genau einen Parameter erwartet. Du musst schreiben StrToInt(F[i+2]).
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit aktuellen Parameter

  Alt 26. Mai 2007, 10:20
Ist Rows auch ne StringListe?
Deren Eigenschaft .CommaText ist ja auch ein String.
Markus Kinzler
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit aktuellen Parameter

  Alt 26. Mai 2007, 11:59
Moin Anna,

ich fange mal von oben an

OpenDialog1.Execute; Du fragst den Rückgabewert nicht ab. Wird der Dialog abgebrochen, wird so anschliessend trotzdem versucht die, nicht ausgewählte, Datei zu laden, was dann in einem Fehler mündet.
So
if not OpenDialog1.Execute then exit; wird die Prozedur verlassen, wenn keine der Dialog abgebrochen wird.

Zu dem Erzeugen der Stringliste fehlt die zugehörige Freigabe. So wie es jetzt ist, wird ein Speicherleck produziert.
So kannst Du das verhindern, selbst wenn innerhalb der Prozedur eine Execption auftritt
Delphi-Quellcode:
F := TStringList.Create;
try
// Der Rest der Prozedur
finally
  FreeAndNil(F); // Oder F.free;
end;
Die Kapselung des Hauptteils in try/except unterdrückt zwar eventuell auftretende Exceptions, aber die sollten da, wenn das Programm dort ansonsten fehlerfrei ist, eh' nicht auftreten. Am Besten lässt Du try/except dort weg.

Hier
Rows[i].CommaText := StrtoInt F[i+2]; musst Du mal schlicht das StrToInt weglassen, denn CommaText und F[i+2] sind beides Strings. Da muss nichts umgewandelt werden.
Damit wäre dann auch die Fehlermeldung des Compilers behoben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
punker-lili

Registriert seit: 22. Apr 2007
91 Beiträge
 
#5

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 10:45
Erstmal danke für euere Hilfe, aber ich wollte gern noch wissen, wie ich den string in ein integerwert umwandle.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 10:48
Du hast die Wahl:
TryStrToInt(), StrToInt(), Val(), StrToIntDef()
Markus Kinzler
  Mit Zitat antworten Zitat
punker-lili

Registriert seit: 22. Apr 2007
91 Beiträge
 
#7

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 11:10
das problem ist, dass ich nicht einfach TStrings über StrToInt in Integer umwandeln kann...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 11:11
Eine Stringliste nicht, aber die einzelnen Strings darin.
Markus Kinzler
  Mit Zitat antworten Zitat
punker-lili

Registriert seit: 22. Apr 2007
91 Beiträge
 
#9

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 11:17
Und wie kann ich auf die einzelnen Strings zugreifen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Problem mit aktuellen Parameter

  Alt 27. Mai 2007, 11:19
Sie Folgethread
Markus Kinzler
  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 11:37 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