Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

MASM32 - Strings und Speicher reservieren GELÖst! :)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 18.11.2007, 13:13    Titel: MASM32 - Strings und Speicher reservieren GELÖst! :) Antworten mit Zitat

Habe das Problem gelöst! Durch einen Versuch, ich glaubte nicht ernsthaft dass das wirklich geht; und zwar so: open1 db "open ", 255 dup(?),0

juhui grinsen


So, da bin ich wieder lächeln Habe ja vor einiger Zeit ein Programm in ASM angefangen und hatte das Problem dass bei einer Stringkonkatenation mit 3 Strings das Programm immer abstürzte. Mittlerweile ist mir plötzlich eingefalen wieso; es ist ja so logisch!! Es werden Strings definiert und an diese soll dann etwas angehängt werden, aber natürlich ist dann zuwenig Speicher reserviert. Wie lässt sich das Problem lösen? mit DUP wüsste ich dabei nicht wie dass der String dennoch den richtigen Inhalt hat. Es ist für die mciSendString-Funktion und soll den String mit dem Dateinamen bilden also z.B. "open c:\eigene~1\meinem~1\eluveitie.wma alias MyAlias" Hier die relevanten Codeausschnitte:

Deklarationen:
Code:

open1 db "open ",0
open2 db " alias MyAlias",0

und vom Öffnen-Dialog:
Code:

 szFileName    db 260 dup(0)


und die Routine:
Code:

.if wParam == 1001
          ; --------------------------------------
          ; szFileName is defined in Filedlgs.asm
          ; --------------------------------------
            mov szFileName[0],0     ; set 1st byte to zero
            invoke GetFileName,hWin,SADD("Open A File"),
                                    SADD("All files",0,"*.*",0)
            cmp szFileName[0],0     ; zero if cancel pressed in dlgbox
            je @F


Start:   
  lea esi, open1
 FindLastByte:
  lodsb
  Or al, al
  jnz FindLastByte
 
  dec esi
  mov edi, esi
  lea esi, szFileName
  CatStrings:
  lodsb
  Or al, al
  jz Done
  stosb
  jmp CatStrings
 
 Done:
  mov al, 0
  stosb


                 ;Start:   
  lea esi, open1
 FindLastByte2:
  lodsb
  Or al, al
  jnz FindLastByte2
 
  dec esi
  mov edi, esi
  lea esi, open2
  CatStrings2:
  lodsb
  Or al, al
  jz Done2
  stosb
  jmp CatStrings2
 
 Done2:
  mov al, 0
  stosb

            invoke MessageBox,hWin,ADDR open1,ADDR szDisplayName,MB_OK

GetShortFilename wird noch eingebaut.
Code:

_________________
...längre blomstre gamle nord...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz