Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit aktuellen Parameter (https://www.delphipraxis.net/92802-problem-mit-aktuellen-parameter.html)

punker-lili 26. Mai 2007 10:15


Problem mit aktuellen Parameter
 
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]

3_of_8 26. Mai 2007 10:19

Re: Problem mit aktuellen Parameter
 
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]).

mkinzler 26. Mai 2007 10:20

Re: Problem mit aktuellen Parameter
 
Ist Rows auch ne StringListe?
Deren Eigenschaft .CommaText ist ja auch ein String.

Christian Seehase 26. Mai 2007 11:59

Re: Problem mit aktuellen Parameter
 
Moin Anna,

ich fange mal von oben an ;-)

Delphi-Quellcode:
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
Delphi-Quellcode:
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
Delphi-Quellcode:
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.

punker-lili 27. Mai 2007 10:45

Re: Problem mit aktuellen Parameter
 
Erstmal danke für euere Hilfe, aber ich wollte gern noch wissen, wie ich den string in ein integerwert umwandle.

mkinzler 27. Mai 2007 10:48

Re: Problem mit aktuellen Parameter
 
Du hast die Wahl:
TryStrToInt(), StrToInt(), Val(), StrToIntDef()

punker-lili 27. Mai 2007 11:10

Re: Problem mit aktuellen Parameter
 
das problem ist, dass ich nicht einfach TStrings über StrToInt in Integer umwandeln kann...

mkinzler 27. Mai 2007 11:11

Re: Problem mit aktuellen Parameter
 
Eine Stringliste nicht, aber die einzelnen Strings darin.

punker-lili 27. Mai 2007 11:17

Re: Problem mit aktuellen Parameter
 
Und wie kann ich auf die einzelnen Strings zugreifen?

mkinzler 27. Mai 2007 11:19

Re: Problem mit aktuellen Parameter
 
Sie Folgethread


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.
Seite 1 von 2  1 2      

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